驅動的 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...