管理預先布建提交

Microsoft 硬體 API 中使用下列方法來管理預先產生的提交,以及取得 Microsoft 簽署的驅動程式套件,以供預先生產測試使用。 如需 Microsoft 硬體 API 的簡介,包括使用 API 的必要條件,請參閱 硬體儀表板 API

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

管理產品提交的方法

方法 URI Description
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 下載指定預先布建提交的資產

套件中繼資料資源

識別碼 封裝的唯一識別碼
signingStatus
  • 未開始
  • Processing
  • 成功
  • Failed
錯誤 封裝處理期間發生錯誤

資產中繼資料資源

識別碼 資產的唯一識別碼
packageID 此資產所屬套件的識別碼
assetType 可供下載的資產類型。 可能的值包括:
  • 「SignedFilesZip」:由 Microsoft 簽署的套件。
contentHash 內容的 SHA-256 雜湊

建立並提交要簽署的產品

  1. 如果您尚未這麼做,請完成 Microsoft 硬體 API 的所有 必要條件

  2. 取得Microsoft Entra識別碼存取權杖。 您必須將此存取權杖傳遞至 Microsoft Store 提交 API 中的方法。 在您取得存取權杖之後,您有 60 分鐘的使用時間,之後其便會到期。 權杖到期之後,您可以取得新的權杖。

  3. 在 Microsoft 硬體 API 中執行下列方法,以建立新的提交。 要求本文應包含您的套件資料流程作為「application/octet-stream」。 這會使用 HDC 建立新的進行中預先布建提交。 在上傳之前,請確定已以您進行 證明 提交的相同方式登入套件。

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

    回應本文包含封裝的 識別碼 ,這會是後續步驟的 packageId。

    {
        "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 值。 如果提交成功,這個值應該會從 [處理 ] 變更為 [ 成功 ],如果要求中有錯誤,則變更為 [失敗 ]。 如果發生錯誤, 錯誤 欄位會包含有關錯誤的進一步詳細資料。

    如果 signedStatusSucceeded ,則資產欄位中應該提供已簽署的套件。

    {
    "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. 使用下列方法來下載預先產生的已簽署套件,以在 signedStatus為 Succeeded之後下載資產。 使用步驟 4 所擷取之中繼資料中已簽署資產的識別碼,作為要求中的 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();