Hardware Support App (HSA): Steps for App Developers
Article
This article describes how to associate a device-specific app with a driver or RPC (Remote Procedure Call) endpoint. When paired in this fashion, the app is referred to as a Hardware Support App (HSA). You can distribute and update a Hardware Support App through the Microsoft Store.
Start with either a Universal Windows Platform (UWP) app or a desktop (Win32) app. 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.
This page describes the procedure for a UWP app, but the steps are similar for the Win32 option.
First, install the latest version of Visual Studio and create a UWP app project. To build a UWP app with a custom capability, you need Windows SDK version 10.0.15063 (Windows 10 Creators Update) or later. Your project file must also specify version 10.0.15063 or higher. For more help getting configured, see Develop UWP apps using Visual Studio.
Starting in Windows 10 version 1709, you can specify that a Universal Windows Platform (UWP) app should only load if a specific driver is present. To learn how, see Pairing a driver with a UWP app.
Create a Microsoft Store account
A developer account on the Microsoft Store is required. Hardware partners need a Microsoft Store account that is different from their Hardware partner account. You need the publisher name when you author the app manifest and the device metadata in later steps. You can also reserve a name for your app once you create a store profile.
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++.
If your app communicates with an NT service, then you need to use the RPC APIs. Because RPC APIs are Win32 APIs that aren't available in WinRT, you need to either use C++, C++/CLI, or wrap the RPC calls using .NET interop (PInvoke). For more info, see Calling Native Functions from Managed Code and .NET programming with C++/CLI.
Contact the custom capability owner
Now you're ready to request access to a custom capability from a capability owner. You need to gather the following info:
App PFN (Package Family Name) from the Microsoft Store
Name of the custom capability
Signature Hash of the app signing cert which can be generated from your .cer file using certutil.exe. The certificate must be SHA-256.
To generate the signature hash, run C:\Windows\System32\certutil.exe -dump CertificateName.cer.
Look for the signature hash near the bottom and ensure it's SHA256. Otherwise, use an SHA256 cert to sign your app. The result should look like this:
The app developer can continue developing an app with custom capabilities in developer mode while waiting for the capability owner to approve the request. For example, use the following in the SCCD on a desktop PC in Developer Mode:
Catalog entry in the SCCD.
XML
<Catalog>FFFF</Catalog>
Certificate Signature Hash in the authorized entity entry in the SCCD. While it's not enforced or validated, put a 64-char sequence.
Then copy the SCCD file to the package root of the appx package. In Visual Studio's solution explorer, right-click on "project-> Add -> Existing Item…" to add the SCCD to your project.
Mark the SCCD as build content by right clicking on the SCCD file and changing Content to True. For a C# project, use the property Build Action = Content, and for a JavaScript project, use Package Action = Content.
Finally, right-click the project, select Store, then Create App Packages.
There's no support for UWP apps with custom capabilities on mobile platforms.
Azure HPC is a purpose-built cloud capability for HPC & AI workload, using leading-edge processors and HPC-class InfiniBand interconnect, to deliver the best application performance, scalability, and value. Azure HPC enables users to unlock innovation, productivity, and business agility, through a highly available range of HPC & AI technologies that can be dynamically allocated as your business and technical needs change. This learning path is a series of modules that help you get started on Azure HPC - you