Windows驅動編程(1)—第一個驅動程序

開發(fā)環(huán)境:VS2013, WDK8.1
需要使用的工具:vmware player(安裝windows xp作為實驗環(huán)境), DriverMonitor(加載驅動的工具), DbgView(捕獲內(nèi)核的信息輸出)

1. 搭建開發(fā)環(huán)境

先安裝VS2013, 然后安裝WDK8.1。在vmware player中安裝windows XP虛擬機。下載DriverMonitor, DbgView到虛擬機中。

2. 創(chuàng)建驅動工程

打開vs2013, 創(chuàng)建工程:Visual C++ -> Windows Driver -> WDM -> Empty WDM Driver. 工程名字默認MyDriver1.
創(chuàng)建好sln之后刪除MyDriver Package這個工程。在MyDriver1中添加一個main.c的文件。這里需要注意的是,后綴是.c。因為使用C++的時候編譯后導出后的名字和代碼中實際寫的名字有些不同。

#include <ntddk.h>

NTSTATUS unload(PDRIVER_OBJECT driver)
{
    DbgPrint("driver: %ws unload", driver->DriverName);
    DbgPrint("Driver unload success..");
    return STATUS_SUCCESS;
}

NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path){
    driver->DriverUnload = unload;
    DbgPrint("%ws", reg_path->Buffer);
    DbgPrint("Driver load success..");
    return STATUS_SUCCESS;
}

生成解決方案,這樣就會生成第一個名為MyDriver1.sys的文件,這個文件就是我們的驅動文件了。上述代碼中,DriverEntry是驅動的入口函數(shù),這個是微軟規(guī)定好的,當我們的驅動加載的時候就會去執(zhí)行這個DriverEntry函數(shù)。在DriverEntry函數(shù)中,我們給driver設置了一個DriverUnload函數(shù),這個函數(shù)是在driver在卸載的時候執(zhí)行的。完成上述的內(nèi)容之后我們就可以將我們的driver拷貝到實驗平臺上進行測試了。

3. 驅動的加載和運行

在虛擬機中先打開DbgView工具,用來捕獲driver的輸出,然后打開DriverMonitor,選中我們生成的MyDriver1.sys, 然后點擊藍色的執(zhí)行按鈕。我們可以看到在DbgView中就顯示了我們在driver中輸出的內(nèi)容了。

點擊紅色的卸載按鈕,我們driver就被成功的卸載掉了,同時在DbgView中也可以看到我們在unload函數(shù)中寫的輸出了。

至此,我們的第一個驅動程序就完成了。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 0x0000000A 1、主要是由于安裝了有缺陷或不兼容的硬件(BIOS)、驅動程序、軟件產(chǎn)生。2、當系統(tǒng)升級WI...
    Muscleape閱讀 3,520評論 0 3
  • 大學的時候,幫朋友寫的操作系統(tǒng)調(diào)研的作業(yè),最近整理過去的文檔時候偶然發(fā)現(xiàn),遂作為博客發(fā)出來。 從串口驅動到Linu...
    free_will閱讀 7,685評論 7 59
  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時實驗課主要內(nèi)容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 6,319評論 0 10
  • 一、溫故而知新 1. 內(nèi)存不夠怎么辦 內(nèi)存簡單分配策略的問題地址空間不隔離內(nèi)存使用效率低程序運行的地址不確定 關于...
    SeanCST閱讀 8,117評論 0 27
  • 1.優(yōu)勢越練越明顯,劣勢越練越隱蔽。所以,不管是強與不強,你必須一直保持努力。 2.眾籌頭腦風暴,等于無償占有了別...
    刀叨姐閱讀 109評論 0 2

友情鏈接更多精彩內(nèi)容