Bagikan melalui


HdcpSession Kelas

Definisi

Memungkinkan aplikasi untuk mengatur dan mengkueri status Perlindungan Konten Digital bandwidth Tinggi (HDCP) saat ini antara perangkat keras grafis dan tampilan.

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
Warisan
Object Platform::Object IInspectable HdcpSession
Atribut
Penerapan

Persyaratan Windows

Rangkaian perangkat
Windows 10 Anniversary Edition (diperkenalkan dalam 10.0.14393.0)
API contract
Windows.Foundation.UniversalApiContract (diperkenalkan dalam v3.0)

Contoh

Contoh berikut menetapkan HDCP lalu bereaksi ketika selesai.

Pertama, kami membuat beberapa deklarasi:

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

Keterangan

Anda mungkin ingin mengaktifkan HDCP untuk aplikasi Anda, meskipun Anda tidak menggunakan API Media Core Media Pipeline tingkat rendah untuk OPM, atau PlayReady DRM.

ISV yang berbeda (Vendor Perangkat Lunak Independen) mungkin memerlukan tingkat perlindungan yang berbeda. ISV dengan persyaratan hukum untuk "perlindungan In-Transit sederhana" mungkin menggunakan HTTPS dengan Auth untuk streaming dan HDCP untuk perlindungan output tampilan. ISV lain membangun alur canggih dan memerlukan kontrol langsung HDCP dari dalam alur tersebut. Mereka dapat memberlakukan HDCP2 yang lebih ketat untuk beberapa konten, tetapi tidak memerlukannya untuk konten lain.

ISV mungkin ingin mengatur status HDCP dan memeriksa apakah telah ditetapkan. Jika sistem tidak dapat membuat HDCP, mereka dapat memilih untuk menerapkan logika bisnis yang akan membatasi laju bit atau resolusi, atau tidak bermain sama sekali. Mereka membangun logika bisnis mereka berdasarkan kewajiban hukum mereka.

Setelah aplikasi selesai dengan pemutaran yang harus dilindungi HDCP, mereka dapat memilih untuk menonaktifkannya kembali (misalnya, untuk trailer, atau sebagai bagian dari pintu keluar yang bersih).

API HdcpSession mengakomodasi semua skenario di atas, memungkinkan Anda mengubah pengaturan HDCP aplikasi agar sesuai dengan kebutuhan khusus Anda.

Konstruktor

HdcpSession()

Menginisialisasi instans baru kelas HdcpSession .

Metode

Close()

Menutup instans HdcpSession .

Dispose()

Melakukan tugas yang ditentukan aplikasi yang terkait dengan membebaskan, merilis, atau mengatur ulang sumber daya yang tidak dikelola.

GetEffectiveProtection()

Mengembalikan perlindungan efektif dari instans HdcpSession .

IsEffectiveProtectionAtLeast(HdcpProtection)

Memeriksa apakah perlindungan efektif instans HdcpSession setidaknya sama dengan nilai HdcpProtection yang diberikan.

SetDesiredMinProtectionAsync(HdcpProtection)

Secara asinkron mencoba mengatur perlindungan instans HdcpSession dengan tingkat perlindungan yang diberikan.

Acara

ProtectionChanged

Diaktifkan saat tingkat perlindungan instans HdcpSession berubah.

Berlaku untuk

Lihat juga