UMDF

User-Mode Driver Framework(用戶模式驅動程式架構,簡稱UMDF),是美國微軟公司所提出視窗驅動程式基礎Windows Driver Foundation)的一部分,運行於用戶模式(user mode),僅能訪問用戶地址空間,是核心模式驅動程式框架(Kernel-Mode Driver Framework,KMDF)的子集合(subset),因此UMDF所提供的函式支持少於KMDF,兩者使用相同的狀態機器、使用相同的 I/O 模型。

基本介紹

  • 中文名:用戶模式驅動程式架構
  • 外文名:User-Mode Driver Framework
  • 領域:計算機
簡介,COM架構,DllMain,UMDF接口,相關連結,

簡介

User-Mode Driver Framework(用戶模式驅動程式架構,簡稱UMDF),是美國微軟公司所提出視窗驅動程式基礎Windows Driver Foundation)的一部分,運行於用戶模式(user mode),僅能訪問用戶地址空間,是核心模式驅動程式框架(Kernel-Mode Driver Framework,KMDF)的子集合(subset),因此UMDF所提供的函式支持少於KMDF,兩者使用相同的狀態機器、使用相同的 I/O 模型。
UMDF提供即插即用(PNP)、電源管理(Power Manager)、異步輸出輸入等功能,可設定 I/O 佇列,但他的限制在於不處理中斷(Interrupt)、不運行 DMA(直接存儲器訪問,Direct Memory Access),且不能使用核心模式資源如:未標籤頁集區(NonPaged Pool),也不完全支持同步化領域(Synchronization scope),在技術上UMDF使用COM(Component Object Model)的動態連結程式庫(DLL)為基底技術。

COM架構

UMDF驅動程式是一個基於COM架構的動態連結檔(DLL),但UMDF並不使用COM的動態時期運行函式(runtimelibrary),單僅是借用了COM的樣式。
UMDF 調用 DllGetClassObject API獲取一個指針(pointer),這個指針指向一個IClassFactory的接口,並且激活 CreateInstance 這個屬於IClassFactory 接口的函式來產生一個驅動程式的存儲器實體(instance)。DLL 照例提供一些函式可以讓COM 使用IWDFDriver-based的對象:
  • DllCanUnloadNow
  • DllGetClassObject
  • DllRegisterServer
  • DllUnregisterServer

DllMain

UMDF 驅動程式是一個動態程式庫(Dynamic Link Library),運行的時候如同一個進程內(in-process)的 COM server,其代碼中包括了DllMain,這是著名的DLL檔的進入點(entry point)。
BOOL WINAPI DllMain(       HINSTANCE ModuleHandle,       DWORD Reason,       PVOID /* Reserved */){  if (DLL_PROCESS_ATTACH == Reason)    {    WPP_INIT_TRACING(MYDRIVER_TRACING_ID);        g_ModuleHandle = ModuleHandle;     }  else if (DLL_PROCESS_DETACH == Reason) {        WPP_CLEANUP();  }      return TRUE;};

UMDF接口

  • IWDFObject: 定義基本的 WDF 對象類型(WDF object)
  • IWDFDriver: 代表驅動程式對象(driver object)
  • IWDFDevice: 代表設備對象(device object)
  • IWDFIoQueue: 代表 I/O 要求的佇列(IO Request Queue)
  • IWDFIoRequest: I/O 要求描述(IO Request Description)
  • IWDFIoTarget: 代表 I/O 要求的目標驅動程式(IO Target)
  • IWDFMemory: 提供訪問存儲器區域(Memory)

相關連結

相關詞條

熱門詞條

聯絡我們