本主題描述如何使用 User-Mode Driver Framework (UMDF) 2 撰寫 通用 Windows 驅動程式。 您將從 Microsoft Visual Studio 樣板開始,然後在不同的電腦上部署及安裝您的驅動程式。
先決條件
請遵循步驟來安裝 Windows 驅動程式套件 (WDK)。 當您安裝 WDK 時,會包含適用於 Windows 的 偵錯工具。
安裝 Visual Studio 2022。 當您安裝 Visual Studio 2022 時,請選擇 使用 C++ 的桌面開發 工作負載,然後在 個別元件 底下新增:
- MSVC v143 - VS 2022 C++ ARM64/ARM64EC Spectre 漏洞緩解程式庫(最新)
- MSVC v143 - VS 2022 C++ x64/x86 Spectre 緩解的程式庫(最新)
- C++ ATL 使用具有 Spectre 風險降低功能的最新 v143 組建工具(ARM64/ARM64EC)
- 適用於最新 v143 組建工具的 C++ ATL,包含 Spectre 減輕措施(x86 和 x64)
- C++ MFC 對應最新 v143 建置工具的 Spectre 風險緩解功能(ARM64/ARM64EC)
- C++ MFC 使用支援 Spectre 漏洞緩解的最新 v143 編譯工具(x86 與 x64)
- Windows 驅動程式套件
建立和建置驅動程式
注意
當您建立新的 KMDF 或 UMDF 驅動程式時,您必須選取具有 32 個字元或更少字元的驅動程式名稱。 此長度限制定義於 wdfglobals.h 中。
開啟 Visual Studio。 在 [檔案] 功能表上,選取 [新增 > 專案]。
在 [[建立新專案] 對話框中,選取左側下拉式清單中 C++,選擇中間下拉式清單中的 [Windows],然後在右側下拉式清單中選擇 [驅動程式]。
從專案類型清單中選取 使用者模式驅動程式 (UMDF V2)。 選取 下一步。
提示
如果您在 Visual Studio 中找不到驅動程式專案範本,WDK Visual Studio 擴充功能並未正確安裝。 若要解決此問題,請啟動 Visual Studio Installer、選取 [修改]、在 [個別 元件] 索引卷標中新增 [Windows 驅動程式套件],然後選取 [修改]。
在 [設定新專案] 對話框中,於 [專案名稱] 字段中輸入 “UmdfDriver”。
注意
當您建立新的 KMDF 或 UMDF 驅動程式時,您必須選取具有 32 個字元或更少字元的驅動程式名稱。 此長度限制定義於 wdfglobals.h 中。
在 [位置] 字段中,輸入您要在其中建立新項目的目錄。
檢查 將方案與專案放在相同的目錄中,然後選取 [建立]。
Visual Studio 會建立一個專案和方案。 您可以在 [方案總管] 視窗中看到它們。 如果 [方案總管] 視窗不可見,請從 [檢視] 功能表中選擇 [方案總管]。這個解決方案有一個名為 UmdfDriver 的驅動程式專案。 若要檢視驅動程式原始程式碼,請開啟 原始程式檔底下的任何檔案,。 Driver.c 和 Device.c 是不錯的起點。
在 方案總管 視窗中,選取並按住(或以滑鼠右鍵點擊)方案 'UmdfDriver' (1 of 1 project),然後選擇 Configuration Manager。 選擇驅動程式專案的組態和平臺。 例如,選擇 偵錯 和 x64。
在 [方案總管] 視窗中,選取並按住 [UmdfDriver],然後選擇 [屬性]。 流覽至 [設定屬性] > [驅動程序設定] > [一般],請注意,目標平臺 預設為 Universal。
若要建置驅動程式,請從 [建置] 功能表選擇 [建置方案]。 Microsoft Visual Studio 會在 [輸出] 視窗中顯示建置進度。 (如果看不到 [輸出] 視窗,請從 [檢視] 功能表選擇 [輸出]。
確認組建輸出包含:
> Driver is 'Universal'.當您確認已成功建置解決方案時,您可以關閉 Visual Studio。
若要查看建置的驅動程式,請在 [檔案總管] 中,移至 UmdfDriver 資料夾,然後移至 x64\Debug\UmdfDriver。 目錄包含下列檔案:
- UmdfDriver.dll -- 使用者模式驅動程式檔案
- UmdfDriver.inf -- 安裝驅動程式時 Windows 使用的資訊檔案
部署及安裝通用 Windows 驅動程式
一般而言,當您測試和偵錯驅動程式時,調試程式和驅動程式會在不同的計算機上執行。 執行除錯程式的電腦稱為 主電腦,而執行驅動程式的電腦稱為 目標電腦。 目標電腦也稱為 測試電腦。
重要
到目前為止,您已使用 Visual Studio 在主電腦上建置驅動程式。 現在您需要設定目標計算機。 請遵循 《WDK 10》中關於準備電腦以進行驅動程式部署和測試的指示。 然後,您就可以開始部署、安裝、載入和偵錯驅動程式。
在主計算機上,在 Visual Studio 中開啟您的方案。 您可以在 UmdfDriver 資料夾中按兩下滑鼠左鍵以開啟解決方案檔案 UmdfDriver.sln。
在 [方案總管] 視窗中,選取並按住 [UmdfDriver],然後選擇 [屬性]。
在 [UmdfDriver 屬性頁] 視窗中,移至 [組態屬性] > [驅動程式安裝 > 部署],如下所示。
在部署 之前,請先檢查移除先前的驅動程式版本。
針對 [目標裝置名稱],選取您為測試和偵錯設定的計算機名稱。
選取 [硬體標識符驅動程式更新],然後輸入驅動程式的硬體標識符。 在此練習中,硬體標識碼為 Root\UmdfDriver。 請選擇 [確定]。
注意 在本練習中,硬體標識元不會識別實際的硬體片段。 它會識別一個虛構的裝置,該裝置將在 裝置樹狀結構 中被定位為根節點的子節點。 針對實際硬體,請勿選取 硬體 ID 驅動程式更新;請改為選取 安裝並驗證。 您可以在驅動程式的資訊 (INF) 檔案中看到硬體識別碼。 在 [方案總管] 視窗中,移至 [UmdfDriver > 驅動程式檔案],然後按兩下 UmdfDriver.inf。 硬體標識碼位於 [Standard.NT$ARCH$]。
[Standard.NT$ARCH$] %DeviceName%=MyDevice_Install,Root\UmdfDriver在 [偵錯] 功能表上,選擇 [開始偵錯],或在鍵盤上按 F5。
等待驅動程序在目標電腦上成功部署、安裝和載入。 這可能需要幾分鐘的時間。
使用驅動程式模組架構 (DMF)
驅動程式模組架構 (DMF) 是 WDF 的延伸模組,可為 WDF 驅動程式開發人員啟用額外的功能。 它可協助開發人員更快速地撰寫任何類型的 WDF 驅動程式。
DMF 即架構允許建立稱為 DMF 模組的 WDF 物件。 這些 DMF 模組的程式代碼可以在不同的驅動程式之間共用。 此外,DMF 還提供一個由我們為驅動程式開發而設計的 DMF 模組庫,我們認為這會為其他驅動程式開發人員提供價值。
DMF 不會取代 WDF。 DMF 是搭配 WDF 使用的第二個架構。 利用 DMF 的開發人員仍會使用 WDF 及其所有基本類型來撰寫設備驅動器。
如需詳細資訊,請參閱 驅動程式模組架構 (DMF)。
相關主題
適用於 Windows 的 偵錯工具