HdcpSession 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
앱에서 그래픽 하드웨어와 디스플레이 간에 HDCP(High-Bandwidth Digital Content Protection)의 현재 상태를 설정하고 쿼리할 수 있습니다.
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 클래스의 새 instance 초기화합니다. |
메서드
Close() |
HdcpSession instance 닫습니다. |
Dispose() |
관리되지 않는 리소스의 확보, 해제 또는 다시 설정과 관련된 애플리케이션 정의 작업을 수행합니다. |
GetEffectiveProtection() |
HdcpSession instance 효과적인 보호를 반환합니다. |
IsEffectiveProtectionAtLeast(HdcpProtection) |
HdcpSession instance 유효한 보호가 지정된 HdcpProtection 값과 적어도 같은지 확인합니다. |
SetDesiredMinProtectionAsync(HdcpProtection) |
지정된 보호 수준으로 HdcpSession instance 보호를 비동기적으로 설정하려고 합니다. |
이벤트
ProtectionChanged |
HdcpSession instance 보호 수준이 변경되면 발생합니다. |