StartIo常式的作用

  關於驅動程式裡StartIo常式的作用,部分摘自網路,有不正確的地方還望指正。 在很多時候,驅動程式不能立即處理I/O請求,此時需要通過一個隊列儲存Irp,然後返回,等到可以處理I/O請求時,再從隊列中取出Irp進行處理。驅動程式可以自己維護一個隊列,並通過系統線程來做處理。由於很多驅動程式都需要這種處理機制,為了方便處理,系統為此提供了一套處理機制,驅動程式可以調用IoStartPacket()將Irp放入系統提供的裝置隊列裡面,系統會依次調用驅動程式的StartIo函數逐一處理這些Irp

看看CNNIC中文官方上網都幹了些什麼

    CNNIC發布了中文官方上網軟體,說這隻是一款瀏覽器輔助軟體,但真的是這樣嗎?看完本文你就知道你所安裝的這個“輔助軟體”到底是個什麼貨色了。    先來看看它的安裝和卸載吧,等會專門分析安裝過程,先說一些卸載吧。卸載中文官方上網需要填一個隨即產生的確認碼,這是為了防止競爭同行或類似360安全助手之類的軟體自動刪除自己,然後執行正常的卸載程式。但是問題是卸載乾淨了嗎?答案是沒有,有一個殘留的驅動程式仍然駐留在你的系統中,目的是幹擾同行或類似360安全助手之類的軟體正常運行,這個邏輯很簡單,

Source Insight做個外掛系列之四--分析“Source Insight”

    外掛的目的就是將代碼注入到其它進程中,所以必須要有目標進程才能完成注入,而所謂的目標進程通常是某軟體的一部分或者是全部,所以要對目標程式有深入地瞭解。一般外掛都是針對某個應用程式開發的,其裝載、運行都依賴於宿主進程提供的環境,如果“掛”錯了,後果很嚴重。有一些軟體運行時會啟動多個進程,每個進程完成各自的任務,所以要分清到底應該“掛”哪個進程,好在“Source Insight”比較簡單,所有的功能都在一個進程中完成,分析起來比較簡單。    要給“Source

檔案系統讀寫效能

總結:讀效能:因為檔案系統驅動沒有Cache和預取,所以讀效能較低。寫效能:極限讀寫效能尚可,穩定讀寫(流方式)效能較差,為另一系統的80%左右。原因(猜測):讀寫I/O較大(每次IRP包含IO量較大),影響了穩定性,導致在流數量較小時就出現了丟幀的現象。待驗證。對於RAID0,條帶深度大小為每次IRP的IO大小,改變其條帶大小來驗證其對極限讀寫速度和穩定讀寫速度的影響。待測試。

TabBars代碼解讀之——代碼注釋與恢複功能

    代碼注釋就是講文件視窗中選擇的文本編程C/C++語言的註解區塊,TabBars外掛程式設定這個功能主要是為了簡化編程過程中的操作。通常用C風格注釋一段代碼需要在代碼的開始添加/*,並在代碼的結束添加*/,用C++風格則是在每行的行首添加//,如果要恢複這些代碼就需要再刪除這些符號。TabBars外掛程式提供了自動添加和去處這些注釋符號的功能,還支援在代碼開始處插入時間戳記等資訊。 

Source Insight做個外掛系列之五--Insight “TabSiPlus”

    “TabSiPlus 外掛外掛程式”主要有兩部分組成,分別是“外掛外掛程式載入器”和“外掛程式動態庫”。“外掛程式動態庫”完成Source Insight視窗的Hook,顯示Tab標籤欄,截獲Source Insight的視窗訊息並根據訊息調整Tab標籤欄等功能,這是一個動態連結程式庫,不能主動執行,所以還需要一個“外掛外掛程式載入器”,“外掛外掛程式載入器”是一個獨立的可執行檔,它的主要功能就是發現Source Insight的進程,並把外掛程式動態庫“注入”到Source

POJ 3728 Blah數集

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]

VC6功能增強外掛程式TabBars安裝、使用說明

目前“TabBars”外掛程式還沒有做安裝程式,不過VC外掛程式的安裝很簡單,對於程式員來說不是什麼難事。在“TabBars”發布的外掛程式安裝包內通常包含有英文版和中文版兩個版本的外掛程式二進位檔案,還有相應的設定檔、軟體著作權說明以及GNU協議等文檔。安裝的過程就是將外掛程式檔案TabBars.dll和設定檔TabBars.ini複製到VC指定的外掛程式安裝目錄即可,具體過程是:首先關閉所有VC視窗,然後用Winzip解壓縮外掛程式安裝包,選擇合適的版本,中文版放在demo_cn目錄,英文版

檔案過濾驅動中的重入處理

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

你的防火牆可靠嗎

                                         你的防火牆可靠嗎   

