Méthode IWMDMStorage ::GetRights (mswmdm.h)
La méthode GetRights récupère les informations de droits d’un stockage sous licence.
Syntaxe
HRESULT GetRights(
[out] PWMDMRIGHTS *ppRights,
[out] UINT *pnRightsCount,
[in, out] BYTE [8] abMac
);
Paramètres
[out] ppRights
Pointeur vers un tableau de structures WMDMRIGHTS qui contiennent les droits de stockage. Ce paramètre est inclus dans le code d’authentification du message. Windows Media Gestionnaire de périphériques alloue cette mémoire et l’application doit la libérer avec CoTaskMemFree.
[out] pnRightsCount
Pointeur vers le nombre de structures WMDMRIGHTS dans le tableau ppRights . Ce paramètre est inclus dans le code d’authentification du message.
[in, out] abMac
Tableau d’octets contenant le code d’authentification de message (MAC) pour les données de paramètre de cette méthode.
Valeur retournée
Cette méthode retourne un code HRESULT. Toutes les méthodes d’interface dans Windows Media Gestionnaire de périphériques peuvent retourner l’une des classes de codes d’erreur suivantes :
- Codes d’erreur COM standard
- Codes d’erreur Windows convertis en valeurs HRESULT
- Codes d’erreur Gestionnaire de périphériques Windows Media
Remarques
Les droits d’objet décrivent les autorisations d’utilisation pour le contenu multimédia numérique. Par exemple, la structure WMDMRIGHTS peut contenir des informations sur le nombre de fois où un fichier peut être lu et qui peut le lire. Cette méthode échoue s’il ne s’agit pas d’un fichier sous licence.
Le tableau ppRights est alloué par cette méthode et doit être libéré par l’application à l’aide de CoTaskMemFree, une fonction Win32 standard.
Pour recevoir les événements de progression de cet appel, utilisez IWMDMStorage4 ::GetRightsWithProgress.
Après avoir appelé cette méthode, une application peut calculer les valeurs de code d’authentification des messages (MAC) des paramètres et les comparer aux valeurs MAC de sortie pour s’assurer que les paramètres n’ont pas été falsifiés. L’exemple de code suivant montre une façon de procéder.
Exemples
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;
}
}
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Windows |
En-tête | mswmdm.h |
Bibliothèque | Mssachlp.lib |