NT式驅動的基本結構

2021-06-28 10:00:50 字數 1281 閱讀 5013

對於nt式驅動,主要的函式是driverentry例程、解除安裝例程以及各個irp的派遣例程。

驅動程式有乙個入口函式,也就是首先被執行的函式。這個函式通常被命名為driverentry,也可以指定另外的名字。

函式原型:

ntstatus   driverentry( in pdriver_object  pdriverobject , in  punicode_string  pregistrypath);

driverentry主要是對驅動程式程序初始化,是由系統程序呼叫的。在windows中有乙個特殊的程序是 系統程序(system),它在系統啟動的時候就已經被建立了。見下圖。

在driverentry中,主要功能是對系統程序建立的驅動物件進行初始化。

系統執行緒呼叫驅動程式的driverentry例程時,同時傳進兩個引數,分別是pdriverobject和pregistrypath

pdriverobject是指向剛才被建立驅動物件的指標,pregistrypath是指向裝置服務鍵的鍵名字串的指標。

這個字串的內容一般是:\registry\machine\system\controlset\service\[服務名]

在驅動程式中,字串用unicode字串來表示,unicode是字元寬度為16位的寬字符集。unicode用資料結構unicode_string表示:

typedef struct _unicode_string

unicode_string *punicode_string;

在驅動程式中使用kdprint列印unicode的資訊:

kdprint(("%s\n", pregistrypath->buffer));

kdprint(("%ws\n",pregistrypath->buffer));

extern "c" ntstatus driverentry( in pdriver_object pdriverobject,

in punicode_string pregistrypath)

3 1 NT式驅動程式基本結構

標頭檔案 include ntddk.h 函式宣告 void demounload in pdriver object driverobject ntstatus democreateclose in pdevice object deviceobject,in pirp irp ntstatus ...

NT式驅動模版

前段時間把自己寫的驅動程式整理了一下,改寫出這麼乙個模版來,雖然是nt式驅動的,但wdm式驅動只需在此基礎上增加一些函式就可以了。標頭檔案 test.h 自定義i o控制 define ioctl ctl code file device unknown,0x801,method buffered,...

WDM驅動和NT式驅動

win32裝置驅動程式體系結構 目前,由於需要支援新的業務和新的pc外部裝置型別對驅動程式開發造成了新的挑戰。新型匯流排增加了裝置的數量和對裝置驅動程式的需求。裝置上各種功能的不斷增加使驅動程式的開發變得越來越複雜。同時,快速反應的互動式應用程式要求將軟體和硬體緊密的結合在一起。1997年,在用於w...