Compartilhar via


HdcpSession Classe

Definição

Permite que os aplicativos definam e consultem o estado atual da HDCP (Proteção de Conteúdo Digital) de alta largura de banda entre o hardware gráfico e a tela.

public ref class HdcpSession sealed : IClosable
/// [Windows.Foundation.Metadata.Activatable(196608, "Windows.Foundation.UniversalApiContract")]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 196608)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class HdcpSession final : IClosable
[Windows.Foundation.Metadata.Activatable(196608, "Windows.Foundation.UniversalApiContract")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 196608)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class HdcpSession : System.IDisposable
function HdcpSession()
Public NotInheritable Class HdcpSession
Implements IDisposable
Herança
Object Platform::Object IInspectable HdcpSession
Atributos
Implementações

Requisitos do Windows

Família de dispositivos
Windows 10 Anniversary Edition (introduzida na 10.0.14393.0)
API contract
Windows.Foundation.UniversalApiContract (introduzida na v3.0)

Exemplos

O exemplo a seguir define o HDCP e, em seguida, reage quando ele é concluído.

Primeiro, fazemos algumas declarações:

private HdcpProtection desiredHdcpProtection = HdcpProtection.OnWithTypeEnforcement;
private HdcpProtection currentHdcpProtection = HdcpProtection.On;
private bool outputIsProtected = false;
private HdcpSession hdcpSession;
private void SetHdcpProtection()
{
    hdcpSession = new HdcpSession();

    // Register an event to get notified when HDCP changes
    hdcpSession.ProtectionChanged += (HdcpSession sender, object eventArgs) =>
    {
        // In case we want to do something with the level
        HdcpProtection? protection = sender.GetEffectiveProtection();

        if (protection != null)
        {
            currentHdcpProtection = protection.Value;
        }
        else
        {
            // The current Hdcp protection level is pending... so treat it as though it's off altogether
            currentHdcpProtection = HdcpProtection.Off;
        }

        // Check the protection
        outputIsProtected = sender.IsEffectiveProtectionAtLeast(desiredHdcpProtection);
    };

    hdcpSession.SetDesiredMinProtectionAsync(desiredHdcpProtection).Completed = (asyncOperation, asyncStatus) =>
    {
        if (HdcpSetProtectionResult.Success != asyncOperation.GetResults())
        {
            // Handle the case where we failed to set the HDCP protection
            DebugTextBlock.Text = "ERROR! Something went wrong";
        }

        outputIsProtected = hdcpSession.IsEffectiveProtectionAtLeast(desiredHdcpProtection);
    };
}

Comentários

Talvez você queira ativar o HDCP para seu aplicativo, mesmo que não esteja usando as APIs de pipeline de mídia de baixo nível do Media Core para OPM nem o DRM do PlayReady.

IsVs diferentes (Fornecedores Independentes de Software) podem precisar de diferentes níveis de proteção. Um ISV com um requisito legal para "proteção de In-Transit simples" pode usar HTTPS com autenticação para streaming e HDCP para proteção de saída de exibição. Outros ISVs criam pipelines sofisticados e exigem controle direto do HDCP de dentro desses pipelines. Eles podem impor o HDCP2 mais estrito para algum conteúdo, mas não o exigem para outro conteúdo.

Os ISVs podem querer definir o estado do HDCP e marcar que ele foi estabelecido. Se o sistema não conseguir estabelecer o HDCP, ele poderá optar por implementar a lógica de negócios que restringirá a taxa de bits ou a resolução ou não será reproduzida. Eles criam sua lógica de negócios com base em suas obrigações legais.

Depois que o aplicativo terminar a reprodução que deve ser protegida por HDCP, ele poderá optar por desativá-lo novamente (para trailers, por exemplo, ou como parte de uma saída limpo).

As APIs hdcpSession acomodam todos os cenários acima, permitindo que você ajuste as configurações de HDCP do seu aplicativo para atender às suas necessidades específicas.

Construtores

HdcpSession()

Inicializa uma nova instância da classe HdcpSession .

Métodos

Close()

Fecha a instância do HdcpSession .

Dispose()

Realiza tarefas definidas pelo aplicativo associadas à liberação ou à redefinição de recursos não gerenciados.

GetEffectiveProtection()

Retorna a proteção efetiva da instância hdcpSession .

IsEffectiveProtectionAtLeast(HdcpProtection)

Verifica se a proteção efetiva da instância hdcpSession é pelo menos igual ao valor de HdcpProtection fornecido.

SetDesiredMinProtectionAsync(HdcpProtection)

Tenta de forma assíncrona definir a proteção da instância hdcpSession com o nível de proteção fornecido.

Eventos

ProtectionChanged

Aciona quando o nível de proteção da instância hdcpSession é alterado.

Aplica-se a

Confira também