ISCPSecureExchange2::TransferContainerData2 方法 (mswmdm.h)
TransferContainerData2 方法将容器文件数据传输到安全内容提供程序。 安全内容提供程序在内部分解容器,并报告从容器中提取内容时哪些部分可用。 此方法通过接受一个进度回调来扩展 ISCPSecureExchange::TransferContainerData ,安全内容提供程序可以在该回调上针对它需要执行的任何步骤发送进度通知。
语法
HRESULT TransferContainerData2(
[in] BYTE *pData,
[in] DWORD dwSize,
[in] IWMDMProgress3 *pProgressCallback,
[out] UINT *pfuReadyFlags,
[in, out] BYTE [8] abMac
);
参数
[in] pData
指向包含从容器文件传输的当前数据的缓冲区的指针。 此参数必须包含在输入消息身份验证代码中,并且必须加密。
[in] dwSize
包含缓冲区中字节数的 DWORD。 此参数必须包含在输入消息身份验证代码中。
[in] pProgressCallback
进度回调,安全内容提供程序可在其中报告可能需要执行的任何步骤的进度。此步骤将由 IWMDMProgress3 方法的 EventId 参数标识。
[out] pfuReadyFlags
指示容器文件的哪些部分已准备好读取的标志。 此参数包含在输出消息身份验证代码中。 以下标志指示已准备就绪的内容。
标志 | 描述 |
---|---|
WMDM_SCP_TRANSFER_OBJECTDATA | 对象的数据可通过调用 ObjectData 方法获得。 |
WMDM_SCP_NO_MORE_CHANGES | 安全内容提供程序已确定,它不需要进一步处理和/或修改要传输的文件。 Windows Media 设备管理器可以直接将文件的其余部分传输到设备。 |
[in, out] abMac
包含此方法参数数据的消息身份验证代码的八个字节的数组。 (WMDM_MAC_LENGTH 定义为 8.)
返回值
如果该方法成功,则它会返回 S_OK。 如果失败,则返回 HRESULT 错误代码。
返回代码 | 说明 |
---|---|
|
调用方无权使用此接口。 |
|
调用方没有执行所请求操作所需的权限。 |
|
消息身份验证代码无效。 |
|
方法失败。 终止与安全内容提供程序的交互。 |
|
参数无效或为 NULL 指针。 |
|
发生了未指定的错误。 |
注解
Windows Media 设备管理器重复调用此方法,将数据从容器文件传输到安全内容提供程序。 Windows Media 设备管理器最终调用此方法,并将 dwSize 设置为零,以指示它没有更多要传输的数据。 当安全内容提供程序收集数据并从中提取各种对象时,它将报告回 Windows Media 设备管理器每次调用后哪些对象(如果有)可用。 如果没有可用的对象,安全内容提供程序将返回S_OK,并将 pfuReadyFlags 参数设置为零。 当安全内容提供程序确定不需要进一步处理和/或修改要传输的文件时,将返回标志WMDM_SCP_NO_MORE_CHANGES。 然后,Windows Media 设备管理器可以直接将文件的其余部分传输到设备。
通过调用 ObjectData 方法从安全内容提供程序传输 对象数据 。 Windows Media 设备管理器重复调用 ObjectData,直到它在第二个参数 dwBytesWrite 中返回零。
Windows Media 设备管理器调用 TransferComplete 方法,以指示安全数据传输结束。
Windows Media 设备管理器将应用程序提供的进度回调传递给 pProgressCallback 参数中的安全内容提供程序。 安全内容提供程序可以使用此参数为需要执行的任何步骤提供进度通知。步骤本身由 EventId 标识, EventId 是 IWMDMProgress3 方法的第一个参数。 特定的安全内容提供程序实现将定义 EventId 值供应用程序使用。
要求
要求 | 值 |
---|---|
目标平台 | Windows |
标头 | mswmdm.h |
Library | Mssachlp.lib |