ハードウェア サポート アプリ (HSA): アプリ開発者向けの手順

このトピックでは、デバイス固有のアプリをドライバーまたは RPC (リモート プロシージャ コール) エンドポイントに関連付ける方法について説明します。 この方法でペアリングすると、アプリはハードウェア サポート アプリ (HSA) と呼ばれます。 Microsoft Store を通じてハードウェア サポート アプリを配布および更新できます。

ユニバーサル Windows プラットフォーム (UWP) アプリまたはデスクトップ (Win32) アプリから始めます。 デスクトップ アプリを使用する場合は、デスクトップ ブリッジを使用して、ストアにアップロードできる Windows アプリ パッケージを作成します。

このページでは UWP アプリの手順について説明しますが、Win32 オプションの手順も同様です。

ドライバー開発者向けの手順は、ハードウェア サポート アプリ (HSA) で説明されています。ドライバー開発者向けの手順

はじめに

まず、最新バージョンの Visual Studio をインストールし、UWP アプリ プロジェクトを作成します。 カスタム機能を備えた UWP アプリを構築するには、Windows SDK バージョン 10.0.15063 (Windows 10 Creators Update) 以降が必要です。 プロジェクト ファイルではバージョン 10.0.15063 以降を指定する必要もあります。 構成に関する詳細なヘルプについては、「Visual Studio を使用した UWP アプリの開発」を参照してください。

Windows 10 バージョン 1709 以降では、特定のドライバーが存在する場合にのみユニバーサル Windows プラットフォーム (UWP) アプリを読み込むように指定できます。 その方法については、「ドライバーと UWP アプリのペアリング」を参照してください

Microsoft Store アカウントを作成する

Microsoft Store の開発者アカウントが必要です。 ハードウェア パートナーには、ハードウェア パートナー アカウントとは異なる Microsoft Store アカウントが必要です。 後の手順でアプリ マニフェストとデバイス メタデータを作成するときに、発行元名が必要になります。 ストア プロファイルを作成したら、アプリの名前を予約することもできます。

Microsoft Store アカウントを作成するには、「登録」に進みます。 詳細については、「Windows アプリとゲームを公開する」を参照してください。

アプリのプログラミング言語の選択

アプリがドライバーと通信する場合は、WinRT API の一部である Windows.Devices.Custom を使用できるため、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

機能所有者は、この情報を使用して署名付きカスタム機能記述子ファイルを生成し、このファイルをアプリ開発者に送信します。

アプリ開発者は、機能所有者がリクエストを承認するまで待機している間、開発者モードでカスタム機能を使用してアプリの開発を続けることができます。 たとえば、開発者モードのデスクトップ PC の 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 をプロジェクトに追加します。

Adding an SCCD file into the appx package.

SCCD ファイルを右クリックし、Content を True に変更して、SCCD をビルド コンテンツとしてマークします。 C# プロジェクトの場合はプロパティ を使用しBuild Action = Content、JavaScript プロジェクトの場合は を使用しますPackage Action = Content

Marking SCCD as content.

最後に、プロジェクトを右クリックし、「ストア」を選択し、「アプリ パッケージの作成」を選択します。

モバイル プラットフォームでは、カスタム機能を備えた UWP アプリはサポートされていません。

アプリをインストールする

カスタム機能を備えた UWP アプリをプレインストールするには、DISM - 展開イメージのサービスと管理を使用します。

トラブルシューティング

ターゲット マシンが開発者モードの場合は、次の手順を試してアプリの登録の失敗をデバッグできます。

  1. AppX マニフェストからカスタム機能エントリを削除します。

  2. アプリを構築してデプロイします。

  3. PowerShell ウィンドウで、「 Get-AppxPackage」と入力します。

  4. リストでアプリを探し、アプリの正確なパッケージ ファミリ名を確認します。

  5. パッケージ ファミリ名を使用して SCCD を更新します。

  6. カスタム機能エントリを AppX マニフェストに再度追加します。

  7. 再構築してデプロイします。

参照

ハードウェア サポート アプリ (HSA): ドライバー開発者向けの手順

デバイスを開発用に有効にする

カスタム機能のサンプル

Windows ドライバーの概要

ドライバーとユニバーサル Windows プラットフォーム (UWP) アプリとのペアリング

ユニバーサル Windows プラットフォームの紹介

ユニバーサル Windows プラットフォーム (UWP)