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 配列はこのメソッドによって割り当てられ、標準の Win32 関数である CoTaskMemFree を使用してアプリケーションによって解放される必要があります。
この呼び出しの進行状況イベントを受信するには、 IWMDMStorage4::GetRightsWithProgress を使用します。
このメソッドを呼び出した後、アプリケーションはパラメーターのメッセージ認証コード (MAC) 値を計算し、それらを出力 MAC 値と比較して、パラメーターが改ざんされていないことを確認できます。 次のコード例は、これを行う 1 つの方法を示しています。
例
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 |
Library | Mssachlp.lib |