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

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

通用 Windows 平台 (UWP) 应用或桌面 (Win32) 应用开始。 若要使用桌面应用,请使用桌面桥创建可上传到应用商店的 Windows 应用包。

本页介绍 UWP 应用的过程,但 Win32 选项的步骤类似。

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

入门

首先,安装最新版本的 Visual Studio 并创建 UWP 应用项目。 若要生成具有自定义功能的 UWP 应用,需要 Windows SDK 版本 10.0.15063 (Windows 10 创意者更新) 或更高版本。 项目文件还必须指定版本 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 是 WinRT 中不可用的 Win32 API,因此需要使用 C++、C++/CLI 或使用 .NET 互操作 (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)