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
Eine ausführliche Liste möglicher Fehlercodes finden Sie unter 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

Weitere Informationen

IWMDMStorage-Schnittstelle

Verwenden von sicher authentifizierten Kanälen

WMDMRIGHTS