Windows驅動開發學習3

2021-09-26 20:22:47 字數 2206 閱讀 3823

驅動的 api 函式:

1. rtlinitunicodestring

作用:初始化裝置名稱指標。

void  rtlinitunicodestring

(in out unicode_string destinationstring,

in pcwstr sourcestring

);

2. iocreatedevice作用:此函式用於建立常規的裝置物件.

ntstatus iocreatedevice(

in pdriver_object driverobject,

in ulong deviceextensionsize,

in punicode_string devicenameoptional,

in device_type devicetype,

in ulong devicecharacteristics,

in boolean exclusive,

out pdevice_object *deviceobject );

3. iocreatesymboliclink作用:此函式用於將裝置與符號連線進行繫結。

ntstatus   iocreatesymboliclink( 

in punicode_string symboliclinkname,

in punicode_string devicename );

4. iodeletedevice作用:此函式用於刪除已建立的裝置

void   iodeletedevice(  

in pdevice_object deviceobject );

5. iodeletesymboliclink

ntstatus iodeletesymboliclink(

in punicode_string symboliclinkname );

具體的函式見

ntstatus driverentry(in pdriver_object ...,in punicode_string...)

#1變數定義

ntstatus...

unicode_string...

unicode_string...

#2裝置名稱和符號鏈結

rtlinitunicodestring(...)

rtlinitunicodestring(...)

#3建立裝置

ntstatus=iocreatedevice(...)

#4裝置與符號鏈結相繫結

if(nt_success(ntstatus)){

ntstatus=iocreatesymbolinc(...)

void unload(in pdriver_object ...)

#1變數定義

unicode_string ...

#2裝置名稱

rtlinitunicodestring(...)

#3刪除符號鏈結和裝置

if(pdriverobject->...!=null)

iodeletesymbpliclink(...)

iodeletedevice(...)

driverobject->majorfunction[irp_mj_create]=myopen;

ntstatus myopen(in pdevice_object deviceobject,in pirp irp)

//do something

return status_success;

可分頁/頁換出:從記憶體交換到磁碟上。

裝置名稱必須以「\\device」開頭,而符號鏈結需要以「\\??」開頭,否則建立裝置和符號鏈結會失敗。

windows驅動開發學習

序言 很多人都對驅動開發有興趣,但往往找不到正確的學習方式.當然這跟驅動開發的本土化資 料少有關係.大多學的驅動開發資料都以英文為主,這樣讓很多驅動初學者很頭疼.本人從 事驅動開發時間不長也不短,大概也就3 4年時間.大多數人都認為會驅動開發的都是牛人,高手之類的.其實高手,牛人不是這樣定義的.我們...

windows驅動開發學習筆記

編寫程式,是一件什麼一樣的事情?是一件很奇妙的事情嗎?它可以帶來什麼?它能帶給人什麼感受?它能帶給人創造和控制的慾望嗎?每當乙個人在閱讀或者寫一段 時,腦子裡會怎麼想的?腦子會想象那段 怎樣完成預定邏輯。對於寫 或者維護 的人來說,體現能力的地方不在 本身,而是對下層開發平台的理解和駕馭能力。怎麼樣...

Windows驅動開發

以ddk2600版本為例 無論是ddk驅動還是pnp驅動,都需要撰寫makefile檔案.使用nmake 來驅動執行.系統目錄預設有makefile檔案,裡面包括有安裝目錄下makefile.def檔案,這個裡面包含檔案makefile.inc,及每個即編譯檔案所在目錄的dirs檔案 makefil...