HdcpSession Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- 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 . |