DrmForwardContentToDeviceObject 함수(drmk.h)

함수는 DrmForwardContentToDeviceObject 호출자가 보호된 콘텐츠를 전달하려는 디바이스를 나타내는 디바이스 개체를 허용합니다. 함수는 디바이스를 인증하고 시스템에서 보호된 콘텐츠에 할당한 콘텐츠 ID 및 DRM 권한을 보냅니다.

구문

NTSTATUS DrmForwardContentToDeviceObject(
  [in]           ULONG        ContentId,
  [in, optional] PVOID        Reserved,
  [in]           PCDRMFORWARD DrmForward
);

매개 변수

[in] ContentId

DRM 콘텐츠 ID를 지정합니다. 이 매개 변수는 보호된 KS 오디오 스트림을 식별합니다.

[in, optional] Reserved

다음에 사용하도록 예약됩니다. NULL로 설정합니다.

[in] DrmForward

대상 디바이스와 해당 디바이스의 KS 오디오 핀을 각각 식별하는 디바이스 개체 및 파일 개체를 지정하는 DRMFORWARD 구조체에 대한 포인터입니다. 구조체에는 KSPROPERTY_DRMAUDIOSTREAM_CONTENTIDset-property 요청이 디바이스에 전달하는 컨텍스트 값도 포함됩니다.

반환 값

DrmForwardContentToDeviceObject 는 호출에 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 적절한 오류 코드를 반환합니다.

설명

보호된 콘텐츠가 데이터 경로를 통과하도록 허용하기 전에 시스템은 데이터 경로가 안전한지 확인합니다. 이를 위해 시스템은 데이터 경로의 업스트림 끝에서 시작하여 다운스트림으로 이동하는 데이터 경로의 각 모듈을 인증합니다. 각 모듈이 인증될 때 해당 모듈은 인증될 수 있도록 데이터 경로의 다음 모듈에 대한 시스템 정보를 제공합니다. 성공적으로 인증하려면 모듈의 이진 파일을 DRM 규격으로 서명해야 합니다.

데이터 경로의 인접한 두 모듈은 여러 가지 방법 중 하나로 서로 통신할 수 있습니다. 업스트림 모듈이 IoCallDriver를 통해 다운스트림 모듈을 호출하는 경우 다운스트림 모듈은 WDM 드라이버의 일부입니다. 이 경우 업스트림 모듈은 함수를 DrmForwardContentToDeviceObject 호출하여 다운스트림 모듈을 나타내는 디바이스 개체를 시스템에 제공합니다. (두 모듈이 다운스트림 모듈의 COM 인터페이스 또는 콘텐츠 처리기를 통해 통신하는 경우 업스트림 모듈은 DrmForwardContentToInterface 또는 DrmAddContentHandlers를 대신 호출합니다.)

호출자는 DrmForward가 가리키는 DRMFORWARD 구조체의 DeviceObject, FileObjectContext 멤버를 채웁니다. DrmForwardContentToDeviceObject 는 다음과 같이 이러한 값을 사용합니다.

  • DeviceObject 는 드라이버(다운스트림 모듈)를 나타내는 디바이스 개체를 지정합니다. DrmForwardContentToDeviceObject 는 디바이스 개체를 사용하여 드라이버를 인증합니다. 성공하면 함수는 디바이스의 KS 핀에 set-property 요청을 전송하여 디바이스의 KSPROPERTY_DRMAUDIOSTREAM_CONTENTID 속성을 설정합니다.
  • FileObject 는 속성 요청을 보내는 KS 핀 DrmForwardContentToDeviceObject 을 지정합니다.
  • 컨텍스트 는 호출자가 속성 요청을 통해 드라이버에 전달하는 컨텍스트 값을 지정합니다. DrmForwardContentToDeviceObject 는 컨텍스트 값을 요청의 속성 설명자에 복사합니다. 컨텍스트 값은 일반적으로 호출자와 드라이버가 이해하는 일부 사용자 지정 형식의 데이터를 포함하는 버퍼에 대한 포인터입니다. 규칙에 따라 다운스트림 모듈이 KS 필터인 경우 Context 멤버는 함수가 속성 요청을 보내는 KS 핀을 지정하는 DrmForwardContentToDeviceObject 파일 개체를 가리킵니다. 즉, Context 멤버는 FileObject 멤버와 동일한 파일 개체를 가리킵니다. USB 오디오 드라이버는 Context 매개 변수를 USBD_PIPE_HANDLE 값으로 설정해야 합니다.
