Sessione multimediale PMP

Un'applicazione può creare la sessione multimediale in un processo separato denominato processo PMP ( Protected Media Path ). Lo scopo principale del processo PMP è abilitare la riproduzione di contenuti protetti usando digital rights management (DRM). Per impostazione predefinita, il processo PMP viene creato all'interno di un ambiente protetto (PE). Solo componenti attendibili e firmati possono essere caricati all'interno di un PE. Un vantaggio secondario del processo PMP è che isola il processo dell'applicazione dalla pipeline multimediale. Per altre informazioni sul processo PMP, vedere Percorso multimediale protetto.

Per creare la sessione multimediale all'interno del processo PMP, chiamare la funzione MFCreatePMPMediaSession . Facoltativamente, è possibile passare il flag di MFPMPSESSION_UNPROTECTED_PROCESS . Se questo flag è impostato, il processo PMP viene creato all'interno di un processo non protetto e non un processo PE. Il processo non protetto non può essere usato per la riproduzione DRM, ma offre i vantaggi dell'isolamento del processo.

La funzione MFCreatePMPMediaSession restituisce un puntatore a un oggetto proxy per la sessione multimediale. L'applicazione comunica con la sessione multimediale tramite il proxy.

figura della sessione multimediale all'interno del processo pmp

Per impostazione predefinita, quando l'applicazione crea una topologia, l'origine multimediale viene creata all'interno del processo dell'applicazione. Viene creato un proxy all'origine multimediale all'interno del processo PMP. L'origine multimediale può creare oggetti all'interno del processo PMP usando l'interfaccia FMPMPHost . Ad esempio, per supportare DRM, un'origine multimediale crea un oggetto denominato autorità di attendibilità di input (ITA). L'ITA deve essere creato all'interno del processo PMP. Per altre informazioni sugli ITA, vedere Percorso multimediale protetto. Per usare l'interfaccia IMFPMPHost , eseguire le operazioni seguenti:

  1. L'origine multimediale deve implementare l'interfaccia FMPMPClient .
  2. Durante la risoluzione della topologia, il proxy sessione multimediale chiama il metodo IMFPMPClient::SetPMPHost nell'origine multimediale.
  3. L'origine multimediale chiama FMPMPHost::CreateObjectByCLSID per creare l'oggetto all'interno del processo PMP. L'oggetto deve avere un CLSID registrato. Inoltre, per caricare all'interno dell'oggetto PE, l'oggetto deve essere attendibile e firmato digitalmente. Per informazioni sui componenti multimediali protetti dalla firma del codice, vedere il white paper Code Signing for Protected Media Components in Windows Vista

Nella figura seguente viene illustrata l'origine multimediale creata nel processo dell'applicazione.

figura di un'origine multimediale nel processo dell'applicazione.

Un'altra alternativa consiste nel creare l'origine multimediale all'interno della sessione PMP.

  1. Impostare l'attributo MF_SESSION_REMOTE_SOURCE_MODE quando si crea la sessione multimediale. Gli attributi di configurazione vengono specificati nel parametro pConfiguration della funzione MFCreatePMPMediaSession .

  2. Chiamare MFGetService nella sessione multimediale per ottenere un puntatore all'interfaccia FMPMPHost . L'identificatore del servizio è MF_PMP_SERVICE.

  3. Chiamare FMPMPHost::CreateObjectByCLSID con l'identificatore di classe CLSID_MFSourceResolver per creare il resolver di origine all'interno del processo PMP. Il metodo restituisce un puntatore a un proxy per il resolver di origine.

  4. Call IMFSourceResolver::BeginCreateObjectFromURL o FMSourceResolver::BeginCreateObjectFromByteStream per creare l'origine multimediale.

    Nota

    In questo caso, è necessario usare le versioni asincrone di questi metodi, perché le versioni sincrone non sono remotabili.

     

Nella figura seguente viene illustrata l'origine multimediale creata nel processo PMP.

figura di un'origine multimediale nel processo pmp.

Come riprodurre file multimediali protetti

Sessione multimediale

Percorso multimediale protetto