콘텐츠 ID 및 콘텐츠 권한

콘텐츠 ID(식별자)는 DRMK 시스템 드라이버 가 런타임에 특정 핀으로 공급되는 오디오 데이터 스트림에서 DRM으로 보호되는 콘텐츠를 식별하기 위해 생성하는 ULONG 값입니다.

콘텐츠 권한은 DRM으로 보호된 콘텐츠를 재생하고 복사하기 위해 콘텐츠 공급자가 사용자에게 부여한 권한을 디지털로 표현한 것입니다. 콘텐츠 권한은 DRMK가 오디오 드라이버에 전달하는 DRMRIGHTS 구조체의 형태로 지정됩니다.

DRMRIGHTS에는 DigitalOutputDisableCopyProtect의 두 가지 플래그가 포함되어 있습니다. DigitalOutputDisable 플래그가 설정된 경우 드라이버는 외부 디바이스에 연결하는 디지털 출력을 사용하지 않도록 설정해야 합니다(예: S/PDIF 커넥터를 통해). CopyProtect 플래그가 설정된 경우 드라이버는 보안 콘텐츠의 영구 복사본을 디스크 또는 다른 형태의 비휘발성 스토리지에 저장할 수 있는 기능을 사용하지 않도록 설정해야 합니다. 예를 들어 일반적인 오디오 하드웨어를 사용하면 재생 신호를 캡처 채널을 통해 라우팅할 수 있습니다. 이 신호가 디지털 형식인 경우 캡처된 신호는 입력 신호의 완벽한 디지털 복사본일 수 있습니다. 재생 조합에 CopyProtect 플래그가 설정된 모든 스트림의 데이터가 포함된 경우 드라이버는 재생 캡처 경로를 음소거해야 합니다.

DRM 규격 오디오 드라이버는 오디오 데이터를 렌더링하기 위해 싱크 핀을 노출하는 WaveCyclic 및 WavePci 미니포트 드라이버 개체에서 IDrmAudioStream 인터페이스를 지원해야 합니다. 드라이버에서 IDrmAudioStream 개체에 대한 참조를 얻기 위해 DRMK는 핀에서 QueryInterface 메서드를 호출합니다. 핀에는 IMiniportWaveCyclicStream 또는 IMiniportWavePciStream 형식의 인터페이스가 있습니다. IDrmAudioStream 인터페이스는 세 가지 IUnknown 메서드 외에 하나의 메서드인 IDrmAudioStream::SetContentId만 지원합니다. DRMK가 SetContentId를 호출하면 드라이버가 핀의 데이터 스트림과 연결하는 콘텐츠 ID 및 콘텐츠 권한을 전달합니다.

waveCyclic 또는 WavePci 미니포트 드라이버는 Drmk.sys DRM 함수를 직접 호출하는 대신 IDrmPort2 인터페이스를 통해 DRM 함수에 액세스할 수 있습니다(IDrmPort2 는 기본 클래스 IDrmPort에서 파생됨). Microsoft Windows XP 이상에서는 WaveCyclic 및 WavePci 포트 드라이버가 IDrmPort2를 지원합니다. 미니포트 드라이버는 REFIID IID_IDrmPort2 사용하여 포트 개체의 QueryInterface 메서드를 호출하여 포트 드라이버의 IDrmPort2 인터페이스에 대한 참조를 가져옵니다.

일부 오디오 드라이버는 하드웨어 혼합을 지원하며 여러 입력 데이터 스트림을 동시에 처리할 수 있습니다. 이 유형의 드라이버는 개별 스트림의 콘텐츠 ID와 모든 스트림의 복합 콘텐츠 권한을 모두 추적해야 합니다. 드라이버는 IDrmPort::CreateContentMixed 를 호출하여 혼합 스트림에 대한 복합 권한을 확인하고 해당 스트림을 식별하는 콘텐츠 ID를 만듭니다. 드라이버가 콘텐츠 ID 사용을 마치면 IDrmPort::D estroyContent 를 호출하여 콘텐츠 ID를 삭제해야 합니다.

믹서에 입력 스트림이 추가되거나 제거될 때마다 드라이버는 이전 조합의 콘텐츠 ID를 삭제하고 새 조합에 대한 새 콘텐츠 ID를 만들어야 합니다. 이전 콘텐츠 ID를 삭제하기 전에 드라이버는 먼저 이전 콘텐츠 ID를 전달한 모든 스트림에 새 콘텐츠 ID를 성공적으로 전달해야 합니다. 자세한 내용은 DRM 콘텐츠 ID 전달을 참조하세요.