Freigeben über


Nutzungseinschränkungen

Hinweis

Dieses Thema gilt für Windows 7 oder höher.

 

Eine Einschränkung für die Nutzung ist eine Bereitstellung, die beschränkt, wie eine Lizenz für eine bestimmte Technologie verwendet werden kann.

Media Foundation bietet einen Mechanismus zum Erzwingen von Anwendungseinschränkungen für Media Foundation-Transformationen (MFTs), insbesondere Codecs. Dieser Mechanismus erfordert die MFT, die eigene Verwendung von Anwendungen zu blockieren, bis die Anwendung einen Handshake mit dem MFT ausgeführt hat. Media Foundation definiert nicht den Handshake – in der Regel wäre es eine Art kryptografischer Austausch.

Registrierung und Aufzählung

Wenn ein MFT über Einschränkungen für die Verwendung verfügt, legen Sie das MFT_ENUM_FLAG_FIELDOFUSE-Flag fest, wenn Sie die MFT registrieren. Diese Kennzeichnung gilt für die folgenden MFT-Registrierungs-APIs:

Standardmäßig sind MFTs, die mit diesem Flag registriert sind, aus Aufzählungsergebnissen ausgeschlossen. Rufen Sie MFTEnumEx auf, um MFTs mit Einschränkungen für die Verwendung aufzählen zu können, und geben Sie das MFT_ENUM_FLAG_FIELDOFUSE Flag im Flags-Parameter an. Dieser Prozess wird anhand des folgenden Diagramms veranschaulicht.

diagram showing mft and an application sending data to the registry

Die MFTEnum-Funktion schließt immer alle MFTs aus, die über Einschränkungen für die Verwendung verfügen.

Entsperren des MFT

Führen Sie die folgenden Schritte aus, um eine MFT mit Verwendungseinschränkungen zu verwenden:

  1. Die Anwendung implementiert die IMFFieldOfUseMFTUnlock-Schnittstelle .
  2. Die IMFFieldOfUseMFTUnlock::Unlock-Methode verwendet einen Zeiger auf die IUnknown-Schnittstelle des MFT.
  3. In der Entsperrmethode führt die Anwendung den erforderlichen Handshake aus, wobei der vom MFT definierte Mechanismus verwendet wird. Dieser Schritt wird von der Media Foundation-API nicht definiert.
  4. Wenn die Entsperrmethode erfolgreich ist, entsperrt sich die MFT selbst.

Die Anwendung gibt den IMFFieldOfUseMFTUnlock-Zeiger an, indem Sie das MFT_FIELDOFUSE_UNLOCK_Attribute-Attribut festlegen. Es gibt verschiedene Möglichkeiten zum Festlegen dieses Attributs, je nachdem, wie Ihre Anwendung den Decoder oder die Codierungspipeline erstellt:

API Entsperren von Feld-Of-Use
Quellsprachausgabe Wenn Ihre Anwendung den Source Reader verwendet, um eine Mediendatei zu entschlüsseln, legen Sie das MFT_FIELDOFUSE_UNLOCK_Attribute-Attribut in den Konfigurationsparametern fest. Siehe Quellsprachattribute.
Sink-Autor Wenn Ihre Anwendung den Sink-Writer verwendet, um eine Mediendatei zu codieren, legen Sie das MFT_FIELDOFUSE_UNLOCK_Attribute-Attribut in den Konfigurationsparametern fest. Siehe Sink Writer-Attribute.
Schnelles Transcode Wenn Ihre Anwendung das Fast Transcode-Feature verwendet, um eine Codierungstopologie zu erstellen, legen Sie die MFT_FIELDOFUSE_UNLOCK_Attribute fest, wenn Sie IMFTranscodeProfile::SetContainerAttributes aufrufen. Weitere Informationen zum Fast Transcode-Feature finden Sie unter Transcode-API.
Topologie Wenn Sie eine Topologie direkt erstellen, legen Sie die MFT_FIELDOFUSE_UNLOCK_Attribute als Attribut in der Topologie fest. Siehe Topologieattribute.
MFT-Aktivierungsobjekt Wenn Ihre Anwendung die verwendeten Decoder oder Encoder direkt aufzählt, legen Sie die MFT_FIELDOFUSE_UNLOCK_Attribute auf den von der MFTEnumEx-Funktion zurückgegebenen IMFActivate-Zeiger fest.
Legen Sie das Attribut vor dem Aufrufen von IMFActivate::ActivateObject fest, um das MFT zu erstellen. Das Aktivierungsobjekt ruft IMFFieldOfUseMFTUnlock::Entsperren auf, wenn es die MFT erstellt.

 

Das folgende Diagramm zeigt die Beziehung zwischen MFT-Aktivierungsobjekten und der IMFFieldOfUseMFTUnlock-Schnittstelle .

diagram showing an application, activation object and mft with arrows to an fou object, which has an arrow back to mft

Media Foundation-Transformationen