Verwenden des Media Foundation-Ereignismodells
Die asynchronen Methoden, die von Windows Media DRM Client Extended APIs unterstützt werden, verwenden das gleiche Ereignismodell, das vom Media Foundation SDK verwendet wird. Jedes Objekt, das asynchrone Methoden unterstützt, implementiert die IWMDRMEventGenerator-Schnittstelle, die verwendet werden kann, um ein Ereignis abzurufen, wenn ein asynchroner Vorgang abgeschlossen ist.
Die IWMDRMEventGenerator-Schnittstelle erbt von der BENUTZEROBERFLÄCHEMediaEventGenerator-Schnittstelle, die in der Dokumentation Media Foundation SDK dokumentiert ist.
Der Beispielcode im DRM-Individualisierungsbeispiel verwendet die METHODE 1::GetEvent GENERATOR::GetEvent, um Ereignisse nach und nach aus der Warteschlange abzurufen. Die Verwendung von GetEvent ist einfacher als die Verwendung vonGEMMEDIAEventGenerator::BeginGetEvent und DESTMediaEventGenerator::EndGetEvent mit einem Rückruf, wodurch die Codebeispiele einfacher zu verstehen sind. Unabhängig davon, ob Sie GetEvent in Ihrem Code verwenden oderASYNCCallback implementieren und BeginGetEvent und EndGetEvent verwenden, ist die Logik zum Behandeln des Ereignisses nach dem Empfangen identisch.
Einige der asynchronen Methoden generieren Ereignisse, die Verweise auf Objekte enthalten, die verwendet werden können, um ausführlichere Statusinformationen zu erhalten. In diesen Fällen hat das generierte Ereignis einen IUnknown-Zeiger als Wert, der abgefragt werden kann, um die Statusschnittstelle abzurufen. In der folgenden Liste sind die Beziehungen zwischen asynchronen Aufrufen, generierten Ereignissen und anderen Schnittstellen zusammengefasst.
- Die IWMDRMLicenseManagement::BackupLicenses-Methode generiert MEWMDRMLicenseBackupProgress-Ereignisse mit zugeordneten IWMDRMLicenseBackupRestoreStatus-Schnittstellen.
- Die IWMDRMLicenseManagement::RestoreLicenses-Methode generiert MEWMDRMLicenseRestoreProgress-Ereignisse mit zugeordneten IWMDRMLicenseBackupRestoreStatus-Schnittstellen.
- Die IWMDRMSecurity::P erformSecurityUpdate-Methode generiert MEWMDRMIndividualizationProgress-Ereignisse mit zugeordneten IWMDRMIndividualizationStatus-Schnittstellen, wenn sie zum Durchführen der Individualisierung verwendet wird.
- Die IWMDRMLicenseManagement::AcquireLicense-Methode generiert bei Der Vorbereitung von Daten für den nicht automatischen Lizenzerwerb ein MEWMDRMLicenseAcquisitionCompleted-Ereignis mit einer zugeordneten IWMDRMNonSilentLicenseAquisition-Schnittstelle.