Time of Update: 2018-12-04
關於驅動程式裡StartIo常式的作用,部分摘自網路,有不正確的地方還望指正。 在很多時候,驅動程式不能立即處理I/O請求,此時需要通過一個隊列儲存Irp,然後返回,等到可以處理I/O請求時,再從隊列中取出Irp進行處理。驅動程式可以自己維護一個隊列,並通過系統線程來做處理。由於很多驅動程式都需要這種處理機制,為了方便處理,系統為此提供了一套處理機制,驅動程式可以調用IoStartPacket()將Irp放入系統提供的裝置隊列裡面,系統會依次調用驅動程式的StartIo函數逐一處理這些Irp
Time of Update: 2018-12-04
CNNIC發布了中文官方上網軟體,說這隻是一款瀏覽器輔助軟體,但真的是這樣嗎?看完本文你就知道你所安裝的這個“輔助軟體”到底是個什麼貨色了。 先來看看它的安裝和卸載吧,等會專門分析安裝過程,先說一些卸載吧。卸載中文官方上網需要填一個隨即產生的確認碼,這是為了防止競爭同行或類似360安全助手之類的軟體自動刪除自己,然後執行正常的卸載程式。但是問題是卸載乾淨了嗎?答案是沒有,有一個殘留的驅動程式仍然駐留在你的系統中,目的是幹擾同行或類似360安全助手之類的軟體正常運行,這個邏輯很簡單,
Time of Update: 2018-12-04
外掛的目的就是將代碼注入到其它進程中,所以必須要有目標進程才能完成注入,而所謂的目標進程通常是某軟體的一部分或者是全部,所以要對目標程式有深入地瞭解。一般外掛都是針對某個應用程式開發的,其裝載、運行都依賴於宿主進程提供的環境,如果“掛”錯了,後果很嚴重。有一些軟體運行時會啟動多個進程,每個進程完成各自的任務,所以要分清到底應該“掛”哪個進程,好在“Source Insight”比較簡單,所有的功能都在一個進程中完成,分析起來比較簡單。 要給“Source
Time of Update: 2018-12-04
總結:讀效能:因為檔案系統驅動沒有Cache和預取,所以讀效能較低。寫效能:極限讀寫效能尚可,穩定讀寫(流方式)效能較差,為另一系統的80%左右。原因(猜測):讀寫I/O較大(每次IRP包含IO量較大),影響了穩定性,導致在流數量較小時就出現了丟幀的現象。待驗證。對於RAID0,條帶深度大小為每次IRP的IO大小,改變其條帶大小來驗證其對極限讀寫速度和穩定讀寫速度的影響。待測試。
Time of Update: 2018-12-04
代碼注釋就是講文件視窗中選擇的文本編程C/C++語言的註解區塊,TabBars外掛程式設定這個功能主要是為了簡化編程過程中的操作。通常用C風格注釋一段代碼需要在代碼的開始添加/*,並在代碼的結束添加*/,用C++風格則是在每行的行首添加//,如果要恢複這些代碼就需要再刪除這些符號。TabBars外掛程式提供了自動添加和去處這些注釋符號的功能,還支援在代碼開始處插入時間戳記等資訊。
Time of Update: 2018-12-04
“TabSiPlus 外掛外掛程式”主要有兩部分組成,分別是“外掛外掛程式載入器”和“外掛程式動態庫”。“外掛程式動態庫”完成Source Insight視窗的Hook,顯示Tab標籤欄,截獲Source Insight的視窗訊息並根據訊息調整Tab標籤欄等功能,這是一個動態連結程式庫,不能主動執行,所以還需要一個“外掛外掛程式載入器”,“外掛外掛程式載入器”是一個獨立的可執行檔,它的主要功能就是發現Source Insight的進程,並把外掛程式動態庫“注入”到Source
Time of Update: 2018-12-04
Blah數集#include<iostream>#include<vector>using namespace std;int main(){ int n, i; unsigned a, p[51], q[51]; vector<unsigned> v[51]; while (cin >> a >> n) { if (v[a].empty()) { v[a].push_back(a); p[a]
Time of Update: 2018-12-04
目前“TabBars”外掛程式還沒有做安裝程式,不過VC外掛程式的安裝很簡單,對於程式員來說不是什麼難事。在“TabBars”發布的外掛程式安裝包內通常包含有英文版和中文版兩個版本的外掛程式二進位檔案,還有相應的設定檔、軟體著作權說明以及GNU協議等文檔。安裝的過程就是將外掛程式檔案TabBars.dll和設定檔TabBars.ini複製到VC指定的外掛程式安裝目錄即可,具體過程是:首先關閉所有VC視窗,然後用Winzip解壓縮外掛程式安裝包,選擇合適的版本,中文版放在demo_cn目錄,英文版
Time of Update: 2018-12-04
While processing an IRP_MJ_CREATE a filter may need to open the file with different attributes/rights, etc. This is often done by using a second call to ZwCreatefile. This then will generate a call back into the FSD filter. Thus, a common filter
Time of Update: 2018-12-04
你的防火牆可靠嗎
Time of Update: 2018-12-04
首先說明,如果您只是想瞭解“TabBars”的功能和使用方法,請查看相關的兩篇文章:“VC6功能增強外掛程式TabBars介紹”和“VC6功能增強外掛程式TabBars安裝、使用說明”。一
Time of Update: 2018-12-04
我們從 UNREFERENCED_PARAMETER 開始吧。這個宏在 winnt.h 中定義如下:#define UNREFERENCED_PARAMETER(P) (P) 換句話說 UNREFERENCED_PARAMETER 展開傳遞的參數或運算式。其目的是避免編譯器關於未引用參數的警告。許多程式員,包括我在內,喜歡用最進階別的警告 Level 4(/W4)進行編譯。Level 4
Time of Update: 2018-12-04
軟體構建學問中總有一些理論上很美好,但是一使用就面目全非的東西,比如傳統的瀑布模型。敏捷裡很多被稱之為思想的東西,恰恰沒有太高深的理論,但都是一些實踐的藝術,強調動手做而不是用理論論證。TDD就是這樣一種東西,單純去研究它的理論,分析它的優點和缺點沒有任何意義,因為它本身就是一個很單純的東西,再對其抽象也得不出象“相對論”那樣深厚的理論。問題是你做了沒有?支援TDD的人有沒有從實踐中真正體會到了它的優點,對TDD不屑一顧的人是否通過實踐驗證了自己的看法,而不是簡單的人云亦云?
Time of Update: 2018-12-04
轉自:http://blog.csdn.net/orbit/article/details/2120086 不知道從什麼時候開始,switch-case語句成了代碼壞味道的代名詞,寫代碼的時候小心翼翼地避開它,看到別人代碼中的switch-case就皺眉頭,想想其實大可不必這樣,switch-case語句並不是代碼壞味道的根源,壞味道來自糟糕的代碼(結構)設計,比如過多的switch-case分支,或者多重switch-case嵌套等等,這些都將導致代碼可讀性下降,如果再加上代碼風格較差,代碼
Time of Update: 2018-12-04
//留著以備查詢之用 來自WinDDK\6000\inc\ddk\rxcontx.htypedef struct _RX_CONTEXT { // // the node type, size and reference count, aka standard header // NODE_TYPE_CODE NodeTypeCode; NODE_BYTE_SIZE NodeByteSize; __volatile ULONG
Time of Update: 2018-12-04
Merry Christmas! TabSiPlus had released a new version on the evening before Christmas. The new version had no new feature added, but fixed two very serious BUGs. Several month ago, the old version TabSiPlus(Build 1209) had report a
Time of Update: 2018-12-04
現在firefox和thunderbird的愛好者越來越多,而且很多朋友喜歡自己動手編譯firefox和thunderbird,這樣的好處是可以隨時從伺服器更新打補丁後的代碼,獲得一個針對漏洞修改後的版本,這要比等待官方發布漏洞補丁快。針對瀏覽器漏洞的攻擊是當前網路安全的一個重要問題,早一分鐘打補丁就多一點安全,更何況現在編譯firefox和thunderbird方法越來越簡單,自己動手DIY也多一分成就感。
Time of Update: 2018-12-04
個人總結問題:如下的一段驅動代碼裡發生了異常,執行了ErrorLog(...); 但是FunctionA()裡的內容特別豐富,層次多而且調用關係很複雜,單步跟蹤費時費力,很難找出異常究竟出在哪。try{FunctionA();}except(EXCEPTION_EXECUTE_HANDLER){ErrorLog(...);}採用辦法:直接去掉try()except,讓FunctionA()直接執行。運行到異常點時,驅動藍屏。WIndbg裡!analyze -v看看出問題的點在哪,有針對性地改。
Time of Update: 2018-12-04
[教訓]非同步IRP中,IoSetCompletionRoutine()要在IoCallDriver()的前面,不然底層驅動完成了讀寫之後,找不到完成常式,會導致出錯。看似簡單,不小心卻可能帶來大麻煩。 [經過]修改驅動,需要把原來較大的IO切成小IO發給磁碟驅動,結果改完後一讀寫資料就藍屏,百思不得其解。折騰了很長時間之後,才發現在RwBuildIrpAndCallDriver()函數裡,IoSetCompletionRoutine()在IoCallDriver()的前面。遂做修改,調整
Time of Update: 2018-12-04
1490版本4月8日就build完成,我自己先用了一段時間,4月24日做了一點小修改。本來決定5月1日發布,但是這一段時間太忙了,所以一直拖到今天,權當多測試了一個月吧。 1490相對於1304的修改有: 1. 重新設計了智慧型檔案定位搜尋功能,徹底解決了1304以及以前版本搜尋時間太長導致開啟新文檔時假死機問題 2. 接受朋友建議,對檔案自動定位搜尋多了一個開關,不使用C/C++檔案切換功能的使用者可以關閉這個功能(新版本預設是關閉的) 3.