Especificación del coinstalador de KMDF en un archivo INF
Nota:
Si el controlador solo tiene como destino Windows 10, no es necesario redistribuir WDF ni proporcionar un Coinstaller en el paquete de controladores. Para tener como destino Windows 10:
- En Visual Studio, en la página de propiedades Configuración del proyecto, en Configuración del controlador ->Versión del sistema operativo de destino, seleccione Windows 10 o posterior. Esto equivale a agregar lo siguiente al archivo .vcxproj:
<PropertyGroup Label="Configuration">
<TargetVersion>Windows10</TargetVersion>
- En la sección Fabricante de INF, especifique 10.0 como versión del sistema operativo de destino, como se indica a continuación:
[Manufacturer]
%MyMfg% = MyMfg, NTamd64.10.0
Si incluye un co-instalador en el paquete de controladores, lea este tema para obtener información sobre las secciones que debe proporcionar en el archivo INF del controlador. Esta información no se aplica si proporciona su propia aplicación de configuración que llama a los redistribuibles .msu proporcionados por Microsoft.
Secciones de archivos INF para el co-instalador
El archivo INF del controlador debe contener un DDInstall inf. Sección CoInstallers que instala el co-instalador. Por ejemplo, esta sección podría denominarse MyDevice.ntx86.CoInstallers. Para obtener más información sobre cómo especificar un co-instalador en un archivo INF, vea INF DDInstall.CoInstallers Section.
Además, el archivo INF del controlador debe contener un DDInstall inf. Sección Wdf que el co-instalador lee después de instalarlo. Por ejemplo, esta sección podría denominarse MyDevice.ntx86.Wdf. Una vez instalado el co-instalador del marco, lee esta sección mientras instala el controlador.
Inf DDInstall. La sección Wdf contiene la siguiente directiva:
- KmdfService = DriverService,Wdf-install-section
DriverService representa el nombre que el sistema operativo asignará al servicio en modo kernel del controlador y Wdf-install-section representa el nombre de una sección INF que el co-instalador lee para obtener información sobre el controlador.
La sección INF que identifica Wdf-install-section debe contener la siguiente directiva:
- KmdfLibraryVersion = WdfLibraryVersion
WdfLibraryVersion representa un número de versión de biblioteca, como "1.0" o "1.11".
Por ejemplo, el siguiente DDInstall inf. La sección Wdf especifica Echo_wdfsect como nombre de la sección Wdf-install-section.
[ECHO_Device.NT.Wdf]
KmdfService = Echo, Echo_wdfsect
[Echo_wdfsect]
KmdfLibraryVersion = 1.0
Puede evitar la creación de varios archivos INF para varias versiones del marco mediante archivos INX y la herramienta Stampinf . Para obtener más información sobre los archivos INX, vea Usar archivos INX para crear archivos INF.
Ejemplo de DDInstall inf. CoInstallers y DDInstall. Secciones de Wdf
En el ejemplo de código siguiente se muestra cómo crear el DDInstall de INF. Sección CoInstallers y INF DDInstall. Sección Wdf de un archivo INF para un controlador PnP. En el ejemplo se muestra cómo crear un archivo INF denominado MyDevice.inf y se basa en el archivo Echo.inf del controlador de ejemplo ECHO. El controlador de ejemplo echo se encuentra en el directorio samples del WDK.
Para crear MyDevice.inf, debe cambiar todas las subcadenas de ECHO_Device en Echo.inf por un nombre adecuado para el producto. En el ejemplo de código siguiente se usa MyDevice.
Debe intentar coincidir con el diseño de sección que usa el ejemplo Echo.inf . En otras palabras, si es posible, mantenga juntas las secciones relacionadas con el co-instalador para detectar errores de corte y pegado más fácilmente.
Antes de modificar echo.inf, las secciones que instalan el co-instalador son las siguientes:
=============== 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 ===============
Una vez que haya cambiado todas las subcadenas de ECHO_Device , el archivo MyDevice.inf debería aparecer de la siguiente manera:
=============== 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 ===============