次の方法で共有


アプリケーションでの保護されたコンテンツの処理

[Windows Media DRM 機能は非推奨であり、使用しないでください。 代わりに Microsoft PlayReady 使用してください。]

DRM で保護されたコンテンツを処理するには、アプリケーションに転送証明書が必要です。 この証明書を取得する場所については、「Tools for Development」を参照してください。 保護されていないコンテンツを処理する場合は、「アプリケーション の認証の」の説明に従ってダミー証明書を使用できます。

デバイスを使用する前に、アプリケーションは、デバイスがポータブル デバイス用の Windows Media DRM 10 をサポートしているかどうか、およびサポートされている場合は DRM コンポーネントが最新であるかどうかを判断する必要があります。 (現在は、セキュアクロックが正しく、デバイスが適切に個別化されていることを意味します)。デバイスがこのバージョンのDRMをサポートしていない場合、または更新できない場合でも、デバイスにファイルを送信できますが、ライセンスのバージョンによっては再生できないことがあります。

手記

デバイスの個別化は現在サポートされていません。

 

アプリケーションが Windows Media Format SDK メソッドにリンクする場合は、Windows Media Format ライブラリ WMStubDRM.lib にリンクする必要があります。 DRM で保護されたコンテンツで Windows Media Format メソッドを呼び出す方法の詳細については、Windows Media Format SDK ドキュメントの「DRM サポートの有効化」を参照してください。 Mssachlp.lib と WMStubDRM.lib の両方へのリンクに問題があることに注意してください。 これについては、MSDN KB の記事890079で説明されています。

次の 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 を呼び出し、状態 の値を渡して、必要な更新を実行する必要があります。 デスクトップ コンピューターがインターネットに接続されている必要があります。

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

Windows Media Device Manager アプリケーション の作成

保護されたコンテンツを処理する