Condividi tramite


HdcpSession Classe

Definizione

Consente alle app di impostare ed eseguire query sullo stato corrente di HDCP (High-Bandwidth Digital Content Protection) tra l'hardware grafico e la visualizzazione.

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
Ereditarietà
Object Platform::Object IInspectable HdcpSession
Attributi
Implementazioni

Requisiti Windows

Famiglia di dispositivi
Windows 10 Anniversary Edition (è stato introdotto in 10.0.14393.0)
API contract
Windows.Foundation.UniversalApiContract (è stato introdotto in v3.0)

Esempio

L'esempio seguente imposta HDCP e quindi reagisce al termine.

Prima di tutto, vengono rilasciate alcune dichiarazioni:

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

Commenti

È possibile attivare HDCP per l'app, anche se non si usano né le API Media Core Media Pipeline di basso livello per OPM, né PlayReady DRM.

Diversi ISV (fornitori di software indipendenti) potrebbero richiedere livelli di protezione diversi. Un ISV con un requisito legale per la "protezione In-Transit semplice" può usare HTTPS con l'autenticazione per lo streaming e HDCP per la protezione dell'output di visualizzazione. Altri ISV creano pipeline sofisticate e richiedono il controllo diretto di HDCP all'interno di tali pipeline. Possono applicare HDCP2 più restrittivo per alcuni contenuti, ma non richiederlo per altri contenuti.

Gli ISV potrebbero voler impostare lo stato HDCP e verificare che sia stato stabilito. Se il sistema non è in grado di stabilire HDCP, può scegliere di implementare la logica di business che vincola la velocità in bit o la risoluzione o non viene riprodotta affatto. Creano la logica di business in base ai loro obblighi legali.

Una volta completata la riproduzione dell'app che deve essere protetta da HDCP, possono scegliere di disattivarla (per trailer, ad esempio, o come parte di un'uscita pulita).

Le API HdcpSession supportano tutti gli scenari precedenti, consentendo di modificare le impostazioni HDCP dell'app in base alle esigenze specifiche.

Costruttori

HdcpSession()

Inizializza una nuova istanza della classe HdcpSession .

Metodi

Close()

Chiude l'istanza di HdcpSession .

Dispose()

Esegue attività definite dall'applicazione, come rilasciare o reimpostare risorse non gestite.

GetEffectiveProtection()

Restituisce la protezione effettiva dell'istanza hdcpSession .

IsEffectiveProtectionAtLeast(HdcpProtection)

Verifica se la protezione effettiva dell'istanza hdcpSession è almeno uguale al valore hdcpProtection specificato.

SetDesiredMinProtectionAsync(HdcpProtection)

Tenta in modo asincrono di impostare la protezione dell'istanza hdcpSession con il livello di protezione specificato.

Eventi

ProtectionChanged

Viene generato quando viene modificato il livello di protezione dell'istanza hdcpSession .

Si applica a

Vedi anche