Поделиться через


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

Комментарии

Возможно, вы захотите включить HDCP для своего приложения, даже если вы не используете ни НИЗКОуровневые API конвейера мультимедиа Media Core для OPM, ни PlayReady DRM.

Разные независимые поставщики программного обеспечения (независимые поставщики программного обеспечения) могут нуждаться в разных уровнях защиты. Поставщик программного обеспечения с юридическим требованием для "простой защиты In-Transit" может использовать ПРОТОКОЛ HTTPS с проверкой подлинности для потоковой передачи и HDCP для защиты вывода дисплея. Другие поставщики программного обеспечения создают сложные конвейеры и требуют прямого управления HDCP из этих конвейеров. Они могут применять более строгие требования HDCP2 для некоторых содержимого, но не требовать его для другого содержимого.

Независимым поставщикам программного обеспечения может потребоваться задать состояние HDCP и проверка, что оно было установлено. Если системе не удается установить HDCP, они могут реализовать бизнес-логику, которая будет ограничивать скорость или разрешение или вообще не воспроизводиться. Они строят свою бизнес-логику на основе своих юридических обязательств.

После завершения воспроизведения приложения, которое должно быть защищено HDCP, оно может отключить его (например, для трейлеров или в рамках чистого выхода).

API HdcpSession соответствуют всем описанным выше сценариям, позволяя настроить параметры HDCP приложения в соответствии с вашими потребностями.

Конструкторы

HdcpSession()

Инициализирует новый экземпляр класса HdcpSession .

Методы

Close()

Закрывает экземпляр HdcpSession .

Dispose()

Выполняет определяемые приложением задачи, связанные с удалением, высвобождением или сбросом неуправляемых ресурсов.

GetEffectiveProtection()

Возвращает эффективную защиту экземпляра HdcpSession .

IsEffectiveProtectionAtLeast(HdcpProtection)

Проверяет, равна ли эффективная защита экземпляра HdcpSession по крайней мере заданному значению HdcpProtection .

SetDesiredMinProtectionAsync(HdcpProtection)

Асинхронно пытается задать защиту экземпляра HdcpSession с заданным уровнем защиты.

События

ProtectionChanged

Срабатывает при изменении уровня защиты экземпляра HdcpSession .

Применяется к

См. также раздел