原创 關於DO_POWER_INRUSH 和DO_POWER_INRUSH 同時設置問題

Beginning with Windows Vista, drivers can set both the DO_POWER_PAGABLE flag and the DO_POWER_INRUSH flag. In Windows

原创 陰溝裏翻船之KeSetEvent

陰溝裏翻船之KeSetEvent KeSetEvent是個使用頻率很高的內核支持函數,但經常使用未必意味着確實瞭解它。上週就曾遇到一件怪事,系統線程在調用KeSetEvent後線程IRQL竟然從PASSIVE_LEVEL提升至DI

原创 IRP的傳遞與完成

在Windows分層驅動模型中,設備棧中的設備一般都是通過對上層傳來的IRP做相應的處理來實現驅動的功能。這裏對常用的幾種IRP傳遞及完成的方式進行歸納和總結:1. 在本層驅動中完成1.1 在本層驅動中以同步方式完成在本層同步完成一般做完

原创 加密與解密二版菜鳥學習筆記(2) - SEH 結構化異常處理

標 題: 【原創】加密與解密二版菜鳥學習筆記(2) - SEH 結構化異常處理作 者: ytcswb時 間: 2005-02-01,16:40:24鏈 接: http://bbs.pediy.com/showthread.php?

原创 IoMarkIrpPending

IoMarkIrpPending   IoMarkIrpPending例程用於標記指定的IRP,標誌着某個驅動的分發例程(分發函數)因需要被其他的驅動程序進一步處理最終返回STATUS_PENDING狀態。   VOID IoM

原创 VMware 虛擬機中添加新硬盤的方法

隨着在虛擬機中存儲的東西的逐漸的增加,虛擬機的硬盤也逐漸告急,因此急需拓展一塊新的虛擬磁盤。以下便是在VMware 中添加新的虛擬磁盤的方法:   一、VMware新增磁盤的設置步驟 (建議:在設置虛擬的時候,不要運行虛擬機的系統,不然

原创 UNICODE_STRING 總結

UNICODE_STRING: typedef struct _UNICODE_STRING {   USHORT  Length;     //UNICODE佔用的內存字節數,個數*2;   USHORT  MaximumLength

原创 總結:使用IoMarkPending的原因及原理

爲了使系統吞吐量最大化,I/O管理器希望驅動程序推遲其耗時IRP的完成。驅動程序通過在某個派遣例程中調用IoMarkIrpPending函數並返回STATUS_PENDING來表示完成操作被推遲。(注意:以下討論未加說明均指在操作被推遲情

原创 IoSetCompletionRoutine

IoSetCompletionRoutine宏註冊一個IO完成例程,這個完成例程將會在調用此函數的驅動的下一層驅動完成IRP指定的操作請求時被調用。   void IoSetCompletionRoutine(  IN PIRP     

原创 irp概述

一、簡述任何內核模式程序在創建一個IRP時,都同時創建了一個與之關聯的IO_STACK_LOCATION結構數組:數組中的每個堆棧單元都對應一個將處理該IRP的驅動程序,另外還有一個堆棧單元供IRP的創建者使用。堆棧單元中包含該IRP的類

原创 文件系統過濾基礎知識

一、何謂文件系統過濾驅動?      文件系統過濾驅動是一種可選的,爲文件系統提供具有附加值功能的驅動程序。文件系統過濾驅動是一種核心模式組件,它作爲Windows NT執行體的一部分運行。      文件系統過濾驅動可以過濾一個或

原创 漫談兼容內核之十二: Windows的APC機制(毛德操)

前兩篇漫談中講到,除ntdll.dll外,在啓動一個新進程運行時,PE格式DLL映像的裝入和動態連接是由ntdll.dll中的函數LdrInitializeThunk()作爲APC函數執行而完成的。這就牽涉到了Windows的APC機制,

原创 文件系統驅動(IFS DDK)學習筆記 (轉)

文件系統驅動是windows系統中最複雜的驅動種類之一。它的全稱 IFS DDK 是指可安裝文件系統 設備驅動程序開發工具。這方面的資料非常少,我從網上找到的資料大都是文檔,都是一些在學習文件系統驅動的人自己寫的,幾乎沒有這方面的專門書

原创 內核符號表

在進行Windows Driver開發調試中,內核符號表是個問題。由於網絡不穩定,利用windbg下載不了,在WDK的documentation中查

原创 MDL(內存描述符表) 詳解

  以下的虛擬內存可以理解成邏輯內存,因爲我覺得只有這樣才能講通下面所有的東西。以下的“未分頁”指沒有爲頁進行編碼。 以下爲MDL結構體(我很鬱悶,我在MSDN上沒有找到這個結構體) typedef struct _MDL {