硬件支持应用 (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应用商店帐户。 在后续步骤中创作应用清单和设备元数据时,需要发布者名称。 创建应用商店配置文件后,还可以为应用保留名称。

若要创建Microsoft应用商店帐户,请转到 Windows 开发人员中心。 有关详细信息,请参阅发布 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)