iWMDMProgress3::P rogress3 方法 (mswmdm.h)

Windows Media 设备管理器调用 Progress3 方法以指示正在进行的操作的状态。 此方法通过为事件的标识 (ID) 和指向命令上下文的指针提供其他输入参数来扩展 IWMDMProgress::P rogress

语法

HRESULT Progress3(
  [in]      GUID          EventId,
  [in]      DWORD         dwTranspiredTicks,
  [in, out] OPAQUECOMMAND *pContext
);

参数

[in] EventId

指定发送进度通知的事件 ID 的 GUID。 下表中显示了可能的值。

事件 说明
SCP_EVENTID_ACQSECURECLOCK Windows Media 设备管理器正在从服务器获取安全时钟。
SCP_EVENTID_NEEDTOINDIV 正在对设备进行个性化。 当前未使用此功能。
SCP_EVENTID_DRMINFO 此事件 ID 用于向应用程序通知在每个文件的内容中找到的版本 DRM 标头。

返回的 OPAQUECOMMAND 结构将 guidCommand 参数设置为 SCP_PARAMID_DRMVERSION。

此外,数据还指定以下标志之一:

WMDM_SCP_DRMINFO_NOT_DRMPROTECTED

WMDM_SCP_DRMINFO_V1HEADER

WMDM_SCP_DRMINFO_V2HEADER

EVENT_WMDM_CONTENT_TRANSFER 正在向设备传输内容或从设备传输内容。

[in] dwTranspiredTicks

DWORD ,指定到目前为止已发生的计时周期数。

[in, out] pContext

指向 OPAQUECOMMAND 结构的指针,该结构包含直接发送到设备的命令,而不由 Windows Media 设备管理器处理。 此参数是可选的,可以为 NULL。 如果事件SCP_EVENTID_DRMINFO,则此参数中的数据将具有SCP_PARAMID_DRMVERSION GUID。

返回值

应用程序应返回以下 HRESULT 值之一。

返回代码 说明
S_OK
操作应继续。
WMDM_E_USER_CANCELLED
Windows Media 设备管理器应取消当前操作,而无需等待操作完成。 如果应用程序使用阻止模式,则 Windows Media 设备管理器 会将此错误返回给应用程序。

注解

在方法定义的操作执行时,拥有实现操作的方法的接口调用 Progress3 方法。目的是按估计的计时周期调用 Progress3 一次。 但是,必须在每次调用中检查 dwTranspiredTicks 参数,因为所执行的操作可能无法保证每个估计的计时周期都有一个调用。

应用程序将S_OK返回到调用方法,以指示操作应继续。 应用程序返回WMDM_E_USER_CANCELLED,指示应取消操作。 如果应用程序使用阻止模式并返回WMDM_E_USER_CANCELLED,则 Windows Media 设备管理器 将向应用程序返回相同的错误。

示例

以下 C++ 代码演示 Progress3 的示例实现。


HRESULT Progress3(GUID  EventId, DWORD  dwTranspiredTicks, OPAQUECOMMAND*  pContext)
{
    WCHAR strGuid[64];
    ZeroMemory(strGuid, 64);
    StringFromGUID2(reinterpret_cast<GUID&>(EventId),(LPOLESTR)strGuid, 64);
    // TODO: Display the message: "Progress3 called. GUID value: " 
    // followed by the strGUID value.
    // TODO: Display the message: "Progress3 dwTranspiredTicks: " 
    // followed by the dwTranspiredTicks value.

    return S_OK;
}

要求

要求
目标平台 Windows
标头 mswmdm.h
Library Mssachlp.lib

另请参阅

启用通知

IWMDMProgress3 接口

IWMDMProgress::P rogress