Restrições de campo de uso
Nota
Este tópico se aplica ao Windows 7 ou posterior.
Uma restrição de de campo de uso é uma disposição que limita como uma licença para uma tecnologia específica pode ser usada.
O Media Foundation fornece um mecanismo para impor restrições de campo de uso em MFTs (transformações do Media Foundation), especialmente 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. O Media Foundation não define o handshake , normalmente, envolveria algum tipo de troca criptográfica.
Registro e Enumeração
Se um MFT tiver restrições de campo de uso, defina o sinalizador MFT_ENUM_FLAG_FIELDOFUSE ao registrar o MFT. Esse sinalizador se aplica às seguintes APIs de registro MFT:
- MFTRegister
- MFTRegisterLocal
- MFTRegisterLocalByCLSID
- IMFLocalMFTRegistration::RegisterMFTs
Por padrão, os MFTs registrados com esse sinalizador são excluídos dos resultados da enumeração. Para enumerar MFTs com restrições de campo de uso, chame MFTEnumEx e especifique o sinalizador MFT_ENUM_FLAG_FIELDOFUSE no parâmetro sinalizadores. O diagrama a seguir ilustra esse processo.
A funçãoMFTEnum sempre exclui quaisquer MFTs que tenham restrições de campo de uso.
Desbloqueio do MFT
Para usar um MFT com restrições de campo de uso, execute as seguintes etapas:
- O aplicativo implementa a interface deIMFFieldOfUseMFTUnlock.
- O método IMFFieldOfUseMFTUnlock::Unlock usa um ponteiro para a interface IUnknown do MFT.
- No método Desbloquear, o aplicativo executa o handshake necessário, usando qualquer mecanismo definido pelo MFT. Esta etapa não é definida pela API do Media Foundation.
- Se o método Unlock for bem-sucedido, o MFT se desbloqueará.
O aplicativo especifica o ponteiro deIMFFieldOfUseMFTUnlock definindo o atributo MFT_FIELDOFUSE_UNLOCK_Attribute. Há várias maneiras diferentes de definir esse atributo, dependendo de como seu aplicativo cria o pipeline de decodificação ou codificação:
API | Como desbloquear campo-Of-Use |
---|---|
Leitor de origem | Se o aplicativo usar o o Leitor de Origem para decodificar um arquivo de mídia, defina o atributo MFT_FIELDOFUSE_UNLOCK_Attribute nos parâmetros de configuração. Consulte atributos de leitor de origem. |
Gravador de Coletor | Se o aplicativo usar 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 gravador do coletor. |
Transcódigo rápido | Se o aplicativo usar o recurso Transcode Rápido para criar uma topologia de codificação, defina o MFT_FIELDOFUSE_UNLOCK_Attribute ao chamar IMFTranscodeProfile::SetContainerAttributes. Para obter mais informações sobre o recurso Transcode Rápido, consulte da API transcode. |
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 o aplicativo enumerar diretamente os decodificadores ou codificadores que ele usará, defina o MFT_FIELDOFUSE_UNLOCK_Attribute nos ponteiros IMFActivate retornados pela funçãoMFTEnumEx. Defina o atributo antes de chamar IMFActivate::ActivateObject para criar o MFT. O objeto de ativação chama IMFFieldOfUseMFTUnlock::Unlock ao criar o MFT. |
O diagrama a seguir mostra a relação entre objetos de ativação MFT e a interfaceIMFFieldOfUseMFTUnlock.
Tópicos relacionados