Condividi tramite


Campo delle restrizioni per l'utilizzo

Nota

Questo argomento si applica a Windows 7 o versione successiva.

 

Una restrizione sul campo dell'uso è un provisioning che limita la modalità di utilizzo di una licenza per una determinata tecnologia.

Media Foundation fornisce un meccanismo per l'applicazione di restrizioni sul campo d'uso per le trasformazioni di Media Foundation (MFT), in particolare i codec. Questo meccanismo richiede al MFT di bloccare il proprio uso da parte delle applicazioni fino a quando l'applicazione non ha eseguito un handshake con MFT. Media Foundation non definisce l'handshake, in genere implica una sorta di scambio crittografico.

Registrazione ed enumerazione

Se un MFT ha restrizioni relative al campo di utilizzo, impostare il flag di MFT_ENUM_FLAG_FIELDOFUSE quando si registra MFT. Questo flag si applica alle API di registrazione MFT seguenti:

Per impostazione predefinita, le MFP registrate con questo flag vengono escluse dai risultati dell'enumerazione. Per enumerare le MFP con restrizioni relative al campo di utilizzo, chiamare MFTEnumEx e specificare il flag MFT_ENUM_FLAG_FIELDOFUSE nel parametro Flags . La figura seguente illustra questo processo.

diagram showing mft and an application sending data to the registry

La funzione MFTEnum esclude sempre tutte le MFC con restrizioni relative al campo di utilizzo.

Sblocco del MFT

Per usare un MFT con restrizioni relative al campo di utilizzo, seguire questa procedura:

  1. L'applicazione implementa l'interfaccia IMFFieldOfUseMFTUnlock .
  2. Il metodo IMFFieldOfUseMFTUnlock::Unlock accetta un puntatore all'interfaccia IUnknown dell'MFT .
  3. Nel metodo Unlock l'applicazione esegue l'handshake richiesto, usando qualsiasi meccanismo definito dal MFT. Questo passaggio non è definito dall'API Media Foundation.
  4. Se il metodo Unlock ha esito positivo, MFT si sblocca.

L'applicazione specifica il puntatore IMFFieldOfUseMFTUnlock impostando l'attributo MFT_FIELDOFUSE_UNLOCK_Attribute . Esistono diversi modi per impostare questo attributo, a seconda del modo in cui l'applicazione crea il decodificatore o la pipeline di codifica:

API Come sbloccare field-of-use
Lettore di origine Se l'applicazione usa il lettore di origine per decodificare un file multimediale, impostare l'attributo MFT_FIELDOFUSE_UNLOCK_Attribute nei parametri di configurazione. Vedere Attributi del lettore di origine.
Sink Writer Se l'applicazione usa il writer sink per codificare un file multimediale, impostare l'attributo MFT_FIELDOFUSE_UNLOCK_Attribute nei parametri di configurazione. Vedere Attributi del writer sink.
Transcodifica veloce Se l'applicazione usa la funzionalità Fast Transcode per creare una topologia di codifica, impostare il MFT_FIELDOFUSE_UNLOCK_Attribute quando si chiama IMFTranscodeProfile::SetContainerAttributes. Per altre informazioni sulla funzionalità Di transcodifica rapida, vedere API Transcode.
Topologia Se si crea direttamente una topologia, impostare il MFT_FIELDOFUSE_UNLOCK_Attribute come attributo nella topologia. Vedere Attributi della topologia.
Oggetto attivazione MFT Se l'applicazione enumera direttamente i decodificatori o i codificatori che userà, impostare il MFT_FIELDOFUSE_UNLOCK_Attribute sui puntatori IMFActivate restituiti dalla funzione MFTEnumEx .
Impostare l'attributo prima di chiamare IMFActivate::ActivateObject per creare MFT. L'oggetto di attivazione chiama IMFFieldOfUseMFTUnlock::Unlock quando crea MFT.

 

Il diagramma seguente illustra la relazione tra gli oggetti di attivazione MFT e l'interfaccia IMFFieldOfUseMFTUnlock .

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

Trasformazioni di Media Foundation