アプリケーションでの保護されたコンテンツの処理
[Windows Media DRM 機能は非推奨であり、使用しないでください。 代わりにMicrosoft PlayReadyを使用してください。]
DRM で保護されたコンテンツを処理するには、アプリケーションに転送証明書が必要です。 この証明書を取得する場所については、「 開発用ツール」を参照してください。 保護されていないコンテンツを処理する場合は、「 アプリケーションの認証」の説明に従ってダミー証明書を使用できます。
デバイスを使用する前に、アプリケーションは、デバイスがポータブル デバイス用の Windows Media DRM 10 をサポートしているかどうかを判断し、サポートされている場合は DRM コンポーネントが最新であることを確認する必要があります。 (Current は、セキュリティで保護されたクロックが正しく、デバイスが適切に個別化されていることを意味します)。デバイスがこのバージョンの DRM をサポートしていない場合、または更新できない場合でも、デバイスにファイルを送信できますが、ライセンスのバージョンによっては再生できない可能性があります。
注意
デバイスの個別化は現在サポートされていません。
アプリケーションが Windows Media Format SDK メソッドにリンクする場合は、Windows Media Format ライブラリ WMStubDRM.lib にリンクする必要があります。 DRM で保護されたコンテンツで Windows Media Format メソッドを呼び出す方法の詳細については、Windows Media Format SDK ドキュメントの「DRM サポートの有効化」を参照してください。 Mssachlp.lib と WMStubDRM.lib の両方へのリンクに問題があることに注意してください。 これについては、 MSDN 890079の KB 記事で説明されています。
次の C++ コード例では、デバイスが Windows Media DRM 10 デバイスであるかどうかを判断し、存在する場合はクロックが最新であることを判断します。
HRESULT IsDRMClockUpToDate()
{
HRESULT hr = S_OK;
// Create the DRM handler class.
CComPtr<IWMDRMDeviceApp> pDRM;
hr = pDRM.CoCreateInstance(CLSID_WMDRMDeviceApp, 0, CLSCTX_ALL);
// Find out first if the device is a WMDRM 10 device, and if so,
// whether it requires clock updates.
DWORD status = 0;
hr = pDRM->QueryDeviceStatus(pDevice, &status);
if (FAILED(hr)
|| (!(WMDRM_DEVICE_ISWMDRM & status)) // Device is not WMDRM 10.
|| (status & WMDRM_DEVICE_REVOKED)) // Device is revoked.
{
return E_FAIL;
}
else if (status & WMDRM_DEVICE_NEEDCLOCK ||
status & WMDRM_DEVICE_REFRESHCLOCK)
{
// Attempt update. See following example.
hr = UpdateDRM(status);
}
return hr;
}
デバイスがポータブル デバイスの Windows Media DRM 10 をサポートしていて、更新する必要がある場合 (つまり、前の例の 状態 の値が単にWMDM_DEVICE_ISWMDRMでない場合)、アプリケーションは IWMDRMDeviceApp::AcquireDeviceData を呼び出し、 status の値を渡して必要な更新を実行する必要があります。 デスクトップ コンピューターはインターネットに接続されている必要があります。
次の C++ 関数の例では、DRM デバイスの更新が試行されます。
HRESULT UpdateDRM(DWORD status)
{
HRESULT hr = S_OK;
hr = pDRM->AcquireDeviceData(pDevice, this, status, &result);
if (hr != S_OK || result != 0)
{
return E_FAIL;
}
return hr;
}
関連トピック