HdcpSession クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
アプリがグラフィックス ハードウェアとディスプレイの間の高帯域幅デジタル コンテンツ保護 (HDCP) の現在の状態を設定および照会できるようにします。
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
- 継承
- 属性
- 実装
Windows の要件
デバイス ファミリ |
Windows 10 Anniversary Edition (10.0.14393.0 で導入)
|
API contract |
Windows.Foundation.UniversalApiContract (v3.0 で導入)
|
例
次の例では、HDCP を設定し、完了したときに応答します。
まず、いくつかの宣言を行います。
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);
};
}
注釈
OPM 用の低レベルの Media Core Media Pipeline API も PlayReady DRM も使用していない場合でも、アプリの HDCP を有効にすることもできます。
ISV (独立系ソフトウェア ベンダー) によって、さまざまなレベルの保護が必要になる場合があります。 "簡易 In-Transit 保護" の法的要件を持つ ISV では、ストリーミング用の認証付き HTTPS と、ディスプレイ出力保護用の HDCP を使用する場合があります。 他の ISV は高度なパイプラインを構築し、それらのパイプライン内から HDCP を直接制御する必要があります。 一部のコンテンツではより厳密な HDCP2 を適用できますが、他のコンテンツでは必要ありません。
ISV は HDCP 状態を設定し、確立されたことをチェックできます。 システムが HDCP を確立できない場合は、ビットレートまたは解像度を制限するか、まったく再生しないビジネス ロジックを実装することを選択できます。 法的義務に基づいてビジネス ロジックを構築します。
HDCP で保護する必要がある再生でアプリが完了したら、(トレーラーの場合や、クリーン終了の一部として) オフにすることを選択できます。
HdcpSession API は上記のすべてのシナリオに対応しているため、特定のニーズに合わせてアプリの HDCP 設定を調整できます。
コンストラクター
HdcpSession() |
HdcpSession クラスの新しいインスタンスを初期化します。 |
メソッド
Close() |
HdcpSession インスタンスを閉じます。 |
Dispose() |
アンマネージ リソースの解放またはリセットに関連付けられているアプリケーション定義のタスクを実行します。 |
GetEffectiveProtection() |
HdcpSession インスタンスの有効な保護を返します。 |
IsEffectiveProtectionAtLeast(HdcpProtection) |
HdcpSession インスタンスの有効な保護が、指定された HdcpProtection 値と少なくとも等しいかどうかを確認します。 |
SetDesiredMinProtectionAsync(HdcpProtection) |
特定の保護レベルを使用して 、HdcpSession インスタンスの保護を非同期的に設定しようとします。 |
イベント
ProtectionChanged |
HdcpSession インスタンスの保護レベルが変更されたときに発生します。 |