在 INF 檔案中指定 KMDF 共同安裝程式

注意

如果您的驅動程式僅以 Windows 10 為目標,您就不需要轉散發 WDF 或在您的驅動程式套件中提供 Cointaller。 若要以 Windows 10 為目標:

  1. 在 Visual Studio 的 [項目設定] 屬性頁的 [驅動程式設定 -> 目標 OS 版本] 下,選取 [Windows 10 或更高版本]。 這相當於將下列內容新增至 .vcxproj 檔案:
<PropertyGroup Label="Configuration">
<TargetVersion>Windows10</TargetVersion>
  1. 在 [ INF 製造商] 區段中,將 10.0 指定為目標 OS 版本,如下所示:
[Manufacturer]
%MyMfg% = MyMfg, NTamd64.10.0

如果您在驅動程式套件中包含共同安裝程式,請閱讀本主題,以取得您必須在驅動程式 INF 檔案中提供之區段的相關信息。 如果您提供呼叫Microsoft提供的 .msu 可轉散發套件,則此資訊不適用。

共同安裝程式的 INF 檔案區段

驅動程式的 INF 檔案必須包含 INF DDInstall。安裝共同安裝程式的 CoInstallers 區段。 例如,本節可能命名為 MyDevice.ntx86.CoInstallers。 如需在 INF 檔案中指定共同安裝程式的詳細資訊,請參閱 INF DDInstall.CoInstallers 區段

此外,驅動程式的 INF 檔案必須包含 INF DDInstall。共同安裝程式在安裝之後讀取的 Wdf 區段。 例如,本節可能命名為 MyDevice.ntx86.Wdf。 安裝架構的共同安裝程序之後,它會在安裝驅動程式時讀取本節。

INF DDInstall。Wdf 區段包含下列指示詞:

  • KmdfService = DriverService,Wdf-install-section

DriverService 代表操作系統將指派給驅動程式核心模式服務的名稱,而 Wdf-install-section 代表共同安裝程式讀取以取得驅動程式相關信息的 INF 區段 名稱。

Wdf-install-section 所識別的 INF 區 必須包含下列指示詞:

  • KmdfLibraryVersion = WdfLibraryVersion

WdfLibraryVersion 代表連結庫版本號碼,例如 “1.0” 或 “1.11”。

例如,下列 INF DDInstall。Wdf 區段會將 Echo_wdfsect 指定為 Wdf-install-section 名稱。

[ECHO_Device.NT.Wdf]
KmdfService = Echo, Echo_wdfsect
[Echo_wdfsect]
KmdfLibraryVersion = 1.0

您可以使用 INX 檔案和 Stampinf 工具,避免為架構的多個版本建立多個 INF 檔案。 如需 INX 檔案的詳細資訊,請參閱 使用 INX 檔案建立 INF 檔案

範例 INF DDInstall。CoInstallers 和 DDInstall。Wdf 區段

下列程式代碼範例示範如何建立 INF DDInstall。CoInstallers 區段和 INF DDInstall。PnP 驅動程式 INF 檔案的 Wdf 區段。 此範例示範如何建立名為 MyDevice.inf 的 INF 檔案,並以 ECHO 範例驅動程式的 Echo.inf 檔案為基礎。 Echo 範例驅動程式位於 WDK 的 samples 目錄中。

若要建立 MyDevice.inf,您必須將 Echo.inf 中的所有ECHO_Device子字串變更為適合您產品的名稱。 下列程式代碼範例使用 MyDevice

您應該嘗試比對 Echo.inf 範例所使用的區段配置。 換句話說,如果可能的話,請將共同安裝程序相關區段保持在一起,以更輕鬆地找出剪貼錯誤。

在修改 echo.inf 之前,安裝共同安裝程式的區段如下所示:

=============== Top of Echo.inf ====================
....
....
[DestinationDirs]
DefaultDestDir = 12
ECHO_Device_CoInstaller_CopyFiles = 11
....
....
;
;--- ECHO_Device Co-installer installation ------
;
[ECHO_Device.NT.CoInstallers]
AddReg=ECHO_Device_CoInstaller_AddReg
CopyFiles=ECHO_Device_CoInstaller_CopyFiles

[ECHO_Device_CoInstaller_AddReg]
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01000.dll,WdfCoInstaller"

[ECHO_Device_CoInstaller_CopyFiles]
WdfCoInstaller01000.dll

[ECHO_Device.NT.Wdf]
KmdfService = Echo, Echo_wdfsect
[Echo_wdfsect]
KmdfLibraryVersion = 1.0

===============  End of Echo.inf ===============

變更所有ECHO_Device子字串之後,MyDevice.inf 檔案應該會顯示如下:

=============== Top of MyDevice.inf ===============
....
....
[DestinationDirs]
DefaultDestDir = 12
MyDevice_CoInstaller_CopyFiles = 11
....
....
;
;--- MyDevice Co-installer installation ------
;
[MyDevice.NT.CoInstallers]
AddReg=MyDevice_CoInstaller_AddReg
CopyFiles=MyDevice_CoInstaller_CopyFiles

[MyDevice_CoInstaller_AddReg]
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01000.dll,WdfCoInstaller"

[MyDevice_CoInstaller_CopyFiles]
WdfCoInstaller01000.dll

[MyDevice.NT.Wdf]
KmdfService = MyDevice, MyDevice_wdfsect
[MyDevice_wdfsect]
KmdfLibraryVersion = 1.0
....
....
=============== End of MyDevice.inf ===============