選擇驅動程式模型

Microsoft Windows 提供各種驅動程式模型,可讓您用來撰寫驅動程式。 選擇最佳驅動程式模型的策略取決於您打算撰寫的驅動程序類型。 以下是選項:

  • 裝置函式驅動程式
  • 裝置篩選驅動程式
  • 軟體驅動程式
  • 檔系統篩選驅動程式
  • 檔系統驅動程式

如需各種驅動程式類型差異的討論,請參閱 什麼是驅動程式?裝置節點和裝置堆疊。 下列各節說明如何為每種驅動程式類型選擇模型。

選擇設備函式驅動程式的驅動程式型號

當您設計硬體裝置時,需要考慮的第一件事是是否需要撰寫函式驅動程式。 詢問以下問題:

您是否可以完全避免撰寫驅動程式? 如果您必須撰寫函式驅動程式,要使用哪一個最佳的驅動程式模型? 若要回答這些問題,請判斷您的裝置符合 裝置和驅動程序技術中所述的技術清單。 請參閱該特定技術的檔,以判斷您是否需要撰寫函式驅動程式,以及瞭解哪些驅動程式型號可供您的裝置使用。

某些個別技術具有迷你驅動程式模型。 在迷你驅動程式模型中,設備驅動器包含兩個部分:一個處理一般工作,另一個負責處理裝置特定工作。 一般而言,Microsoft 會寫入一般部分,而裝置製造商會寫入裝置特定部分。 裝置特定部分有各種不同的名稱,其中大部分都會共用 前置詞迷你。 以下是迷你驅動程式模型中所使用的一些名稱:

  • 顯示迷你埠驅動程式
  • 音訊迷你埠驅動程式
  • 電池迷你類別驅動程式
  • 藍牙通訊協議驅動程式
  • HID 迷你驅動程式
  • WIA 迷你驅動程式
  • NDIS 迷你埠驅動程式
  • 記憶體迷你埠驅動程式
  • 串流迷你驅動程式

如需迷你驅動程式模型的概觀,請參閱 迷你驅動程式和驅動程式配對

並非 裝置和驅動程式技術 中列出的每個技術都有專用的迷你驅動程式模型。 特定技術的檔可能會建議您使用 Kernel-Mode Driver Framework (KMDF) ;另一種技術的檔案可能會建議您使用 使用者模式驅動程式架構 (UMDF) 。 重點在於您應該先研究特定裝置技術的檔。 如果您的裝置技術有迷你驅動程式模型,您必須使用迷你驅動程式模型。 否則,請遵循技術特定文件中有關要使用UMDF、KMDF或 Windows 驅動程式模型 (WDM) 的建議。

選擇設備篩選器驅動程式的驅動程式型號

通常數個驅動程式會參與單一 I/O 要求 (,例如從裝置讀取數據) 。 驅動程式會分層在堆疊中,而可視化堆疊的傳統方式是使用頂端的第一個驅動程式和底部的最後一個驅動程式。 堆疊有一個函式驅動程式,也可以有篩選驅動程式。 如需函式驅動程式和篩選驅動程式的討論,請參閱 什麼是驅動程式?裝置節點和裝置堆疊

如果您要準備為裝置撰寫篩選驅動程式,請判斷您的裝置符合 裝置和驅動程式技術中所述的技術清單。 查看特定裝置技術的檔是否具有選擇篩選驅動程式模型的任何指引。 如果您的裝置技術檔未提供此指引,請先考慮使用 UMDF 作為驅動程式模型。 如果您的篩選驅動程式需要存取無法透過UMDF取得的數據結構,請考慮使用KMDF作為驅動程式模型。 在極罕見的情況下,您的驅動程式需要透過 KMDF 存取無法使用的數據結構,請使用 WDM 作為驅動程式模型。

選擇軟體驅動程式的驅動程式模型

未與裝置相關聯的驅動程式稱為 軟體驅動程式。 如需軟體驅動程序的討論,請參閱 什麼是驅動程式? 主題。 軟體驅動程式很實用,因為它們可以在內核模式中執行,讓它們能夠存取受保護的操作系統數據。 如需處理器模式的相關信息,請參閱 使用者模式和核心模式

對於軟體驅動程式,您的兩個選項是 KMDF 和舊版 Windows NT 驅動程式模型。 透過 KMDF 和舊版 Windows NT 模型,您可以撰寫驅動程式,而不需要擔心 隨插即用 (PnP) 和電源管理。 您可以改為專注於驅動程式的主要工作。 使用 KMDF 時,您不需要擔心 PnP 和電源,因為架構會為您處理 PnP 和電源。 使用舊版 Windows NT 模型時,您不需要擔心 PnP 和電源,因為內核模式服務是在完全獨立於 PnP 和電源管理的環境中運作。

我們建議使用 KMDF,特別是如果您已經熟悉 KMDF。 如果您想要讓驅動程式完全獨立於 PnP 和電源管理,請使用舊版 Windows NT 模型。 如果您需要撰寫知道電源轉換或 PnP 事件的軟體驅動程式,就無法使用舊版 Windows NT 模型;您必須使用 KMDF。

注意 在非常罕見的情況下,您必須撰寫知道 PnP 或電源事件的軟體驅動程式,而您的驅動程式需要存取無法透過 KMDF 取得的數據,您必須使用 WDM。

選擇檔案系統驅動程式的驅動程式模型

如需選擇檔案系統驅動程式模型的說明,請參閱 文件系統驅動程式範例。 請注意,文件系統驅動程式可能相當複雜,而且可能需要了解驅動程序開發的進階概念。

選擇檔案系統篩選驅動程式的驅動程式模型

如需選擇檔案系統篩選驅動程式模型的說明,請參閱文件系統迷你篩選驅動程式和 文件系統篩選驅動程式

選擇檔案系統迷你篩選驅動程式的驅動程式模型

如需為文件系統迷你篩選驅動程式選擇模型的說明,請參閱 文件系統迷你篩選驅動程式

內核模式驅動程序架構

使用者模式驅動程序架構