fbpx
维基百科

使用者模式驅動程式架構

使用者模式驅動程式架構(英語:User-Mode Driver Framework,簡稱UMDF)是微軟公司提出的視窗驅動程式基礎Windows Driver Foundation)的一部份,其執行於使用者模式(user mode),僅能存取使用者位址空間。它同時是核心模式驅動程式架構(Kernel-Mode Driver Framework,KMDF)的子集,因此UMDF所提供的函數支援少於KMDF,兩者使用相同的狀態機器、使用相同的I/O模型。

UMDF提供隨插即用(PNP)、電源管理(Power Manager)、非同步輸出輸入等功能,可設定I/O佇列,但它的限制在於不處理中斷(Interrupt)、不執行直接記憶體存取(DMA),且不能使用核心模式資源如:未分頁集區(NonPaged Pool),也不完全支援同步化領域(Synchronization scope),在技術上UMDF使用COM(Component Object Model)的動態連結庫(DLL)為基底技術。

COM架構 编辑

UMDF驅動程式是一個基於COM架構的動態連結檔(DLL),但UMDF並不使用COM的動態時期執行函式(runtime library),單僅是借用了COM的樣式。

UMDF 呼叫 DllGetClassObject API取得一個指標(pointer),這個指標指向一個IClassFactory的介面,並且啟用 CreateInstance 這個屬於IClassFactory 介面的函式來產生一個驅動程式的記憶體實體(instance)。DLL 照例提供一些函式可以讓COM 使用基于IWDFDriver的物件:

  • DllCanUnloadNow
  • DllGetClassObject
  • DllRegisterServer
  • DllUnregisterServer

進入點(entry point) 编辑

UMDF 驅動程式是一個動態連結庫,執行的時候如同一個行程內(in-process)的COM服务器,其程式碼中包括了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)
  • IWDF�:代表檔案物件(file object)
  • IWDFIoQueue: 代表 I/O 要求的佇列(IO Request Queue)
  • IWDFIoRequest: I/O 要求描述(IO Request Description)
  • IWDFIoTarget: 代表 I/O 要求的目標驅動程式(IO Target)
  • IWDFMemory: 提供存取記憶體區域(Memory)

使用者模式驅動程式架構, 此條目没有列出任何参考或来源, 2018年8月3日, 維基百科所有的內容都應該可供查證, 请协助補充可靠来源以改善这篇条目, 无法查证的內容可能會因為異議提出而被移除, 此條目需要編修, 以確保文法, 用詞, 语气, 格式, 標點等使用恰当, 請按照校對指引, 幫助编辑這個條目, 幫助, 討論, 英語, user, mode, driver, framework, 簡稱umdf, 是微軟公司提出的視窗驅動程式基礎, windows, driver, foundation, 的一部份, 其執. 此條目没有列出任何参考或来源 2018年8月3日 維基百科所有的內容都應該可供查證 请协助補充可靠来源以改善这篇条目 无法查证的內容可能會因為異議提出而被移除 此條目需要編修 以確保文法 用詞 语气 格式 標點等使用恰当 請按照校對指引 幫助编辑這個條目 幫助 討論 使用者模式驅動程式架構 英語 User Mode Driver Framework 簡稱UMDF 是微軟公司提出的視窗驅動程式基礎 Windows Driver Foundation 的一部份 其執行於使用者模式 user mode 僅能存取使用者位址空間 它同時是核心模式驅動程式架構 Kernel Mode Driver Framework KMDF 的子集 因此UMDF所提供的函數支援少於KMDF 兩者使用相同的狀態機器 使用相同的I O模型 UMDF提供隨插即用 PNP 電源管理 Power Manager 非同步輸出輸入等功能 可設定I O佇列 但它的限制在於不處理中斷 Interrupt 不執行直接記憶體存取 DMA 且不能使用核心模式資源如 未分頁集區 NonPaged Pool 也不完全支援同步化領域 Synchronization scope 在技術上UMDF使用COM Component Object Model 的動態連結庫 DLL 為基底技術 COM架構 编辑UMDF驅動程式是一個基於COM架構的動態連結檔 DLL 但UMDF並不使用COM的動態時期執行函式 runtime library 單僅是借用了COM的樣式 UMDF 呼叫 DllGetClassObject API取得一個指標 pointer 這個指標指向一個IClassFactory的介面 並且啟用 CreateInstance 這個屬於IClassFactory 介面的函式來產生一個驅動程式的記憶體實體 instance DLL 照例提供一些函式可以讓COM 使用基于IWDFDriver的物件 DllCanUnloadNow DllGetClassObject DllRegisterServer DllUnregisterServer進入點 entry point 编辑 UMDF 驅動程式是一個動態連結庫 執行的時候如同一個行程內 in process 的COM服务器 其程式碼中包括了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 IWDF 代表檔案物件 file object IWDFIoQueue 代表 I O 要求的佇列 IO Request Queue IWDFIoRequest I O 要求描述 IO Request Description IWDFIoTarget 代表 I O 要求的目標驅動程式 IO Target IWDFMemory 提供存取記憶體區域 Memory 取自 https zh wikipedia org w index php title 使用者模式驅動程式架構 amp oldid 61093602, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。