Share via


IWMDMProgress3::Progress3

banner art

The Progress3 method is called by Windows Media Device Manager to indicate the status of an action in progress. This method extends IWMDMProgress::Progress by providing additional input parameters for the identification (ID) of the event and for a pointer to the context of the commands.

Syntax

HRESULT Progress3(GUIDEventId,DWORDdwTranspiredTicks,OPAQUECOMMAND*pContext);

Parameters

EventId

[in]  GUID specifying the event ID for which progress notifications are being sent. Possible values are shown in the following table.

Event Description
SCP_EVENTID_ACQSECURECLOCK Windows Media Device Manager is acquiring a secure clock from server.
SCP_EVENTID_NEEDTOINDIV The device is being individualized. This is not currently used.
SCP_EVENTID_DRMINFO This event ID is used to notify the application with the version DRM header found in the content for each file.

The OPAQUECOMMAND structure returned has the guidCommand parameter set to SCP_PARAMID_DRMVERSION.

In addition, the data specifies one of the following flags:

WMDM_SCP_DRMINFO_NOT_DRMPROTECTED

WMDM_SCP_DRMINFO_V1HEADER

WMDM_SCP_DRMINFO_V2HEADER

EVENT_WMDM_CONTENT_TRANSFER Content is being transferred to or from the device.

dwTranspiredTicks

[in]  DWORD specifying the number of ticks that have transpired so far.

pContext

[in, out]  Pointer to an OPAQUECOMMAND structure containing a command sent directly to the device without being handled by Windows Media Device Manager. This parameter is optional and can be NULL. If the event is SCP_EVENTID_DRMINFO, the data in this parameter will have the SCP_PARAMID_DRMVERSION GUID.

Return Values

The application should return one of the following HRESULT values.

Return code Description
S_OK The operation should continue.
WMDM_E_USER_CANCELLED Windows Media Device Manager should cancel the current operation without waiting for it to finish. If the application is using block mode, then Windows Media Device Manager will return this error to the application.

Remarks

The interface that owns the method that is implementing an operation calls the Progress3 method as the operation defined by the method is carried out. The intention is that Progress3 will be called once per estimated tick. However, the dwTranspiredTicks parameter must be checked on each call because the operation being performed may not guarantee one call for each estimated tick.

The application returns S_OK to the calling method to indicate that the operation should continue. The application returns WMDM_E_USER_CANCELLED to indicate that the operation should be canceled. If the application is using block mode and returns WMDM_E_USER_CANCELLED, then Windows Media Device Manager will return this same error to the application.

Example Code

The following C++ code shows an example implementation of 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;
}

Requirements

Header: Defined in mswmdm.h.

Library: mssachlp.lib

See Also