Windows 驅動開發基礎(六)NT驅動的基本結構

來源:互聯網
上載者:User

標籤:windows 7   驅動開發   

Windows 驅動開發基礎系列,轉載請標明出處:http://blog.csdn.net/ikerpeng/article/details/38821919


NT類型的驅動即不是隨插即用的驅動,主要包括3部分:DriverEntry函數,CreateDevice函數,DriverUnload函數.其實還有IRP派遣函數,但是這裡先不做介紹。

接下來詳細的說明一下。


系統啟動的時候,就建立了系統進程;驅動載入的時候,系統啟動一個新的線程,建立一個驅動對象。而當系統線程調用DriverEntry函數的時候,就實現了對驅動對象的初始化。

1. DriverEntry


extern “C”NTSTATUS DriverEntry(  IN PDRIVER_OBJECT pDriver_Object,

IN PUNICODE_STRING pRegistryPath );

pDriver_Object:指向這個驅動對象。

pRegistryPath:指向裝置服務鍵的鍵名字串的指標。該字串的內容一般為\REGISTRY\MACHINE\SYSTEM\ControlSet\Services\[服務名]。

其中:IN 是參數的修飾詞,代表是 參數時輸入,同理,OUT表示存催的輸出,兩個可以同時用。


返回值是一個32位的LONG,也就是NTSTATUS型的資料。


2. CreateDevice

是通過IoCreateDevice建立的,形式如下:


NTSTATUS 
  IoCreateDevice(
    IN PDRIVER_OBJECT  DriverObject,
    IN ULONG  DeviceExtensionSize, //指定裝置擴充的大小
    IN PUNICODE_STRING  DeviceName  OPTIONAL,//裝置對象的名字
    IN DEVICE_TYPE  DeviceType
    IN ULONG  DeviceCharacteristics,//設定裝置對象的特徵
    IN BOOLEAN  Exclusive,//設定裝置對象是否在核心模式下使用,一般為TRUE
    OUT PDEVICE_OBJECT  *DeviceObject //指向新建立的裝置對象。
    );


需要指出的是,即便是給出了裝置的名稱也只能是被核心模式下其他驅動所識別,要用使用者模式下面的應用程式識別就需要使用:符號連結的方法。也就是起一個別名的方式,就好像我們給硬碟取名叫“C盤”,就可以被其他的應用程式識別了。

這個函數是:

NTSTATUS 
   IoCreateSymbolicLink(
    IN PUNICODE_STRING  SymbolicLinkName,//別名(的地址)
    IN PUNICODE_STRING  DeviceName            //這個裝置
    );

在核心模式下,符號連結就是以”\??\”開頭的(或者“\DosDevice\”開頭的)。如C盤就是“\??\C:”。而在使用者模式下則是以“\\.\”開頭的,如C盤就是“\\.\C:”


3. DriverUnload


一般負責刪除掉DriverEntry裡面建立的裝置對象。同時也會刪掉建立的符號連結。具體的函數如下:


VOID 
   IoDeleteDevice(
    IN PDEVICE_OBJECT  DeviceObject
    );

NTSTATUS 
IoDeleteSymbolicLink(
   IN PUNICODE_STRING  SymbolicLinkName
);



Windows 驅動開發基礎(六)NT驅動的基本結構

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.