Partager via


Gestion du contenu protégé dans l’application

[La fonctionnalité DRM Windows Media est déconseillée et ne doit pas être utilisée. Utilisez Microsoft PlayReady à la place.]

Une application doit disposer d’un certificat de transfert pour pouvoir gérer le contenu protégé par DRM. Pour savoir où obtenir ce certificat, consultez Outils pour le développement. Pour gérer le contenu non protégé, vous pouvez utiliser un certificat factice comme décrit dans Authentification de l’application.

Avant d’utiliser un appareil, votre application doit déterminer si l’appareil prend en charge Windows Media DRM 10 pour les appareils portables et, le cas échéant, si c’est le cas, si les composants DRM sont à jour. (Current signifie que l’horloge sécurisée est correcte et que l’appareil a été correctement individualisé.) Si l’appareil ne prend pas en charge cette version de DRM ou s’il ne peut pas être mis à jour, vous pouvez toujours envoyer des fichiers à l’appareil, mais ils peuvent ne pas être lisibles, en fonction de la version de licence.

Notes

L’individualisation des appareils n’est actuellement pas prise en charge.

 

Si votre application est liée aux méthodes du Kit de développement logiciel (SDK) Windows Media Format, elle doit être liée à la bibliothèque de format Windows Media WMStubDRM.lib. Pour plus d’informations sur l’appel de méthodes au format Windows Media sur du contenu protégé par DRM, consultez « Activation de la prise en charge DRM » dans la documentation du Kit de développement logiciel (SDK) au format Windows Media. Notez qu’il existe un problème de liaison vers Mssachlp.lib et WMStubDRM.lib. Cela est abordé dans l’article de la base de connaissances 890079 sur MSDN.

L’exemple de code C++ suivant détermine si un appareil est un appareil Windows Media DRM 10 et, le cas échéant, si son horloge est à jour.

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

Si l’appareil prend en charge Windows Media DRM 10 pour les appareils portables et doit être mis à jour (autrement dit, si la valeur de status dans l’exemple précédent n’est pas simplement WMDM_DEVICE_ISWMDRM), l’application doit appeler IWMDRMDeviceApp::AcquireDeviceData et passer la valeur de status pour effectuer les mises à jour requises. L’ordinateur de bureau doit être connecté à Internet.

L’exemple de fonction C++ suivant tente de mettre à jour un appareil 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;
}

Création d’une application Gestionnaire de périphériques Windows Media

Gestion du contenu protégé