VC6功能增強外掛程式TabBars代碼編譯和調試說明

首先說明,如果您只是想瞭解“TabBars”的功能和使用方法,請查看相關的兩篇文章:“VC6功能增強外掛程式TabBars介紹”和“VC6功能增強外掛程式TabBars安裝、使用說明”。一

UNREFERENCED_PARAMETER+的作用

我們從 UNREFERENCED_PARAMETER 開始吧。這個宏在 winnt.h 中定義如下:#define UNREFERENCED_PARAMETER(P) (P)  換句話說 UNREFERENCED_PARAMETER 展開傳遞的參數或運算式。其目的是避免編譯器關於未引用參數的警告。許多程式員,包括我在內,喜歡用最進階別的警告 Level 4(/W4)進行編譯。Level 4

只有通過實踐才能真正瞭解TDD

    軟體構建學問中總有一些理論上很美好,但是一使用就面目全非的東西,比如傳統的瀑布模型。敏捷裡很多被稱之為思想的東西,恰恰沒有太高深的理論,但都是一些實踐的藝術,強調動手做而不是用理論論證。TDD就是這樣一種東西,單純去研究它的理論,分析它的優點和缺點沒有任何意義,因為它本身就是一個很單純的東西,再對其抽象也得不出象“相對論”那樣深厚的理論。問題是你做了沒有?支援TDD的人有沒有從實踐中真正體會到了它的優點,對TDD不屑一顧的人是否通過實踐驗證了自己的看法,而不是簡單的人云亦云?   

用表驅動代替switch-case

轉自:http://blog.csdn.net/orbit/article/details/2120086  不知道從什麼時候開始,switch-case語句成了代碼壞味道的代名詞,寫代碼的時候小心翼翼地避開它,看到別人代碼中的switch-case就皺眉頭,想想其實大可不必這樣,switch-case語句並不是代碼壞味道的根源,壞味道來自糟糕的代碼(結構)設計,比如過多的switch-case分支,或者多重switch-case嵌套等等,這些都將導致代碼可讀性下降,如果再加上代碼風格較差,代碼

RX_CONTEXT資料結構

//留著以備查詢之用 來自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

Merry Christmas! A New Version TabSiPlus Released

    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

自己編譯firefox,thunderbird 怎麼使用中文

    現在firefox和thunderbird的愛好者越來越多,而且很多朋友喜歡自己動手編譯firefox和thunderbird,這樣的好處是可以隨時從伺服器更新打補丁後的代碼,獲得一個針對漏洞修改後的版本,這要比等待官方發布漏洞補丁快。針對瀏覽器漏洞的攻擊是當前網路安全的一個重要問題,早一分鐘打補丁就多一點安全,更何況現在編譯firefox和thunderbird方法越來越簡單,自己動手DIY也多一分成就感。   

驅動開發技巧:去掉try except讓驅動藍屏直接暴露出錯位置

個人總結問題:如下的一段驅動代碼裡發生了異常,執行了ErrorLog(...); 但是FunctionA()裡的內容特別豐富,層次多而且調用關係很複雜,單步跟蹤費時費力,很難找出異常究竟出在哪。try{FunctionA();}except(EXCEPTION_EXECUTE_HANDLER){ErrorLog(...);}採用辦法:直接去掉try()except,讓FunctionA()直接執行。運行到異常點時,驅動藍屏。WIndbg裡!analyze -v看看出問題的點在哪,有針對性地改。

非同步IRP的教訓(已附DUMP)

  [教訓]非同步IRP中,IoSetCompletionRoutine()要在IoCallDriver()的前面,不然底層驅動完成了讀寫之後,找不到完成常式,會導致出錯。看似簡單,不小心卻可能帶來大麻煩。  [經過]修改驅動,需要把原來較大的IO切成小IO發給磁碟驅動,結果改完後一讀寫資料就藍屏,百思不得其解。折騰了很長時間之後,才發現在RwBuildIrpAndCallDriver()函數裡,IoSetCompletionRoutine()在IoCallDriver()的前面。遂做修改,調整

TabSiPlus 發布0.99b2.1490版本

     1490版本4月8日就build完成,我自己先用了一段時間,4月24日做了一點小修改。本來決定5月1日發布,但是這一段時間太忙了,所以一直拖到今天,權當多測試了一個月吧。   1490相對於1304的修改有:    1. 重新設計了智慧型檔案定位搜尋功能,徹底解決了1304以及以前版本搜尋時間太長導致開啟新文檔時假死機問題    2. 接受朋友建議,對檔案自動定位搜尋多了一個開關,不使用C/C++檔案切換功能的使用者可以關閉這個功能(新版本預設是關閉的)    3.

總頁數: 61357 1 .... 17790 17791 17792 17793 17794 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.