Compartilhar via


Método IWMDMStorage::GetRights (mswmdm.h)

O método GetRights recupera informações de direitos para um armazenamento licenciado.

Sintaxe

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

Parâmetros

[out] ppRights

Ponteiro para uma matriz de estruturas WMDMRIGHTS que contêm os direitos de armazenamento. Esse parâmetro está incluído no código de autenticação de mensagem. O Windows Media Gerenciador de Dispositivos aloca essa memória e o aplicativo deve liberá-la com CoTaskMemFree.

[out] pnRightsCount

Ponteiro para o número de estruturas WMDMRIGHTS na matriz ppRights . Esse parâmetro está incluído no código de autenticação de mensagem.

[in, out] abMac

Matriz de bytes que contém o MAC (código de autenticação de mensagem) para os dados de parâmetro desse método.

Retornar valor

O método retorna um HRESULT. Todos os métodos de interface no Windows Media Gerenciador de Dispositivos podem retornar qualquer uma das seguintes classes de códigos de erro:

  • Códigos de erro COM padrão
  • Códigos de erro do Windows convertidos em valores HRESULT
  • Códigos de erro do Windows Media Gerenciador de Dispositivos
Para obter uma lista abrangente de possíveis códigos de erro, consulte Códigos de erro.

Comentários

Os direitos de objeto descrevem as permissões de uso para conteúdo de mídia digital. Por exemplo, a estrutura WMDMRIGHTS pode conter informações sobre quantas vezes um arquivo pode ser reproduzido e quem pode reproduzi-lo. Esse método falhará se este não for um arquivo licenciado.

A matriz ppRights é alocada por esse método e deve ser liberada pelo aplicativo usando CoTaskMemFree, uma função padrão do Win32.

Para receber eventos de progresso para essa chamada, use IWMDMStorage4::GetRightsWithProgress.

Depois de chamar esse método, um aplicativo pode calcular os valores de mac (código de autenticação de mensagem) de parâmetros e compará-los com valores MAC de saída para garantir que os parâmetros não tenham sido adulterados. O código de exemplo a seguir mostra uma maneira de fazer isso.

Exemplos


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;
    }
}


Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho mswmdm.h
Biblioteca Mssachlp.lib

Confira também

IWMDMStorage Interface

Usando canais autenticados seguros

WMDMRIGHTS