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