首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

USB 驅動程式開發軟體篇:WDM 架構與驅動層次詳解

     編輯:VC 教學

USB WDM 驅動架構圖

左上:HID 類裝置 → HIDCLASS.SYS → HIDPARSE.SYS → HIDUSB.SYS。
右上:其他類別 → Class Driver → Miniport Driver。
底層:UHCD (Intel) / OpenHCI (Compaq) 硬體抽象層。

驅動程式層次

  1. 裝置驅動程式:管理實際資料傳輸、中斷處理、錯誤處理。
  2. 中間驅動程式:任意層數,擴充 I/O 功能而不修改底層 (微軟強調彈性,但可能犧牲效率)。
  3. 檔案系統驅動程式 (FSD):維護磁碟結構,需專用開發工具包 (IFS Kit)。

濾波驅動程式攔截修改上層請求,復用類別驅動功能。

NT/WDM 驅動程式結構

  • 無 main/WinMain,入口為 DriverEntry。
  • DriverEntry 初始化並登記 Dispatch 例程 (IRP_MJ_CREATE, IRP_MJ_READ, IRP_MJ_WRITE, IRP_MJ_DEVICE_CONTROL 等)。
  • 應用層呼叫 CreateFile/ReadFile/WriteFile/DeviceIoControl 對應相應 Dispatch 例程。

常見功能碼對應表

功能碼對應 Win32 API
IRP_MJ_CREATECreateFile
IRP_MJ_CLOSECloseHandle
IRP_MJ_READReadFile
IRP_MJ_WRITEWriteFile
IRP_MJ_DEVICE_CONTROLDeviceIoControl
IRP_MJ_PNPPnP 管理
IRP_MJ_POWER電源管理
IRP_MJ_SYSTEM_CONTROLWMI

編寫驅動需熟悉硬體、C/C++、DDK、SoftICE/WinDBG 調試,「進度有時看運氣」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved