windows 2000/xp WDM裝置驅動程式開發 (1)

來源:互聯網
上載者:User

標籤:函數   描述   成員函數   let   res   read   ogr   soc   自旋鎖   

 0. 參考文獻

《windows WDM 裝置驅動程式開發指南》《programming the microsoft windows driver model》

《windows 2000驅動程式開發大全》

使用driverworks工具(driverStudio),而沒有用DDK,因為更快捷

1. WDM驅動

 常式

 

 

 頁故障:軟體層級中斷,運行在DISPATCH_LEVEL上; 所以訪問DISPATCH_LEVEL的代碼需運行在非分頁式記憶體

1.3 裝置介面

舊的命名方法:驅動建立一個符號連結,應用來訪問。

新的命名方法:128位GUID唯一標識, GUIDGEN產生

2. WDM基本結構

driverworks: kdriver, kpnpDevice, kpnpLowerDevice

2.1  kdriver

    1)裝載驅動時,pnp管理器為每個驅動程式調用一次driverentry常式

     2)初始化之後,pnp調用addDevice初始化裝置;運行時有新裝置被枚舉將調用addDevice裝置

           adddevice本職是把新裝置附加到裝置堆疊中

     3)driverworks中FDO和PDO串連

        

 2.2 kpnpdevice

   DO_EXCLUSIVE 指出裝置是否排斥(io管理器僅允許開啟一次)

   列舉了一些函數

   HID, human interface device; 

   WMI,windows 管理診斷

 3. IRP操作

  driverworks對IRP進行了封裝KIrp

  IRP重要域:

  1)MdlAddress(PMDL): 指向記憶體描述符表,當使用DO_DIRECT_IO,

        對於IRP_MJ_READ/WRITE, IO管理器就建立MDL,鎖定使用者記憶體。 

        對於IRP_MJ_DEVICE_CONTROL, METHOD_IN_DIRECT/ METHOD_OUT_DIRECT, 輸出緩衝區建立MDL

  2)associatedIrp.systemBuffer, 系統的資料緩衝區,DO_BUFFERED_IO會用

     

  3)IoStatus, status收到NTSTATUS, information用於儲存資料轉送操作

 

  建立IRP時,同時建立關聯的IO_STACK_LOCATION堆棧數組,每個堆棧單元對應一個要處理該IRP的驅動,儲存IRP類型和參數等

  MajorFunction: 如IRP_MJ_READ

  minorFunction: 如IRP_MJ_PNP 的IRP_MN_START_DEVICE, IRP_MN_REMOVE_DEVICE

  parameters: create, read, startdevice

  deviceObject

  completionRoutine

3.2 kirp

  函數: complete(), 完成IRP,絕不允許擁有自旋鎖的情況下調用此函數,運行在IRQL<=DISPATCH_LEVEL

  status(), 即iostatus.status域, 如STATUS_PENDING

  information(), 若status不是STATUS_SUCCESS, 則這裡設定為0

  IoctlBuffer(), bufferedReadDest, bufferedWriteSource() 對應associatedIrp.systembuffer

  MarkPending()

  IoctlCode(), readSize(), 

  WDM使用的成員函數

  allocatedResources, 系統分配的資源

  translatedResources, 系統分配的翻譯資源

3.3 IRP基本操作

 完成IRP    I.pnpComplete()

 取消IRP

 等

 

windows 2000/xp WDM裝置驅動程式開發 (1)

相關文章

聯繫我們

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