Freigeben über


HdcpSession Klasse

Definition

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
Object Platform::Object IInspectable HdcpSession
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.

Gilt für:

Weitere Informationen