共用方式為


iWMDMStorage::GetRights 方法 (mswmdm.h)

GetRights 方法會擷取授權記憶體的許可權資訊。

語法

HRESULT GetRights(
  [out]     PWMDMRIGHTS *ppRights,
  [out]     UINT        *pnRightsCount,
  [in, out] BYTE [8]    abMac
);

參數

[out] ppRights

包含儲存許可權之 WMDMRIGHTS 結構的陣列指標。 這個參數包含在訊息驗證碼中。 Windows Media 裝置管理員 配置此記憶體,而且應用程式必須使用 CoTaskMemFree 加以釋放。

[out] pnRightsCount

ppRights 陣列中 WMDMRIGHTS 結構的指標。 這個參數包含在訊息驗證碼中。

[in, out] abMac

包含這個方法參數數據之訊息驗證碼的位元組陣列 (MAC) 。

傳回值

方法會傳回 HRESULT。 Windows Media 中的所有介面方法 裝置管理員 都可以傳回下列任何錯誤碼類別:

  • 標準 COM 錯誤碼
  • 轉換成 HRESULT 值的 Windows 錯誤碼
  • Windows Media 裝置管理員 錯誤碼
如需可能錯誤碼的廣泛清單,請參閱 錯誤碼

備註

物件許可權描述數位媒體內容的使用許可權。 例如, WMDMRIGHTS 結構可以包含可播放檔案次數和誰可以播放它的資訊。 如果這不是授權檔案,這個方法將會失敗。

ppRights 陣列是由這個方法所配置,而且必須由應用程式使用 CoTaskMemFree 來釋放,這是標準 Win32 函式。

若要接收此呼叫的進度事件,請使用 IWMDMStorage4::GetRightsWithProgress

呼叫此方法之後,應用程式可以計算訊息驗證碼 (MAC) 參數的值,並將其與輸出 MAC 值進行比較,以確保參數未遭到竄改。 下列範例程式代碼示範執行這項操作的其中一種方式。

範例


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;
    }
}


規格需求

需求
目標平台 Windows
標頭 mswmdm.h
程式庫 Mssachlp.lib

另請參閱

IWMDMStorage 介面

使用安全驗證的通道

WMDMRIGHTS