Condividi tramite


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
Per un elenco completo dei codici di errore possibili, vedere Codici di errore.

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

Vedi anche

Interfaccia IWMDMStorage

Uso di canali autenticati protetti

WMDMRIGHTS