Windows 驅動入門(二)代碼結構

來源:互聯網
上載者:User

標籤:font   代碼結構   void   .com   ifd   lin   ted   code   建立   

windows驅動程式基礎。轉載標明出處:http://blog.csdn.net/ikerpeng/article/details/38777641

windows驅動程式結構:

我想說的是windows驅動程式的結構和C++的程式結構是一樣的,在你知道這一點以後你就會認為簡單了很多。

首先在一個標頭檔中面做一些必要的預先處理。然後定義會用到的裝置擴充結構體(相當於Class);接下來就是函數的聲明。

當這一切結束以後,我們就在.cpp檔案中面實現這些函數。可是不一樣的地方要說一下:

1.這裡聲明的結構體是用來存放裝置的資訊的。

2.聲明的函數在結構體外面,為了和C相容要使用extern“c”;

3.聲明的函數一般來說分為,函數的入口(相當於main函數),裝置建立函數。裝置的卸載3個部分。

以下我們來看一下作者書裡面的範例:(備忘,最後幾行是我iker對比作者的兩個範例以後加上的)


#001   /**************************************************************
#002   * 檔案名稱:Driver.h                                             
#003   * 作    者:張帆
#004   * 完畢日期:2007-11-1
#005   ************************************************************/
#006   #pragma once
#007  
#008   #ifdef __cplusplus
#009   extern "C"
#010   {
#011   #endif
#012   #include <NTDDK.h>
#013   #ifdef __cplusplus
#014   }
#015   #endif
#016  
#017   #define PAGEDCODE code_seg("PAGE")
#018   #define LOCKEDCODE code_seg()
#019   #define INITCODE code_seg("INIT")
#020   
021   #define PAGEDDATA data_seg("PAGE")
#022   #define LOCKEDDATA data_seg()
#023   #define INITDATA data_seg("INIT")
#024  
#025   #define arraysize(p) (sizeof(p)/sizeof((p)[0]))
#026   以上是先行編譯處理:匯入了NT驅動須要的標頭檔。相容到C++語言,另一些宏定義

#027   typedef struct _DEVICE_EXTENSION {
#028    PDEVICE_OBJECT pDevice;
#029    UNICODE_STRING ustrDeviceName;  //裝置名稱
#030    UNICODE_STRING ustrSymLinkName; //符號連結名
#031   } DEVICE_EXTENSION, *PDEVICE_EXTENSION;
#032  
#033   // 函式宣告
#034  
#035   NTSTATUS CreateDevice (IN PDRIVER_OBJECT pDriverObject);//這裡是聲明建立一個裝置的函數#036   VOID HelloDDKUnload (IN PDRIVER_OBJECT pDriverObject);//這裡是
聲明一個卸載驅動的函數
#037   NTSTATUS HelloDDKDispatchRoutine(IN PDEVICE_OBJECT pDevObj,
#038            IN PIRP pIrp);//這裡是聲明一個預設派遣的函數
#039 
#040   extern "C"
#041   NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,
#042                        IN PUNICODE_STRING RegistryPath);
//這裡是定義函數的入口,相當於main函數
接下來就是在.cpp檔案中面實現這幾個函數,大家應該也非常清楚了,就不再贅述!


參考:

http://book.51cto.com/art/200807/79760.htm

《 Windows 驅動開發技術具體解釋 》

Windows 驅動入門(二)代碼結構

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.