HdcpSession Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
- 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 . |