HdcpSession Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ermöglicht Apps das Festlegen und Abfragen des aktuellen Zustands von HDCP (Digital Content Protection) mit hoher Bandbreite zwischen Grafikhardware und Anzeige.
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
- Vererbung
- Attribute
- Implementiert
Windows-Anforderungen
Gerätefamilie |
Windows 10 Anniversary Edition (eingeführt in 10.0.14393.0)
|
API contract |
Windows.Foundation.UniversalApiContract (eingeführt in v3.0)
|
Beispiele
Im folgenden Beispiel wird HDCP festgelegt und dann reagiert, wenn es abgeschlossen ist.
Zunächst machen wir einige Deklarationen:
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);
};
}
Hinweise
Möglicherweise möchten Sie HDCP für Ihre App aktivieren, obwohl Sie weder die Media Core-Medienpipeline-APIs auf niedriger Ebene für OPM noch PlayReady DRM verwenden.
Verschiedene ISVs (unabhängige Softwarehersteller) benötigen möglicherweise unterschiedliche Schutzebenen. Ein ISV mit einer gesetzlichen Anforderung für "simple In-Transit Protection" kann HTTPS mit Authentifizierung für Streaming und HDCP für den Anzeigeausgabeschutz verwenden. Andere ISVs erstellen anspruchsvolle Pipelines und erfordern eine direkte Steuerung von HDCP aus diesen Pipelines. Sie können für einige Inhalte die strengere HDCP2-Richtlinie erzwingen, für andere Inhalte jedoch nicht.
ISVs möchten möglicherweise den HDCP-Zustand festlegen und überprüfen, ob er eingerichtet wurde. Wenn das System hdcp nicht einrichten kann, kann es sich für die Implementierung einer Geschäftslogik entscheiden, die die Bitrate oder Auflösung einschränkt oder gar nicht wiedergegeben wird. Sie erstellen ihre Geschäftslogik basierend auf ihren gesetzlichen Verpflichtungen.
Sobald die Wiedergabe der App abgeschlossen ist, die HDCP-geschützt sein muss, kann sie wieder deaktiviert werden (z. B. für Trailer oder als Teil eines sauber Exits).
Die HdcpSession-APIs sind für alle oben genannten Szenarien geeignet, sodass Sie die HDCP-Einstellungen Ihrer App an Ihre speziellen Anforderungen anpassen können.
Konstruktoren
HdcpSession() |
Initialisiert eine neue instance der HdcpSession-Klasse. |
Methoden
Close() |
Schließt die HdcpSession-instance. |
Dispose() |
Führt anwendungsspezifische Aufgaben durch, die mit der Freigabe, der Zurückgabe oder dem Zurücksetzen von nicht verwalteten Ressourcen zusammenhängen. |
GetEffectiveProtection() |
Gibt den effektiven Schutz der HdcpSession-instance zurück. |
IsEffectiveProtectionAtLeast(HdcpProtection) |
Überprüft, ob der effektive Schutz der HdcpSession-instance mindestens dem angegebenen HdcpProtection-Wert entspricht. |
SetDesiredMinProtectionAsync(HdcpProtection) |
Versucht asynchron, den Schutz der HdcpSession-instance mit der angegebenen Schutzebene festzulegen. |
Ereignisse
ProtectionChanged |
Wird ausgelöst, wenn sich die Schutzebene der HdcpSession-instance ändert. |