다음을 통해 공유


애플리케이션에서 보호된 콘텐츠 처리

[Windows Media DRM 기능은 더 이상 사용되지 않으며 사용해서는 안 됩니다. 대신 Microsoft PlayReady 사용합니다.]

DRM으로 보호되는 콘텐츠를 처리하려면 애플리케이션에 전송 인증서가 있어야 합니다. 이 인증서를 가져올 위치를 알아보려면 개발 도구를 참조하세요. 보호되지 않는 콘텐츠를 처리하기 위해 애플리케이션 인증에 설명된 대로 더미 인증서를 사용할 수 있습니다.

디바이스를 사용하기 전에 애플리케이션은 디바이스가 이식 가능한 디바이스용 Windows Media DRM 10을 지원하는지 여부와 그렇다면 DRM 구성 요소가 최신 상태인지 확인해야 합니다. (현재는 보안 클록이 올바르고 디바이스가 올바르게 개별화되었음을 의미합니다.) 디바이스가 이 버전의 DRM을 지원하지 않거나 업데이트할 수 없는 경우 여전히 디바이스로 파일을 보낼 수 있지만 라이선스 버전에 따라 재생할 수 없을 수 있습니다.

참고

디바이스의 개별화는 현재 지원되지 않습니다.

 

애플리케이션이 Windows Media Format SDK 메서드에 연결되는 경우 Windows Media Format 라이브러리 WMStubDRM.lib에 연결해야 합니다. DRM으로 보호되는 콘텐츠에서 Windows Media Format 메서드를 호출하는 방법에 대한 자세한 내용은 Windows Media Format SDK 설명서의 "DRM 지원 사용"을 참조하세요. Mssachlp.lib 및 WMStubDRM.lib 둘 다에 연결하는 데 문제가 있습니다. 이 내용은 MSDN의 KB 문서 890079 설명합니다.

다음 C++ 코드 예제에서는 디바이스가 Windows Media DRM 10 디바이스인지 여부와 해당 시계가 최신 상태인지 확인합니다.

HRESULT IsDRMClockUpToDate()

{
    HRESULT hr = S_OK;

    // Create the DRM handler class.
    CComPtr<IWMDRMDeviceApp> pDRM;
    hr = pDRM.CoCreateInstance(CLSID_WMDRMDeviceApp, 0, CLSCTX_ALL);

    // Find out first if the device is a WMDRM 10 device, and if so,
    // whether it requires clock updates.
    DWORD status = 0;
    hr = pDRM->QueryDeviceStatus(pDevice, &status);

    if (FAILED(hr)
       || (!(WMDRM_DEVICE_ISWMDRM & status)) // Device is not WMDRM 10. 
       || (status & WMDRM_DEVICE_REVOKED))   // Device is revoked.
    {
        return E_FAIL;
    }
    else if (status & WMDRM_DEVICE_NEEDCLOCK || 
        status & WMDRM_DEVICE_REFRESHCLOCK)
    {
        // Attempt update. See following example.
        hr = UpdateDRM(status);
    }
    return hr;
}

디바이스가 휴대용 디바이스에 대해 Windows Media DRM 10을 지원하고 업데이트해야 하는 경우(즉, 이전 예제의 상태 값이 단순히 WMDM_DEVICE_ISWMDRM 않은 경우) 애플리케이션은 IWMDRMDeviceApp::AcquireDeviceData를 호출하고 필요한 업데이트를 수행하기 위해 상태 값을 전달해야 합니다. 데스크톱 컴퓨터는 인터넷에 연결되어 있어야 합니다.

다음 C++ 예제 함수는 DRM 디바이스를 업데이트하려고 시도합니다.

HRESULT UpdateDRM(DWORD status)
{
    HRESULT hr = S_OK;
    hr = pDRM->AcquireDeviceData(pDevice, this, status, &result);
    if (hr != S_OK || result != 0)
    {
            return E_FAIL;
    }
    return hr;
}

Windows Media 장치 관리자 애플리케이션 만들기

보호된 콘텐츠 처리