Partilhar via


Restrições de campo de uso

Observação

Este tópico aplica-se ao Windows 7 ou posterior.

 

Uma restrição de de campo de uso é uma disposição que limita como uma licença para uma determinada tecnologia pode ser usada.

O Media Foundation fornece um mecanismo para impor restrições de campo de uso em transformações do Media Foundation (MFTs), particularmente codecs. Esse mecanismo requer que o MFT bloqueie seu próprio uso por aplicativos até que o aplicativo tenha executado um handshake com o MFT. A Media Foundation não define o aperto de mão — normalmente, envolveria algum tipo de troca criptográfica.

Registo e Enumeração

Se uma MFT tiver restrições de campo de uso, defina o sinalizador MFT_ENUM_FLAG_FIELDOFUSE quando registrar a MFT. Esse sinalizador se aplica às seguintes APIs de registro MFT:

Por padrão, MFTs registradas com esse sinalizador são excluídas dos resultados da enumeração. Para enumerar MFTs com restrições de campo de uso, chame MFTEnumEx e especifique o sinalizador de MFT_ENUM_FLAG_FIELDOFUSE no parâmetro Flags. O diagrama a seguir ilustra esse processo.

diagrama mostrando mft e um aplicativo enviando dados para o registro

A função MFTEnum sempre exclui quaisquer MFTs que tenham restrições de campo de uso.

Desbloqueando o MFT

Para usar um MFT com restrições de campo de uso, execute as seguintes etapas:

  1. O aplicativo implementa o IMFFieldOfUseMFTUnlock interface.
  2. O método IMFFieldOfUseMFTUnlock::Unlock leva um ponteiro para a interface IUnknown do MFT.
  3. No método Unlock, o aplicativo executa o handshake necessário, usando qualquer mecanismo definido pelo MFT. Esta etapa não é definida pela API do Media Foundation.
  4. Se o método Unlock for bem-sucedido, o MFT será desbloqueado a si mesmo.

O aplicativo especifica o ponteiroIMFFieldOfUseMFTUnlock definindo o atributo MFT_FIELDOFUSE_UNLOCK_Attribute. Há várias maneiras diferentes de definir esse atributo, dependendo de como seu aplicativo cria o decodificador ou o pipeline de codificação:

API Como desbloquear campo-Of-Use
Leitor de código-fonte Se seu aplicativo usa o Source Reader para decodificar um arquivo de mídia, defina o atributo MFT_FIELDOFUSE_UNLOCK_Attribute nos parâmetros de configuração. Consulte Source Reader Attributes.
Gravador de pia Se seu aplicativo usa o gravador de coletor para codificar um arquivo de mídia, defina o atributo MFT_FIELDOFUSE_UNLOCK_Attribute nos parâmetros de configuração. Consulte Atributos do Sink Writer.
Transcodificação rápida Se seu aplicativo usa o recurso Fast Transcode para criar uma topologia de codificação, defina o MFT_FIELDOFUSE_UNLOCK_Attribute quando você chamar IMFTranscodeProfile::SetContainerAttributes. Para obter mais informações sobre o recurso Fast Transcode, consulte Transcode API.
Topologia Se você criar uma topologia diretamente, defina o MFT_FIELDOFUSE_UNLOCK_Attribute como um atributo na topologia. Consulte Atributos de topologia.
Objeto de ativação MFT Se seu aplicativo enumera diretamente os decodificadores ou codificadores que ele usará, defina o MFT_FIELDOFUSE_UNLOCK_Attribute no IMFActivate ponteiros retornados pela funçãoMFTEnumEx.
Defina o atributo antes de chamar IMFActivate::ActivateObject para criar o MFT. O objeto de ativação chama IMFFieldOfUseMFTUnlock::Unlock quando cria o MFT.

 

O diagrama a seguir mostra a relação entre objetos de ativação MFT e o IMFFieldOfUseMFTUnlock interface.

diagrama mostrando um aplicativo, objeto de ativação e MFT com setas para um objeto FOU, que tem uma seta de volta para MFT

Media Foundation transforma