다음을 통해 공유


Windows Media DRM-Enabled 애플리케이션에 대한 요구 사항

Windows Media DRM(디지털 권한 관리) 사용 애플리케이션을 만들려면 이 문서의 애플리케이션 개발 요구 사항 일반 섹션 에 설명된 헤더 및 라이브러리가 있어야 합니다. 또한 애플리케이션은 디바이스를 열 때 클라이언트 정보에 추가 속성을 제공해야 합니다.

Windows Media DRM으로 보호되는 콘텐츠 전송을 사용하도록 설정하는 데 필요한 두 가지 추가 속성은 다음 표에 설명되어 있습니다.

속성 설명
WPD_CLIENT_WMDRM_APPLICATION_PRIVATE_KEY 애플리케이션의 프라이빗 키를 지정합니다.
WPD_CLIENT_WMDRM_APPLICATION_CERTIFICATE 애플리케이션의 인증서를 지정합니다.

 

IPortableDevice::Open 메서드를 사용하여 디바이스를 열 때 이러한 속성을 애플리케이션의 클라이언트 정보에 제공해야 합니다. 이러한 속성이 제공되면 WPD API는 보호된 콘텐츠 전송을 허용합니다. 애플리케이션에서 인증서 및 프라이빗 키를 제공한 경우 API는 보호된 WMDRM 콘텐츠를 디바이스로 전송하는 보안 채널을 만듭니다.

Windows Media DRM을 지원하는 Windows 기반 애플리케이션을 만들고 배포하는 방법에 대한 자세한 내용은 "Windows 기반 애플리케이션 라이선스"를 참조하세요.

콘텐츠 전송

WMDRM 보호된 콘텐츠를 전송하려면 IPortableDeviceContent::CreateObjectWithPropertiesAndData를 사용합니다. 이 메서드는 추가 옵션 없이 보호된 콘텐츠와 지우기 콘텐츠 모두에 사용할 수 있습니다. WPD API는 콘텐츠 보호 여부에 따라 보호된 채널 또는 지우기 채널을 자동으로 선택합니다. WMDRM 보안 콘텐츠 공급자와 인터페이스하여 WMDRM 라이선스를 처리합니다.

알려진 지우기 콘텐츠 전송

애플리케이션에서 보호된 콘텐츠를 처리하도록 설정했지만 특정 파일이 보호되지 않는다는 것을 알고 있는 경우 IPortableDeviceContent::CreateObjectWithPropertiesAndData를 호출할 때 입력 IPortableDeviceValues에서 WPD_API_OPTION_USE_CLEAR_DATA_STREAM 옵션을 TRUE로 설정하여 DRM 처리를 건너뛰도록 WPD에 지시할 수 있습니다.

IWMDRMDeviceApp을 사용하여 계량 작업에 액세스

WPD는 라이선스 업데이트 및 계량 데이터 검색을 위해 IWMDRMDeviceApp API에 액세스하는 메커니즘을 제공합니다. WPD를 통해 이 API에 액세스하려면 IPortableDeviceContent::CreateObjectWithPropertiesAndData에서 반환된 IStream에서 IID_IWMDRMDeviceAppQueryInterface를 호출합니다. 이 IWMDRMDeviceAppIStream을 가져온 특정 콘텐츠가 아니라 WMDRM 호환 디바이스에 대한 IPortableDevice 연결에 연결되어 instance. WPD는 내부적으로 계량 API를 래핑하고 애플리케이션에서 액세스할 수 있도록 합니다. 애플리케이션은 IWMDMDevice* 매개 변수에 WMDRMDEVICEAPP_USE_WPD_DEVICE_PTR 상수를 사용해야 합니다.

다음 코드 조각은 이를 보여 줍니다.

IStream*               pDataStream = NULL;

IWMDRMDeviceApp*       pWMDRMApp   = NULL;

  

// ... Initialization 

 

hr = pPortableDeviceContent->CreateObjectWithPropertiesAndData(pValues,

                              &pDataStream,

                              &dwOptimalWriteBufferSize,

                              NULL);

 

// ... Transfer the protected WMDRM content 

pDataStream->Write(pData, cbData, &cbWritten);

 

pDataStream->Commit(0);

 

hr = pDataStream->QueryInterface(IID_IWMDRMDeviceApp, 

                                 (void**)&pWMDRMApp);

 

if (SUCCEEDED(hr))

{

   DWORD dwStatus = 0;

 

   // Call metering operations on the current device using the WPD device pointer

   hr = pWMDRMApp->QueryDeviceStatus((IWMDMDevice *)WMDRMDEVICEAPP_USE_WPD_DEVICE_PTR, 

                                     &dwStatus);

}

애플리케이션 프라이빗 키 및 인증서와 동일한 필수 구성 요소도 여기에 적용됩니다. 키/인증서가 잘못되었거나 WMDRM 시스템이 초기화되지 않으면 QueryInferface 호출이 실패합니다.

IStream 포인터에서 IWMDRMDeviceApp 인터페이스를 획득하는 위의 방법은 계량 및 라이선스 동기화 작업을 계속하기 전에 애플리케이션이 이미 이전에 보호된 콘텐츠 전송을 수행하고 있는 경우 편리합니다.

IWMDRMDeviceApp에 액세스해야 하는 대부분의 애플리케이션에 대한 권장 사항은 IWMDRMDeviceApp을 직접 초기화하는 것입니다. 이 경우 디바이스 계량 및 라이선스 동기화를 수행하기 위해 애플리케이션이 보호된 콘텐츠를 전송하거나 전송 인터페이스를 보유할 필요가 없기 때문에 직접 IWMDRMDeviceApp을 초기화하는 것이 좋습니다. 이 방법을 사용하려면 WMDM(Windows Media 장치 관리자) API를 사용해야 합니다. 자세한 내용 및 샘플 코드는 WHDC 사이트의 WPD 애플리케이션 백서에서 WMDRM API 액세스를 참조하세요.

Windows 이식 가능한 장치