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 |