HdcpSession Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
- 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. |