Поделиться через


Метод 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

См. также раздел

Интерфейс IWMDMStorage

Использование защищенных каналов с проверкой подлинности

WMDMRIGHTS