MFPKEY_PMP_Creation_Callback property

Sets a callback that creates the PMP Media Session during source resolution.

Data type PROPVARIANT type (vt) PROPVARIANT member
IUnknown* VT_UNKNOWN punkVal

Syntax

DECLSPEC_SELECTANY PROPERTYKEY MFPKEY_PMP_Creation_Callback = { {0x28bb4de2,0x26a2,0x4870,0xb7,0x20,0xd2,0x6b,0xbe,0xb1,0x49,0x42}, 0x01 }  

Remarks

Some protected content might require the use of this property. If so, the source resolution process fails with the error code MF_E_RESOLUTION_REQUIRES_PMP_CREATION_CALLBACK.
To use this property, do the following.

  1. Call PSCreateMemoryPropertyStore to create a property store.
  2. Implement the IMFAsyncCallback callback interface.
  3. Set the MFPKEY_PMP_Creation_Callback property on the property store. The value is a pointer to the IMFAsyncCallback implementation.
  4. Call IMFSourceResolver::BeginCreateObjectFromURL. Pass in a pointer to the property store in the pProps parameter.

In the IMFAsyncCallback::Invoke method of your callback interface, do the following.

  1. Call MFCreatePMPMediaSession to create the PMP Media Session.
  2. Call IMFGetService::GetService on the PMP Media Session to a pointer to the IMFPMPHost interface.
  3. Call IMFAsyncResult::GetState on the result object that is passed in the pAsyncResult parameter of IMFAsyncCallback::Invoke. Query the returned IUnknown pointer for the IMFAsyncCallback interface.
  4. Call MFPutWorkItem with the following parameters:
    • dwQueue: MFASYNC_CALLBACK_QUEUE_STANDARD
    • pCallback: The IMFAsyncCallback pointer obtained in step 3.
    • pState: The IMFPMPHost pointer obtained in step 2.

Requirements

Header: Declared in mfidl.h.