HdcpSession Clase

Definición

Permite que las aplicaciones establezcan y consulten el estado actual de Protección de contenido digital de ancho de banda alto (HDCP) entre el hardware gráfico y la pantalla.

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
Herencia
Object Platform::Object IInspectable HdcpSession
Atributos
Implementaciones

Requisitos de Windows

Familia de dispositivos
Windows 10 Anniversary Edition (se introdujo en la versión 10.0.14393.0)
API contract
Windows.Foundation.UniversalApiContract (se introdujo en la versión v3.0)

Ejemplos

En el ejemplo siguiente se establece HDCP y, a continuación, se reacciona cuando se completa.

En primer lugar, realizamos algunas declaraciones:

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);
    };
}

Comentarios

Es posible que quiera activar HDCP para la aplicación, aunque no use ni las API de canalización multimedia media de media core de bajo nivel para OPM ni DRM de PlayReady.

Diferentes ISV (proveedores de software independientes) pueden necesitar distintos niveles de protección. Un ISV con un requisito legal para "protección de In-Transit simple" podría usar HTTPS con autenticación para streaming y HDCP para la protección de salida de pantalla. Otros ISV crean canalizaciones sofisticadas y requieren un control directo de HDCP desde esas canalizaciones. Pueden aplicar el HDCP2 más estricto para algún contenido, pero no requerirlo para otro contenido.

Es posible que los ISV quieran establecer el estado de HDCP y comprobar que se ha establecido. Si el sistema no puede establecer HDCP, puede optar por implementar lógica de negocios que restringirá la velocidad de bits o la resolución, o no jugará en absoluto. Crean su lógica de negocios en función de sus obligaciones legales.

Una vez que la aplicación se realiza con la reproducción que debe estar protegida con HDCP, puede optar por desactivarla (por ejemplo, para los finalizadores, o como parte de una salida limpia).

Las API de HdcpSession admiten todos los escenarios anteriores, lo que le permite ajustar la configuración de HDCP de la aplicación para satisfacer sus necesidades particulares.

Constructores

HdcpSession()

Inicializa una nueva instancia de la clase HdcpSession .

Métodos

Close()

Cierra la instancia de HdcpSession .

Dispose()

Realiza tareas definidas por la aplicación asociadas a la liberación o al restablecimiento de recursos no administrados.

GetEffectiveProtection()

Devuelve la protección efectiva de la instancia de HdcpSession .

IsEffectiveProtectionAtLeast(HdcpProtection)

Comprueba si la protección efectiva de la instancia de HdcpSession es al menos igual que el valor de HdcpProtection especificado.

SetDesiredMinProtectionAsync(HdcpProtection)

Intenta establecer de forma asincrónica la protección de la instancia de HdcpSession con el nivel de protección especificado.

Eventos

ProtectionChanged

Se desencadena cuando cambia el nivel de protección de la instancia de HdcpSession .

Se aplica a

Consulte también