다음을 통해 공유


IWMDRMDeviceApp::QueryDeviceStatus 메서드

QueryDeviceStatus 메서드는 디바이스에서 현재 DRM 상태 및 기능을 쿼리합니다.

구문

HRESULT QueryDeviceStatus(
  [in]  IWMDMDevice *pDevice,
  [out] DWORD       *pdwStatus
);

매개 변수

pDevice [in]

IWMDMDevice 개체에 대한 포인터입니다.

pdwStatus [out]

디바이스의 DRM 측면을 설명하는 다음 DWORD 값 중 0개 이상을 비트 OR과 결합합니다. 설명 부분을 참조하세요.

상태 Description
WMDRM_DEVICE_ISWMDRM 디바이스는 Windows Media DRM을 지원합니다.
WMDRM_DEVICE_NEEDCLOCK 디바이스에 보안 시계가 없습니다.
WMDRM_DEVICE_REVOKED 디바이스가 해지되었습니다.
WMDRM_CLIENT_NEEDINDIV DRM 보안을 개별화해야 합니다.
WMDRM_DEVICE_REFRESHCLOCK 시계를 새로 고쳐야 합니다.

반환 값

이 메서드는 HRESULT를 반환합니다. 가능한 값에는 다음 표에 있는 값이 포함되지만, 이에 국한되는 것은 아닙니다.

반환 코드 Description
S_OK
메서드가 성공했습니다.
DRM_E_INVALIDARG
입력 인수가 잘못되었습니다.
NS_E_DRM_INVALID_CERTIFICATE
디바이스에서 검색된 디바이스 인증서가 잘못되었습니다.
NS_E_DRM_UNABLE_TO_GET_DEVICE_CERT
디바이스에서 디바이스 인증서를 검색하지 못했습니다.

설명

DRM 콘텐츠를 디바이스로 전송하거나 계량 정보를 가져오는 등 DRM 콘텐츠에 대한 제한된 작업을 수행하기 전에 이 메서드를 호출해야 합니다. pdwStatus에서 검색한 값이 일부 작업(예: 데스크톱에 대한 개별화 또는 디바이스의 클록 획득)을 수행해야 함을 나타내는 경우 애플리케이션은 AcquireDeviceData를 호출하고 이 함수에서 검색된 pdwStatus 값을 AcquireDeviceDatadwFlags 매개 변수로 전달해야 합니다. 0이 반환되면 디바이스는 휴대용 디바이스용 Windows Media DRM 10을 지원하지 않으며 작업을 수행할 필요가 없습니다. 자세한 내용은 애플리케이션에서 보호된 콘텐츠 처리를 참조하세요.

예제

다음 C++ 코드 예제에서는 WMDRMDeviceApp 개체를 만들고, 디바이스가 Windows Media DRM 10 디바이스인지, 시계가 정확한지 확인한 다음, 계량 데이터를 요청합니다.

HRESULT hr = S_OK;
// Create the WMDRMDeviceApp object.
CComPtr<IWMDRMDeviceApp> pDRM;
hr = pDRM.CoCreateInstance(CLSID_WMDRMDeviceApp, 0, CLSCTX_ALL);

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

if (!(WMDRM_DEVICE_ISWMDRM & status)) // Device is not WMDRM 10. Nothing can be updated,
    return E_FAIL;                   // and metering cannot be performed.
else if (status & WMDRM_DEVICE_REVOKED) // Device is revoked.
    return E_FAIL;
else if (status & WMDRM_DEVICE_NEEDCLOCK || 
    status & WMDRM_CLIENT_NEEDINDIV ||
    status & WMDRM_DEVICE_REFRESHCLOCK)
{
    // Need to update device clock. 
    // Using custom function, which is synchronous.
    hr = myAcquireDeviceData(pDRM, pDevice, this, status, &result);
    if (hr != S_OK || result != 0)    // Couldn't perform the updates.
        return E_FAIL;    
}

요구 사항

요구 사항
헤더
WMDRMDeviceApp.h(WMDRMDeviceApp.idl에서 빌드된 Wmdrmdeviceapp_i.c도 필요)
라이브러리
Mssachlp.lib

추가 정보

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

IWMDRMDeviceApp 인터페이스

IWMDRMDeviceApp2::QueryDeviceStatus2