次の方法で共有


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

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

Windows Media デバイス マネージャー アプリケーションの作成

保護されたコンテンツの処理