미리 빌드된 제출 관리

Microsoft 하드웨어 API에서 다음 방법을 사용하여 미리 빌드된 제출을 관리하고 사전 프로덕션 테스트를 위해 Microsoft에서 서명한 드라이버 패키지를 가져옵니다. API를 사용하기 위한 필수 구성 요소를 포함하여 Microsoft 하드웨어 API에 대한 소개는 하드웨어 dashboard API를 참조하세요.

https://manage.devcenter.microsoft.com/v2.0/my/hardware/products/

제품 제출을 관리하는 방법

메서드 URI 설명
PUT https://manage.devcenter.microsoft.com/v2.0/my/hardware/preprod/packages/ 미리 서명하기 위한 패키지 제출
GET https://manage.devcenter.microsoft.com/v2.0/my/hardware/preprod/packages/{packageId} 미리 빌드된 제출에 대한 패키지 메타데이터 가져오기
GET https://manage.devcenter.microsoft.com/v2.0/my/hardware/preprod/packages/{packageId}/assets 미리 빌드된 제출에 사용할 수 있는 자산 가져오기
GET https://manage.devcenter.microsoft.com/v2.0/my/hardware/preprod/packages/{packageId}/assets/{assetId} 단일 자산에 대한 자산 메타데이터 가져오기
GET https://manage.devcenter.microsoft.com/v2.0/my/hardware/preprod/packages/{packageId}/assets/{assetId}/download 미리 제공된 제출에 대한 자산 다운로드

패키지 메타데이터 리소스

ID 패키지의 고유 식별자
signingStatus
  • NotStarted
  • 처리 중
  • 성공
  • 실패
오류 패키지 처리 중에 발생한 오류

자산 메타데이터 리소스

ID 자산의 고유 식별자
packageID 이 자산이 속한 패키지의 식별자
assetType 다운로드할 수 있는 자산 유형입니다. 가능한 값은 다음과 같습니다.
  • "SignedFilesZip": Microsoft에서 서명한 패키지입니다.
contentHash 콘텐츠의 SHA-256 해시

서명을 위한 제품 만들기 및 제출

  1. 아직 수행하지 않은 경우 Microsoft 하드웨어 API에 대한 모든 필수 조건을 완료합니다.

  2. Microsoft Entra ID 액세스 토큰을 가져옵니다. Microsoft Store 제출 API의 메서드에 이 액세스 토큰을 전달해야 합니다. 액세스 토큰을 얻은 후 만료되기 전에 60분 동안 사용할 수 있습니다. 토큰이 만료된 후 새 토큰을 가져올 수 있습니다.

  3. Microsoft Hardware API에서 다음 메서드를 실행하여 새 제출을 만듭니다. 요청 본문은 패키지 스트림을 "application/octet-stream"으로 포함해야 합니다. 이렇게 하면 HDC를 사용하여 진행 중인 새 미리 빌드된 제출이 만들어집니다. 업로드하기 전에 증명 제출과 동일한 방식으로 패키지가 서명되었는지 확인합니다.

    PUT https://manage.devcenter.microsoft.com/v2.0/my/hardware/preprod/packages/
    

    응답 본문에는 후속 단계에 대한 packageId가 될 패키지의 ID 가 포함됩니다.

    {
        "id": "string",
        "etag": "string",
        "lastModified": "2022-03-28T23:31:17.014Z",
        "signingStatus": "NotStarted",
        "error": 
        {
            "message": "string"
        }
    }
    
  4. 다음 메서드를 실행하여 상태 확인하여 패키지 메타데이터를 가져옵니다.

    GET https://manage.devcenter.microsoft.com/v2.0/my/hardware/preprod/packages/{packageId}
    

    패키지 상태 확인하려면 응답 본문에서 signingStatus 값을 검토합니다. 이 값은 제출이 성공하면 처리 에서 성공 으로, 요청에 오류가 있는 경우 실패 로 변경해야 합니다. 오류가 있는 경우 오류 필드에는 오류 에 대한 자세한 정보가 포함됩니다.

    signingStatus성공인 경우 자산 필드에서 서명된 패키지를 사용할 수 있어야 합니다.

    {
    "id": "string",
    "etag": "string",
    "lastModified": "2022-03-28T23:45:25.501Z",
    "signingStatus": "NotStarted",
    "error": {
        "message": "string"
    },
    "assets": [
        {
        "id": "string",
        "packageId": "string",
        "assetType": "string",
        "createdDate": "2022-03-28T23:45:25.501Z",
        "contentHash": "string"
        }
    ],
    "assetsContinuationToken": "string"
    }
    
  5. signedStatusSucceeded이면 다음 방법을 사용하여 미리 서명된 패키지를 다운로드하여 자산을 다운로드합니다. 4단계에서 검색된 메타데이터의 서명된 자산에 대한 ID를 요청의 assetId로 사용합니다. 다운로드한 패키지에는 서명된 드라이버 파일이 zip으로 포함됩니다.

    GET https://manage.devcenter.microsoft.com/v2.0/my/hardware/preprod/packages/{packageId}/assets/{assetId}/download
    

미리 로드된 서명 코드에 대한 패키지 제출 예제

    var httpClient = new HttpClient();
    httpClient.BaseAddress = new Uri(https://manage.devcenter.microsoft.com/v2.0/my/hardware/);
    httpClient.DefaultRequestHeaders.Accept.Clear();
    httpClient.DefaultRequestHeaders.Accept.Add(
        new MediaTypeWithQualityHeaderValue("*/*"));

    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", token);

    var driverPackage = File.ReadAllBytes(@"C:\cabfile.cab");
    Task<HttpResponseMessage> response = httpClient.PutAsync("preprod/packages", new ByteArrayContent(driverPackage));
    var jsonResponse = response.Result.Content.ReadFromJsonAsync<object>().Result as JsonElement?;
    var packageId = jsonResponse?.GetProperty("id").ToString();