IWMDMStorage::GetRights-Methode (mswmdm.h)
Die GetRights-Methode ruft Rechteinformationen für einen lizenzierten Speicher ab.
Syntax
HRESULT GetRights(
[out] PWMDMRIGHTS *ppRights,
[out] UINT *pnRightsCount,
[in, out] BYTE [8] abMac
);
Parameter
[out] ppRights
Zeiger auf ein Array von WMDMRIGHTS-Strukturen , die die Speicherrechte enthalten. Dieser Parameter ist im Nachrichtenauthentifizierungscode enthalten. Windows Media Geräte-Manager weist diesen Arbeitsspeicher zu, und die Anwendung muss ihn mit CoTaskMemFree freigeben.
[out] pnRightsCount
Zeiger auf die Anzahl der WMDMRIGHTS-Strukturen im ppRights-Array . Dieser Parameter ist im Nachrichtenauthentifizierungscode enthalten.
[in, out] abMac
Array von Bytes, die den Nachrichtenauthentifizierungscode (MAC) für die Parameterdaten dieser Methode enthalten.
Rückgabewert
Die Methode gibt ein HRESULT zurück. Alle Schnittstellenmethoden in Windows Media Geräte-Manager können eine der folgenden Klassen von Fehlercodes zurückgeben:
- Com-Standardfehlercodes
- In HRESULT-Werte konvertierte Windows-Fehlercodes
- Windows Media Geräte-Manager Fehlercodes
Hinweise
Objektrechte beschreiben die Nutzungsberechtigungen für digitale Medieninhalte. Beispielsweise kann die WMDMRIGHTS-Struktur Informationen darüber enthalten, wie oft eine Datei wiedergegeben werden kann und wer sie wiedergeben kann. Diese Methode schlägt fehl, wenn es sich nicht um eine lizenzierte Datei handelt.
Das ppRights-Array wird von dieser Methode zugeordnet und muss von der Anwendung mithilfe von CoTaskMemFree, einer Win32-Standardfunktion, freigegeben werden.
Verwenden Sie zum Empfangen von Statusereignissen für diesen Aufruf IWMDMStorage4::GetRightsWithProgress.
Nach dem Aufrufen dieser Methode kann eine Anwendung die Werte des Nachrichtenauthentifizierungscodes (MAC) von Parametern berechnen und mit ausgabebasierten MAC-Werten vergleichen, um sicherzustellen, dass die Parameter nicht manipuliert wurden. Der folgende Beispielcode zeigt eine Möglichkeit, dies zu tun.
Beispiele
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;
}
}
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Windows |
Kopfzeile | mswmdm.h |
Bibliothek | Mssachlp.lib |