Freigeben über


Behandeln geschützter Inhalte in der Anwendung

[Das Windows Media DRM-Feature ist veraltet und sollte nicht verwendet werden. Verwenden Sie stattdessen Microsoft PlayReady.]

Eine Anwendung muss über ein Übertragungszertifikat verfügen, um DRM-geschützte Inhalte verarbeiten zu können. Informationen zum Abrufen dieses Zertifikats finden Sie unter Tools for Development. Für die Verarbeitung ungeschützter Inhalte können Sie ein Dummyzertifikat verwenden, wie unter Authentifizieren der Anwendung beschrieben.

Bevor Sie ein Gerät verwenden, sollte Ihre Anwendung ermitteln, ob das Gerät Windows Media DRM 10 für tragbare Geräte unterstützt, und wenn ja, ob die DRM-Komponenten auf dem neuesten Stand sind. (Aktuell bedeutet, dass die sichere Uhr korrekt ist und das Gerät ordnungsgemäß individualisiert wurde.) Wenn das Gerät diese Version von DRM nicht unterstützt oder nicht aktualisiert werden kann, können Sie weiterhin Dateien an das Gerät senden, aber sie können je nach Lizenzversion möglicherweise nicht abgespielt werden.

Hinweis

Die Individualisierung von Geräten wird derzeit nicht unterstützt.

 

Wenn Ihre Anwendung eine Verknüpfung mit den Methoden des Windows Media Format SDK erstellt, muss sie eine Verknüpfung mit der Windows Media Format-Bibliothek WMStubDRM.lib herstellen. Weitere Informationen zum Aufrufen von Windows Media Format-Methoden für DRM-geschützte Inhalte finden Sie unter Aktivieren der DRM-Unterstützung in der Dokumentation zum Windows Media Format SDK. Beachten Sie, dass beim Verknüpfen von Mssachlp.lib und WMStubDRM.lib ein Problem besteht. Dies wird im KB-Artikel 890079 auf MSDN behandelt.

Das folgende C++-Codebeispiel bestimmt, ob es sich bei einem Gerät um ein Windows Media DRM 10-Gerät handelt, und wenn ja, ob die Uhr auf dem neuesten Stand ist.

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

Wenn das Gerät Windows Media DRM 10 für portable Geräte unterstützt und aktualisiert werden muss (d. h. wenn der Wert von status im vorherigen Beispiel nicht einfach WMDM_DEVICE_ISWMDRM ist), sollte die Anwendung IWMDRMDeviceApp:AcquireDeviceData aufrufen und den Wert von status übergeben, um die erforderlichen Updates auszuführen. Der Desktopcomputer muss mit dem Internet verbunden sein.

Die folgende C++-Beispielfunktion versucht, ein DRM-Gerät zu aktualisieren.

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

Erstellen einer Windows Media-Geräte-Manager-Anwendung

Behandeln geschützter Inhalte