속성 요청에는 ContentId 매개 변수의 DRM 콘텐츠 ID와 해당 콘텐츠 ID에 속하는 DRM 콘텐츠 권한도 포함됩니다. DrmForwardContentToDeviceObject 는 이러한 값을 요청의 속성 값에 복사합니다. DrmForwardContentToDeviceObject 는 반환 후 디바이스 개체를 더 이상 사용하지 않습니다.

DrmForwardContentToDeviceObjectPcForwardContentToDeviceObjectIDrmPort2::ForwardContentToDeviceObject와 동일한 함수를 수행합니다. 자세한 내용은 DRM 함수 및 인터페이스를 참조하세요.

KSPROPERTY_DRMAUDIOSTREAM_CONTENTID 속성은 DRM 콘텐츠 ID 및 DRM 콘텐츠 권한을 KS 오디오 핀에 할당합니다.

사용량 요약 테이블

Get Set 대상 속성 설명자 형식 속성 값 형식
아니요 Pin

KSP_DRMAUDIOSTREAM_CONTENTID

KSDRMAUDIOSTREAM_CONTENTID

 

속성 값(작업 데이터)은 스트림의 DRM 콘텐츠 ID 및 DRM 콘텐츠 권한을 지정하는 KSDRMAUDIOSTREAM_CONTENTID 구조입니다.

반환 값

KSPROPERTY_DRMAUDIOSTREAM_CONTENTID 속성 요청은 다음 표와 같이 KS 필터가 지정된 DRM 콘텐츠 권한을 적용할 수 있는지 여부를 나타내는 상태 코드를 반환합니다.
상태 코드 의미
STATUS_SUCCESS KS 오디오 필터는 지정된 DRM 콘텐츠 권한을 적용합니다.
STATUS_NOT_IMPLEMENTED KS 필터는 지정된 DRM 콘텐츠 권한을 적용할 수 없습니다.
 

DrmForwardContentToDeviceObject 함수는 이 속성을 사용하여 속성 요청의 대상인 KS 핀을 입력하는 오디오 스트림에 대한 DRM 콘텐츠 ID 및 콘텐츠 권한을 설정합니다.

KS 오디오 필터는 이 속성 요청을 동기적으로 처리합니다. 요청이 STATUS_SUCCESS 반환하는 경우 대상 KS 오디오 핀의 모든 다운스트림 KS 오디오 노드(오디오 토폴로지 노드 참조)도 지정된 DRM 콘텐츠 ID 및 DRM 콘텐츠 권한으로 성공적으로 구성되었습니다. (다운스트림 노드는 오디오 핀을 통해 흐르는 오디오 콘텐츠에 대한 직접 또는 간접 싱크입니다.)

DRM 시스템은 KS 오디오 핀을 나타내는 파일 개체의 수명 동안 언제든지 이 속성을 설정할 수 있습니다. 요청이 성공하지 못하면 이전에 설정한 DRM 콘텐츠 ID 및 DRM 콘텐츠 권한이 KS 오디오 스트림에 계속 적용됩니다.

KSPROPERTY_DRMAUDIOSTREAM_CONTENTID 속성의 처리기는 속성 요청 IRP가 커널 모드에서 시작되는지 확인해야 합니다(즉, IRP의 RequestorMode 필드가 KernelMode와 같은지 확인). IRP가 사용자 모드에서 시작된 경우 처리기는 IRP에 실패하고 상태 코드 INVALID_DEVICE_REQUEST 반환해야 합니다.

DrmForwardContentToDeviceObjectDrmk.sys DRMK 시스템 드라이버의 진입점입니다. DRMK는 IRQL PASSIVE_LEVEL KSPROPERTY_DRMAUDIOSTREAM_CONTENTID 속성에 대한 IOCTL_KS_PROPERTY 요청을 보냅니다.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 drmk.h(Drmk.h 포함)
라이브러리 Drmk.lib
IRQL PASSIVE_LEVEL

추가 정보

DRMFORWARD

DrmAddContentHandlers

DrmForwardContentToInterface

IDrmPort2::ForwardContentToDeviceObject

IoCallDriver

KSPROPERTY_DRMAUDIOSTREAM_CONTENTID

PcForwardContentToDeviceObject