Метод 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
Указатель на количество структур WMDMRIGHTS в массиве ppRights . Этот параметр включен в код проверки подлинности сообщения.
[in, out] abMac
Массив байтов, содержащий код проверки подлинности сообщения (MAC) для данных параметров этого метода.
Возвращаемое значение
Метод возвращает HRESULT. Все методы интерфейса в Windows Media диспетчер устройств могут возвращать любой из следующих классов кодов ошибок:
- Стандартные коды ошибок COM
- Коды ошибок Windows, преобразованные в значения HRESULT
- Коды ошибок диспетчер устройств 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 |
Header | mswmdm.h |
Библиотека | Mssachlp.lib |