次の方法で共有


HdcpSession クラス

定義

アプリがグラフィックス ハードウェアとディスプレイの間の高帯域幅デジタル コンテンツ保護 (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
継承
Object Platform::Object IInspectable HdcpSession
属性
実装

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 インスタンスの保護レベルが変更されたときに発生します。

適用対象

こちらもご覧ください