Partager via


HdcpSession Classe

Définition

Permet aux applications de définir et d’interroger l’état actuel de la protection de contenu numérique à bande passante élevée (HDCP) entre le matériel graphique et l’affichage.

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
Héritage
Object Platform::Object IInspectable HdcpSession
Attributs
Implémente

Configuration requise pour Windows

Famille d’appareils
Windows 10 Anniversary Edition (introduit dans 10.0.14393.0)
API contract
Windows.Foundation.UniversalApiContract (introduit dans v3.0)

Exemples

L’exemple suivant définit HDCP, puis réagit quand il est terminé.

Tout d’abord, nous faisons quelques déclarations :

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

Remarques

Vous souhaiterez peut-être activer HDCP pour votre application, même si vous n’utilisez ni les API Media Core Media Pipeline de bas niveau pour OPM, ni PlayReady DRM.

Différents éditeurs de logiciels indépendants peuvent avoir besoin de différents niveaux de protection. Un éditeur de logiciels indépendants avec une exigence légale pour la « protection In-Transit simple » peut utiliser HTTPS avec Authentification pour la diffusion en continu et HDCP pour la protection de sortie d’affichage. D’autres éditeurs de logiciels indépendants créent des pipelines sophistiqués et nécessitent un contrôle direct de HDCP à partir de ces pipelines. Ils peuvent appliquer le HDCP2 plus strict pour certains contenus, mais pas l’exiger pour d’autres contenus.

Les éditeurs de logiciels indépendants peuvent souhaiter définir l’état HDCP et case activée qu’il a été établi. Si le système ne parvient pas à établir HDCP, il peut choisir d’implémenter une logique métier qui limitera la vitesse de transmission ou la résolution, ou ne jouera pas du tout. Ils construisent leur logique métier en fonction de leurs obligations légales.

Une fois que l’application a terminé la lecture qui doit être protégée par HDCP, ils peuvent choisir de la désactiver (pour les bandes-annonces, par exemple, ou dans le cadre d’une sortie propre).

Les API HdcpSession prennent en charge tous les scénarios ci-dessus, ce qui vous permet d’ajuster les paramètres HDCP de votre application en fonction de vos besoins particuliers.

Constructeurs

HdcpSession()

Initialise une nouvelle instance de la classe HdcpSession.

Méthodes

Close()

Ferme le instance HdcpSession.

Dispose()

Exécute les tâches définies par l'application associées à la libération ou à la redéfinition des ressources non managées.

GetEffectiveProtection()

Retourne la protection effective de l’instance HdcpSession.

IsEffectiveProtectionAtLeast(HdcpProtection)

Vérifie si la protection effective du instance HdcpSession est au moins égale à la valeur HdcpProtection donnée.

SetDesiredMinProtectionAsync(HdcpProtection)

Tente de manière asynchrone de définir la protection de l’instance HdcpSession avec le niveau de protection donné.

Événements

ProtectionChanged

Se déclenche lorsque le niveau de protection de la instance HdcpSession change.

S’applique à

Voir aussi