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

2021-06-16 23:53:04 字數 2090 閱讀 1074

//

//標頭檔案

//#include "ntddk.h"

////函式宣告

//void demounload(in pdriver_object driverobject);

ntstatus democreateclose(in pdevice_object deviceobject, in pirp irp);

ntstatus demodefaulthandler(in pdevice_object deviceobject, in pirp irp);

////驅動入口函式

//ntstatus driverentry(in pdriver_object driverobject, in punicode_string registrypath)

//irp開啟、關閉處理函式

driverobject->majorfunction[irp_mj_create] = democreateclose;

driverobject->majorfunction[irp_mj_close] = democreateclose;

//驅動解除安裝函式

driverobject->driverunload = demounload;

//建立裝置

status = iocreatedevice(driverobject, 0, &devicename, file_device_unknown,

0, false, &deviceobject);

if (!nt_success(status))

if (!deviceobject)

//設定裝置的讀寫方式

deviceobject->flags |= do_direct_io;

//建立符號鏈結

status = iocreatesymboliclink(&win32device, &devicename);

//裝置初始化完畢,可以開始工作了

deviceobject->flags &= ~do_device_initializing;

return status_success;}//

//驅動解除安裝函式,支援驅動的解除安裝操作

//void demounload(in pdriver_object driverobject)

////開啟、關閉請求處理函式

//ntstatus democreateclose(in pdevice_object deviceobject, in pirp irp)

////預設的irp請求處理函式

//ntstatus demodefaulthandler(in pdevice_object deviceobject, in pirp irp)

////通過服務載入驅動

//bool loadsys_scm(in wchar *pdrivername, in wchar *newsysimagepath,

dword dwstarttype)

hservicedriver = createservicew(

hservicemgr, pdrivername, pdrivername, service_all_access,

service_kernel_driver, dwstarttype, service_error_ignore,

newsysimagepath, null, null, null, null, null);

if (hservicedriver == null)

hservicedriver = openservicew(hservicemgr, pdrivername, service_all_access);

if (hservicedriver == null)

}bret = startservicew(hservicedriver,null,null)

if (bret == null)

else

else}}

closeservicehandle(hservicedriver);

closeservicehandle(hservicemgr);

return true;

}

NT式驅動的基本結構

對於nt式驅動,主要的函式是driverentry例程 解除安裝例程以及各個irp的派遣例程。驅動程式有乙個入口函式,也就是首先被執行的函式。這個函式通常被命名為driverentry,也可以指定另外的名字。函式原型 ntstatus driverentry in pdriver object pd...

驅動程式的基本結構

對於 driverobject 它是驅動的核心部分,每乙個驅動程式,都會對應有乙個驅動物件,每乙個驅動物件都會派生出乙個或對個的裝置物件。也可以說 裝置物件重屬於驅動物件 物件又可以分成3類 1 檔案物件 2 裝置物件 3 驅動物件 裝置物件 deviceobject 它的flags 有幾個域在過濾...

Windows驅動程式的基本結構

以下均為個人見解,如果有誤,敬請指正,謝謝 windows驅動程式的兩個重要的資料結構,驅動裝置物件driver object 裝置物件結構device object,這裡簡略了兩個結構體中的成員,具體的網上都是,自己去搜吧 1 typedef struct driver objectdriver ...