//
//標頭檔案
//#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 ...