選擇驅動程式模型
Microsoft Windows 提供可用來撰寫驅動程式的各種驅動程式模型。 選擇最佳驅動程式模型的策略取決於您打算撰寫的驅動程序類型。 以下是選項:
- 裝置功能驅動程式
- 裝置篩選驅動程式
- 軟體驅動程式
- 檔系統篩選驅動程式
- 檔系統驅動程式
如需各種驅動程式類型差異的討論,請參閱 什麼是驅動程式? 和 裝置節點和裝置堆疊。 下列各節說明如何為每個類型的驅動程序選擇模型。
選擇設備函式驅動程式的驅動程式模型
當您設計硬體裝置時,要考慮的第一件事是是否需要撰寫函式驅動程式。 詢問下列問題:
您是否可以完全避免撰寫驅動程式? 如果您必須撰寫函式驅動程式,要使用哪一個最佳驅動程式模型? 若要回答這些問題,請判斷您的裝置符合裝置和驅動程序技術中所述 的技術清單。 請參閱該特定技術的檔,以判斷您是否需要撰寫函式驅動程式,並瞭解哪些驅動程式模型可供您的裝置使用。
某些個別技術有迷你驅動程式模型。 在迷你驅動程式模型中,設備驅動器包含兩個部分:一個處理一般工作,另一個處理裝置特定工作。 一般而言,Microsoft寫入一般部分,而裝置製造商會寫入裝置特定部分。 裝置特定部分有各種不同的名稱,其中大部分都共用前置詞 迷你。 以下是迷你驅動程式模型中所使用的一些名稱:
- 顯示迷你埠驅動程式
- 音訊迷你埠驅動程式
- 電池迷你類別驅動程式
- 藍牙通訊協議驅動程式
- HID 迷你驅動程式
- WIA 迷你驅動程式
- NDIS 迷你埠驅動程式
- 記憶體迷你埠驅動程式
- 串流迷你驅動程式
如需迷你驅動程式模型的概觀,請參閱 Minidrivers 和驅動程式配對。
並非裝置和驅動程式技術中列出的 每個技術 都有專用的迷你驅動程式模型。 特定技術的檔案可能會建議您使用 內核模式驅動程式架構 (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。
選擇檔案系統驅動程式的驅動程式模型
如需選擇檔案系統驅動程式模型的說明,請參閱 文件系統驅動程式範例。 請注意,文件系統驅動程式可能相當複雜,而且可能需要了解驅動程序開發的進階概念。
選擇檔案系統篩選驅動程式的驅動程式模型
如需選擇檔案系統篩選驅動程式模型的說明,請參閱文件系統迷你篩選驅動程式和 文件系統篩選驅動程式。
選擇檔案系統迷你篩選驅動程式的驅動程式模型
如需選擇文件系統迷你篩選驅動程式模型的說明,請參閱 文件系統迷你篩選驅動程式。