管理预生产提交

使用 Microsoft 硬件 API 中的以下方法来管理预生产提交并让驱动程序包由 Microsoft 签名以供预生产测试使用。 有关 Microsoft 硬件 API 的简介,包括使用该 API 的先决条件,请参阅硬件仪表板 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
  • Processing
  • 已成功
  • 失败
错误 包处理过程中遇到错误

资产元数据资源

ID 资产的唯一标识符
packageID 此资产所属的包的标识符
assetType 可供下载的资产的类型。 可能的值为:
  • “SignedFilesZip”:由 Microsoft 签名的包。
contentHash 内容的 SHA-256 哈希

创建并提交产品以进行签名

  1. 如果尚未开始操作,请先完成 Microsoft 硬件 API 的所有先决条件

  2. 获取 Microsoft Entra ID 访问令牌。 在 Microsoft Store 提交 API 中,必须将此访问令牌传递给相关方法。 获取访问令牌后,在它到期前,你有 60 分钟的使用时间。 该令牌到期后,可以获取新的令牌。

  3. 通过执行 Microsoft 硬件 API 中的以下方法创建新提交。 请求正文应以“application/octet-stream”的形式包含包流。 这将使用 HDC 创建一个新的正在进行的预生产提交。 确保在上传之前以与证明提交相同的方式对包进行签名。

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

    响应正文包含包的 id,它将作为后续步骤的 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 值。 如果提交成功,此值应从“正在处理”更改为“已成功”,如果请求中有错误,则此值应更改为“已失败”。 如果存在错误,error 字段将包含有关错误的更多详细信息。

    如果 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. 一旦 signingStatus 为“已成功”,就请使用以下方法下载预生产签名包。 将步骤 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();