Compartir a través de


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

El método GetRights recupera información de derechos para un almacenamiento con licencia.

Sintaxis

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

Parámetros

[out] ppRights

Puntero a una matriz de estructuras WMDMRIGHTS que contienen los derechos de almacenamiento. Este parámetro se incluye en el código de autenticación del mensaje. Windows Media Administrador de dispositivos asigna esta memoria y la aplicación debe liberarla con CoTaskMemFree.

[out] pnRightsCount

Puntero al número de estructuras WMDMRIGHTS en la matriz ppRights . Este parámetro se incluye en el código de autenticación del mensaje.

[in, out] abMac

Matriz de bytes que contienen el código de autenticación de mensajes (MAC) para los datos de parámetro de este método.

Valor devuelto

El método devuelve un valor HRESULT. Todos los métodos de interfaz de Windows Media Administrador de dispositivos pueden devolver cualquiera de las siguientes clases de códigos de error:

  • Códigos de error COM estándar
  • Códigos de error de Windows convertidos en valores HRESULT
  • Códigos de error de windows Media Administrador de dispositivos
Para obtener una lista extensa de posibles códigos de error, consulte Códigos de error.

Comentarios

Los derechos de objeto describen los permisos de uso para el contenido multimedia digital. Por ejemplo, la estructura WMDMRIGHTS puede contener información sobre cuántas veces se puede reproducir un archivo y quién puede reproducirlo. Este método producirá un error si no es un archivo con licencia.

La matriz ppRights se asigna mediante este método y la aplicación debe liberarla mediante CoTaskMemFree, una función Win32 estándar.

Para recibir eventos de progreso para esta llamada, use IWMDMStorage4::GetRightsWithProgress.

Después de llamar a este método, una aplicación puede calcular los valores de código de autenticación de mensajes (MAC) de parámetros y compararlos con valores MAC de salida para asegurarse de que los parámetros no se han alterado. En el código de ejemplo siguiente se muestra una manera de hacerlo.

Ejemplos


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 Value
Plataforma de destino Windows
Encabezado mswmdm.h
Library Mssachlp.lib

Consulte también

Interfaz IWMDMStorage

Uso de canales autenticados seguros

WMDMRIGHTS