Compartir a través de


Aplicación para compatibilidad con hardware (HSA): Pasos para desarrolladores de aplicaciones

Important

Los metadatos de dispositivo están obsoletos y se eliminarán en una futura versión de Windows. Para obtener información sobre el reemplazo de esta funcionalidad, vea Driver Package Container Metadata.

En este artículo se describe cómo asociar una aplicación específica del dispositivo con un controlador o un punto de conexión RPC (llamada a procedimiento remoto). Cuando se empareja de esta manera, la aplicación se conoce como aplicación para compatibilidad con hardware (HSA). Puedes distribuir y actualizar una aplicación para compatibilidad con hardware a través de Microsoft Store.

Comience con una aplicación de Plataforma universal de Windows (UWP) o una aplicación de escritorio (Win32). If you would like to use a desktop app, use the Desktop Bridge to create a Windows App Package that you can upload to the Store.

En esta página se describe el procedimiento de una aplicación para UWP, pero los pasos son similares para la opción Win32.

Los pasos para el desarrollador de controladores se describen en Aplicación para compatibilidad con hardware (HSA): Pasos para desarrolladores de controladores.

Getting Started

En primer lugar, instale la versión más reciente de Visual Studio y cree un proyecto de aplicación para UWP. Para compilar una aplicación para UWP con una funcionalidad personalizada, necesitas Windows SDK versión 10.0.15063 (Windows 10 Creators Update) o posterior. El archivo del proyecto también debe especificar la versión 10.0.15063 o posterior. Para obtener más ayuda para la configuración, consulte Desarrollo de aplicaciones para UWP con Visual Studio.

A partir de la versión 1709 de Windows 10, puede especificar que una aplicación de Plataforma universal de Windows (UWP) solo se debe cargar si existe un controlador específico. Para obtener información sobre cómo hacerlo, consulte Emparejamiento de un controlador con una aplicación para UWP.

Creación de una cuenta de Microsoft Store

Se requiere una cuenta de desarrollador en Microsoft Store. Los socios de hardware necesitan una cuenta de Microsoft Store diferente de su cuenta de socio de hardware. Necesita el nombre del publicador al crear el manifiesto de la aplicación y los metadatos del dispositivo en pasos posteriores. También puedes reservar un nombre para tu aplicación una vez que creas un perfil de tienda.

Para crear una cuenta de Microsoft Store, vaya al Centro de desarrollo de Windows. Para obtener más información, consulte Publicación de aplicaciones y juegos de Windows.

Elección de un lenguaje de programación para la aplicación

If your app communicates with a driver, you can use Windows.Devices.Custom, which is part of the WinRT API, and therefore available in JavaScript, C#, and C++.

Si la aplicación se comunica con un servicio NT, debe usar las API rpc. Dado que las API rpc son API de Win32 que no están disponibles en WinRT, debe usar C++, C++/CLI o encapsular las llamadas RPC mediante la interoperabilidad de .NET (PInvoke). Para obtener más información, consulte Llamada a funciones nativas desde código administrado y Programación de .NET con C++/CLI.

Contacto con el propietario de la funcionalidad personalizada

Ahora está listo para solicitar acceso a una funcionalidad personalizada al propietario de la funcionalidad. Debe recopilar la siguiente información:

  • PFN de la aplicación (nombre de familia de paquete) de Microsoft Store
  • Nombre de la funcionalidad personalizada
  • Hash de firma del certificado de firma de la aplicación que se puede generar a partir del archivo de .cer mediante certutil.exe. El certificado debe ser SHA-256.

Para generar el hash de firma, ejecute C:\Windows\System32\certutil.exe -dump CertificateName.cer.

Busque el hash de firma hacia la parte inferior y asegúrese de que es SHA256. De lo contrario, use un certificado SHA256 para firmar la aplicación. El resultado debería tener el siguiente aspecto:

Signature Hash:
ca9fc964db7e0c2938778f4559946833e7a8cfde0f3eaa07650766d4764e86c4

El propietario de la funcionalidad usa esta información para generar un archivo de descriptor de funcionalidad personalizada firmado que envía al desarrollador de la aplicación.

El desarrollador de la aplicación puede seguir desarrollando una aplicación con funcionalidades personalizadas en modo de desarrollador mientras espera a que el propietario de la funcionalidad apruebe la solicitud. For example, use the following entries in the SCCD on a desktop PC in Developer Mode:

  • Entrada de catálogo en el SCCD.

    <Catalog>FFFF</Catalog>
    
  • Hash de firma de certificado en la entrada de entidad autorizada en SCCD. Aunque no se aplica ni se valida, coloque una secuencia de 64 caracteres.

    <AuthorizedEntity AppPackageFamilyName="MicrosoftHSATest.Microsoft.SDKSamples.Hsa.CPP_q536wpkpf5cy2" CertificateSignatureHash="ca9fc964db7e0c2938778f4559946833e7a8cfde0f3eaa07650766d4764e86c4"></AuthorizedEntity>
    

Adición de una funcionalidad personalizada al manifiesto del paquete de aplicación

A continuación, modifique el archivo de origen del manifiesto del paquete de la aplicación (Package.appxmanifest) para incluir un atributo capabilities.

<?xml version="1.0" encoding="utf-8"?>
<Package
  ...
  xmlns:uap4="http://schemas.microsoft.com/appx/manifest/uap/windows10/4">
...
<Capabilities>
    <uap4:CustomCapability Name="CompanyName.customCapabilityName_PublisherID"/>
</Capabilities>
</Package>

A continuación, copie el archivo SCCD en la raíz del paquete appx. En el Explorador de soluciones de Visual Studio, haga clic con el botón derecho en "proyecto-> Agregar - >Elemento existente..." para agregar el SCCD al proyecto.

Adding an SCCD file into the appx package.Adición de un archivo SCCD al paquete appx.

Mark the SCCD as build content by right clicking on the SCCD file and changing Content to True. Para un proyecto de C#, use la propiedad Build Action = Content y para un proyecto de JavaScript, use Package Action = Content.

Marking SCCD as content.Marcar SCCD como contenido.

Finally, right-click the project, select Store, then Create App Packages.

No hay compatibilidad con aplicaciones para UWP con funcionalidades personalizadas en plataformas móviles.

Instalación de la aplicación

Para preinstalar una aplicación para UWP con funcionalidades personalizadas, usa DISM: Administración y mantenimiento de imágenes de implementación.

Troubleshooting

Cuando la máquina de destino está en modo de desarrollador, puede probar los pasos siguientes para depurar el error de registro de aplicaciones:

  1. Quite la entrada de funcionalidad personalizada del manifiesto de AppX.
  2. Compile e implemente la aplicación.
  3. En una ventana de PowerShell, escriba Get-AppxPackage.
  4. Busque la aplicación en la lista y compruebe el nombre exacto de la familia de paquetes de la aplicación.
  5. Actualice el SCCD con el nombre de familia del paquete.
  6. Vuelva a agregar la entrada de funcionalidad personalizada al manifiesto de AppX.
  7. Vuelve a compilar e implemente.