硬件支持应用 (HSA):应用开发人员的步骤

本主题介绍如何将特定于设备的应用与驱动程序或 RPC(远程过程调用)终结点相关联。 以这种方式配对时,该应用被称为硬件支持应用 (HSA)。 可以通过 Microsoft Store 分发和更新硬件支持应用。

通用 Windows 平台 (UWP) 应用或桌面 (Win32) 应用开始。 如果要使用桌面应用,请使用桌面桥来创建 Windows 应用包并将其上传到应用商店。

本页介绍 UWP 应用的操作步骤,但 Win32 选项的步骤与此类似。

驱动开发人员步骤在硬件支持应用 (HSA):驱动程序开发人员的步骤中介绍。

入门

首先,安装最新版本的 Visual Studio 并创建一个 UWP 应用项目。 要生成具有自定义功能的 UWP 应用,需要 10.0.15063 版(Windows 10 创作者更新)或更高版本的 Windows SDK。 项目文件还必须指定 10.0.15063 或更高版本。 有关配置的更多帮助,请参阅使用 Visual Studio 开发 UWP 应用

从 Windows 10 1709 版开始,可以指定通用 Windows 平台 (UWP) 应用只有在存在特定驱动程序时才能加载。 要了解如何操作,请参阅将驱动程序与 UWP 应用配对

创建 Microsoft Store 帐户

Microsoft Store 上的开发人员帐户是必需的。 硬件合作伙伴需要一个不同于其硬件合作伙伴帐户的 Microsoft Store 帐户。 在后续步骤中创作应用清单和设备元数据时,将需要发布者名称。 创建应用商店配置文件后,还可以为应用保留名称。

要创建 Microsoft Store 帐户,请转到开始注册。 有关详细信息,请参阅发布 Windows 应用和游戏

为应用选择编程语言

如果应用将与驱动程序通信,则可以使用 Windows.Devices.Custom,它是 WinRT API 的一部分,因此可用于 JavaScript、C# 和 C++。

如果应用将与 NT 服务通信,则需要使用 RPC API。 由于 RPC API 是 Win32 API,它在 WinRT 中不可用,因此需要使用 C++、C++/CLI,或者使用 .NET interop (PInvoke) 封装 RPC 调用。 有关详细信息,请参阅从托管代码调用本机函数使用 C++/CLI 进行 .NET 编程

联系自定义功能所有者

现在便已准备好从功能所有者请求访问自定义功能。 需要收集以下信息:

  • 从 Microsoft Store 获取应用 PFN(程序包系列名称)

  • 自定义功能的名称。

  • 应用签名证书的签名哈希值,可使用 certutil.exe 从 .cer 文件生成。 证书必须是 SHA-256。

要生成签名哈希值,请运行 C:\Windows\System32\certutil.exe -dump CertificateName.cer

查看底部附近的签名哈希值,确保其为 SHA256。 否则,请使用 SHA256 证书来为应用签名。 结果应如下所示:

Signature Hash:
ca9fc964db7e0c2938778f4559946833e7a8cfde0f3eaa07650766d4764e86c4

功能所有者会使用此信息来生成已签名的自定义功能描述符文件,并将此文件发送给应用开发人员。

应用开发人员可以在开发人员模式下继续开发具有自定义功能的应用,同时等待功能所有者批准请求。 例如,在开发人员模式下下,在桌面电脑的 SCCD 中使用以下内容:

  • SCCD 中的目录条目。

    <Catalog>FFFF</Catalog>
    
  • SCCD 中授权实体条目中的证书签名哈希。 虽然并非强制执行,也不会进行验证,但请输入 64 个字符的序列。

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

在应用程序包清单中添加自定义功能

接下来,修改应用程序包清单源文件 (Package.appxmanifest) 以包含功能属性。

<?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>

然后将 SCCD 文件复制到 appx 程序包的根目录下。 在 Visual Studio 的解决方案资源管理器中,右键单击“项目-> 添加 -> 现有项目…”,将 SCCD 添加到项目中。

将 SCCD 文件添加到 appx 程序包中。

右键单击 SCCD 文件,将“内容”更改为 True,以便将 SCCD 标记为生成内容。 对于 C# 项目,请使用属性 Build Action = Content,对于 JavaScript 项目,请使用 Package Action = Content

将 SCCD 标记为内容。

最后,右键单击项目,选择“应用商店”,然后选择“创建应用程序包”。

在移动平台上不支持具有自定义功能的 UWP 应用。

安装应用

要预装具有自定义功能的 UWP 应用,请使用 DISM - 部署映像服务和管理

故障排除

当目标计算机处于开发人员模式时,可以尝试以下步骤来调试应用注册失败:

  1. 从 AppX 清单中删除自定义功能条目。

  2. 生成应用并进行部署。

  3. 在 PowerShell 窗口中,键入 Get-AppxPackage

  4. 在列表中查找应用,并验证应用的确切软件程序包系列名称。

  5. 使用程序包系列名称来更新 SCCD。

  6. 将自定义功能条目添加回 AppX 清单。

  7. 重新生成和部署。

另请参阅

硬件支持应用 (HSA):驱动程序开发人员的步骤

启用设备进行开发

自定义功能示例

Windows 驱动程序开发入门

将驱动程序与通用 Windows 平台 (UWP) 应用配对

通用 Windows 平台简介

通用 Windows 平台 (UWP)