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부터 UWP(유니버설 Windows 플랫폼) 앱이 특정 드라이버가 있는 경우에만 로드되도록 지정할 수 있습니다. 방법을 알아보려면 UWP 앱과 드라이버 페어링을 참조하세요.

Microsoft Store 계정 만들기

Microsoft Store의 개발자 계정이 필요합니다. 하드웨어 파트너는 하드웨어 파트너 계정과 다른 Microsoft Store 계정이 필요합니다. 이후 단계에서 앱 매니페스트 및 디바이스 메타데이터를 작성할 때 게시자 이름이 필요합니다. 스토어 프로필을 만든 후에는 앱의 이름을 예약할 수도 있습니다.

Microsoft Store 계정을 만들려면 등록으로 이동합니다. 자세한 내용은 Windows 앱 및 게임 게시를 참조하세요.

앱에 대한 프로그래밍 언어 선택

앱이 드라이버와 통신하는 경우 WinRT API의 일부이므로 JavaScript, C#및 C++에서 사용할 수 있는 Windows.Devices.Custom을 사용할 수 있습니다.

앱이 NT 서비스와 통신하는 경우 RPC API를 사용해야 합니다. RPC API는 WinRT에서 사용할 수 없는 Win32 API이므로 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

기능 소유자는 이 정보를 사용하여 서명된 사용자 지정 기능 설명자 파일을 생성하고 이 파일을 앱 개발자에게 보냅니다.

앱 개발자는 기능 소유자가 요청을 승인할 때까지 기다리는 동안 개발자 모드에서 사용자 지정 기능이 있는 앱을 계속 개발할 수 있습니다. 예를 들어 개발자 모드의 데스크톱 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를 추가합니다.

appx 패키지에 SCCD 파일을 추가합니다.

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 드라이버로 시작

UWP(유니버설 Windows 플랫폼) 앱과 드라이버 페어링

유니버설 Windows 플랫폼 소개

UWP(유니버설 Windows 플랫폼)