Metode IWMDMStorage::GetRights (mswmdm.h)
Metode GetRights mengambil informasi hak untuk penyimpanan berlisensi.
HRESULT GetRights(
[out] PWMDMRIGHTS *ppRights,
[out] UINT *pnRightsCount,
[in, out] BYTE [8] abMac
);
[out] ppRights
Penunjuk ke array struktur WMDMRIGHTS yang berisi hak penyimpanan. Parameter ini disertakan dalam kode autentikasi pesan. Windows Media Device Manager mengalokasikan memori ini, dan aplikasi harus merilisnya dengan CoTaskMemFree.
[out] pnRightsCount
Arahkan ke jumlah struktur WMDMRIGHTS dalam array ppRights . Parameter ini disertakan dalam kode autentikasi pesan.
[in, out] abMac
Array byte yang berisi kode autentikasi pesan (MAC) untuk data parameter metode ini.
Metode mengembalikan HRESULT. Semua metode antarmuka di Windows Media Device Manager dapat mengembalikan salah satu kelas kode kesalahan berikut:
- Kode kesalahan COM standar
- Kode kesalahan Windows dikonversi ke nilai HRESULT
- Kode kesalahan Pengelola Perangkat Windows Media
Hak objek menjelaskan izin penggunaan untuk konten media digital. Misalnya, struktur WMDMRIGHTS dapat berisi informasi tentang berapa kali file dapat dimainkan dan siapa yang dapat memainkannya. Metode ini akan gagal jika ini bukan file berlisensi.
Array ppRights dialokasikan oleh metode ini, dan harus dibebaskan oleh aplikasi menggunakan CoTaskMemFree, fungsi Win32 standar.
Untuk menerima peristiwa kemajuan untuk panggilan ini, gunakan IWMDMStorage4::GetRightsWithProgress.
Setelah memanggil metode ini, aplikasi dapat menghitung nilai parameter kode autentikasi pesan (MAC) dan membandingkannya dengan nilai MAC output untuk memastikan bahwa parameter belum dirusak. Contoh kode berikut menunjukkan salah satu cara untuk melakukan ini.
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;
}
}
Persyaratan | Nilai |
---|---|
Target Platform | Windows |
Header | mswmdm.h |
Pustaka | Mssachlp.lib |