撰寫 UMDF 驅動程式的優點
本主題描述撰寫 User-Mode Driver Framework (UMDF) 驅動程式而非核心模式驅動程式的優點。
當您撰寫 UMDF 驅動程式時,您可以受益于下列各項:
UMDF 驅動程式有助於更高的作業系統穩定性,因為它們只能存取其執行所在進程的位址空間。
由於 UMDF 驅動程式會在 LocalService 帳戶下執行,因此他們只能存取使用者的資料或系統檔案。
使用者模式驅動程式在比核心模式驅動程式更簡單的環境中運作。 例如,核心模式驅動程式必須考慮 IRQL、分頁錯誤和執行緒內容。 不過,在使用者模式中,這些問題不存在。 使用者模式驅動程式一律會在與要求進程不同的執行緒中執行,而且一律可以採取分頁錯誤。
UMDF 第 2 版在大部分區域中提供與 KMDF 的功能同位。 如需完整比較,請參閱 比較 UMDF 2 功能與 KMDF。
UMDF 第 2 版有助於在 KMDF 與 UMDF 之間進行轉換。 請參閱 如何將 KMDF 驅動程式轉換成 UMDF 2 驅動程式 (,反之亦然,) 。
您可以使用使用者模式偵錯工具,或從 UMDF 第 2 版開始,以核心模式偵錯工具來偵錯 UMDF 驅動程式。
您可以使用Wdfkd.dll偵錯工具擴充功能命令搭配 KMDF,並從 UMDF 第 2 版開始。 如需詳細資訊,請參閱 偵錯工具延伸模組。
整體 WDF 模型的基本目標是提供智慧型預設值,讓您可以專注于裝置硬體,並避免撰寫程式碼來執行大部分驅動程式通用的工作。
為了達成此目標,架構的設計目的是要以「加入宣告」為基礎來處理驅動程式。 當您撰寫 UMDF 驅動程式時,您只會針對影響裝置的事件提供回呼常式。 例如,某些裝置需要在開啟後立即介入,並在關閉裝置之前立即介入。 這類裝置的驅動程式可以實作架構在這些時間呼叫的回呼函式。
驅動程式包含程式碼,只處理其裝置需要裝置特定支援的事件。 所有其他事件都可以由架構預設處理。
此外,驅動程式可以設定其 I/O 要求佇列,讓架構在裝置處於低電源狀態時停止分派要求,並在裝置返回操作狀態之後繼續分派。 同樣地,如果 I/O 要求在裝置處於低電源狀態時送達,架構就可以自動開啟裝置。