Metodo IWMDMStorage::GetRights (mswmdm.h)
Il metodo GetRights recupera le informazioni sui diritti per una risorsa di archiviazione con licenza.
Sintassi
HRESULT GetRights(
[out] PWMDMRIGHTS *ppRights,
[out] UINT *pnRightsCount,
[in, out] BYTE [8] abMac
);
Parametri
[out] ppRights
Puntatore a una matrice di strutture WMDMRIGHTS che contengono i diritti di archiviazione. Questo parametro è incluso nel codice di autenticazione del messaggio. Windows Media Gestione dispositivi alloca questa memoria e l'applicazione deve rilasciarla con CoTaskMemFree.
[out] pnRightsCount
Puntatore al numero di strutture WMDMRIGHTS nella matrice ppRights . Questo parametro è incluso nel codice di autenticazione del messaggio.
[in, out] abMac
Matrice di byte contenente il codice mac (Message Authentication Code) per i dati dei parametri di questo metodo.
Valore restituito
Il metodo restituisce un valore HRESULT. Tutti i metodi di interfaccia in Windows Media Gestione dispositivi possono restituire una delle classi di codici di errore seguenti:
- Codici di errore COM standard
- Codici di errore di Windows convertiti in valori HRESULT
- Codici di errore di Windows Media Gestione dispositivi
Commenti
I diritti degli oggetti descrivono le autorizzazioni di utilizzo per il contenuto multimediale digitale. Ad esempio, la struttura WMDMRIGHTS può contenere informazioni sul numero di volte in cui un file può essere riprodotto e chi può riprodurlo. Questo metodo avrà esito negativo se non si tratta di un file con licenza.
La matrice ppRights viene allocata da questo metodo e deve essere liberata dall'applicazione usando CoTaskMemFree, una funzione Win32 standard.
Per ricevere eventi di stato per questa chiamata, usare IWMDMStorage4::GetRightsWithProgress.
Dopo aver chiamato questo metodo, un'applicazione può calcolare i valori mac (Message Authentication Code) dei parametri e confrontarli con i valori MAC di output per assicurarsi che i parametri non siano stati manomessi. Il codice di esempio seguente illustra un modo per eseguire questa operazione.
Esempio
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;
}
}
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Windows |
Intestazione | mswmdm.h |
Libreria | Mssachlp.lib |