HdcpSession Classe
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
- Attributs
- Implémente
Famille d’appareils |
Windows 10 Anniversary Edition (introduit dans 10.0.14393.0)
|
API contract |
Windows.Foundation.UniversalApiContract (introduit dans v3.0)
|
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);
};
}
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.
Hdcp |
Initialise une nouvelle instance de la classe HdcpSession. |
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. |
Get |
Retourne la protection effective de l’instance HdcpSession. |
Is |
Vérifie si la protection effective du instance HdcpSession est au moins égale à la valeur HdcpProtection donnée. |
Set |
Tente de manière asynchrone de définir la protection de l’instance HdcpSession avec le niveau de protection donné. |
Protection |
Se déclenche lorsque le niveau de protection de la instance HdcpSession change. |