다음을 통해 공유


IWMDMStorage::GetRights 메서드(mswmdm.h)

GetRights 메서드는 사용이 허가된 스토리지에 대한 권한 정보를 검색합니다.

구문

HRESULT GetRights(
  [out]     PWMDMRIGHTS *ppRights,
  [out]     UINT        *pnRightsCount,
  [in, out] BYTE [8]    abMac
);

매개 변수

[out] ppRights

스토리지 권한이 포함된 WMDMRIGHTS 구조체의 배열에 대한 포인터입니다. 이 매개 변수는 메시지 인증 코드에 포함됩니다. Windows Media 장치 관리자 이 메모리를 할당하며 애플리케이션은 CoTaskMemFree를 사용하여 메모리를 해제해야 합니다.

[out] pnRightsCount

ppRights 배열의 WMDMRIGHTS 구조체 수에 대한 포인터입니다. 이 매개 변수는 메시지 인증 코드에 포함됩니다.

[in, out] abMac

이 메서드의 매개 변수 데이터에 대한 MAC(메시지 인증 코드)을 포함하는 바이트 배열입니다.

반환 값

이 메서드는 HRESULT를 반환합니다. Windows Media 장치 관리자 모든 인터페이스 메서드는 다음 오류 코드 클래스를 반환할 수 있습니다.

  • 표준 COM 오류 코드
  • HRESULT 값으로 변환된 Windows 오류 코드
  • Windows Media 장치 관리자 오류 코드
가능한 오류 코드의 광범위한 목록은 오류 코드를 참조하세요.

설명

개체 권한은 디지털 미디어 콘텐츠에 대한 사용 권한을 설명합니다. 예를 들어 WMDMRIGHTS 구조체에는 파일을 재생할 수 있는 횟수 및 재생할 수 있는 사용자에 대한 정보가 포함될 수 있습니다. 이 메서드는 사용이 허가된 파일이 아니면 실패합니다.

ppRights 배열은 이 메서드에 의해 할당되며 표준 Win32 함수인 CoTaskMemFree를 사용하여 애플리케이션에서 해제해야 합니다.

이 호출에 대한 진행률 이벤트를 받으려면 IWMDMStorage4::GetRightsWithProgress를 사용합니다.

이 메서드를 호출한 후 애플리케이션은 매개 변수의 MAC(메시지 인증 코드) 값을 계산하고 출력 MAC 값과 비교하여 매개 변수가 변조되지 않았는지 확인할 수 있습니다. 다음 예제 코드는 이 작업을 수행하는 한 가지 방법을 보여 있습니다.

예제


CSecureChannelClient  *pSCClient;
IWMDMStorage  *pStorgae;

HMAC  hMAC;
BYTE  abMAC[WMDM_MAC_LENGTH];
BYTE  abMACVerify[WMDM_MAC_LENGTH];

hr = pStorage->GetRights(&pRights, &nRightsCount, abMAC);
if (SUCCEEDED(hr))
{
    //
    // First verify the integrity of the retrieved rights.
    //
    pSCClient->MACInit(&hMAC);
    pSCClient->MACUpdate(hMAC, (BYTE*)(pRights), 
                    sizeof(WMDMRIGHTS) * nRightsCount);
    pSCClient->MACUpdate(hMAC, (BYTE*)(&nRightsCount), 
                                 sizeof(nRightsCount));
    pSCClient->MACFinal(hMAC, (BYTE*)abMACVerify);
    if (memcmp(abMACVerify, abMAC, sizeof(abMAC)) != 0)
    {
        hr = WMDM_E_MAC_CHECK_FAILED;
    }
}


요구 사항

요구 사항
대상 플랫폼 Windows
헤더 mswmdm.h
라이브러리 Mssachlp.lib

추가 정보

IWMDMStorage 인터페이스

보안 인증 채널 사용

WMDMRIGHTS