Partager via


Méthode IWMDRMDeviceApp::QueryDeviceStatus

La méthode QueryDeviceStatus interroge un appareil pour ses status et fonctionnalités DRM actuelles.

Syntaxe

HRESULT QueryDeviceStatus(
  [in]  IWMDMDevice *pDevice,
  [out] DWORD       *pdwStatus
);

Paramètres

pDevice [in]

Pointeur vers un objet IWMDMDevice .

pdwStatus [out]

Zéro ou plusieurs des valeurs DWORD suivantes décrivant les aspects DRM de l’appareil, combinées à un OR au niveau du bit. Consultez la section Notes.

Statut Description
WMDRM_DEVICE_ISWMDRM L’appareil prend en charge Windows Media DRM.
WMDRM_DEVICE_NEEDCLOCK L’appareil n’a pas d’horloge sécurisée.
WMDRM_DEVICE_REVOKED L’appareil a été révoqué.
WMDRM_CLIENT_NEEDINDIV La sécurité DRM doit être individualisée.
WMDRM_DEVICE_REFRESHCLOCK L’horloge doit être actualisée.

Valeur retournée

Cette méthode retourne un code HRESULT. Les valeurs possibles sont notamment celles figurant dans le tableau suivant.

Code de retour Description
S_OK
S_OK
DRM_E_INVALIDARG
L’argument d’entrée n’est pas valide.
NS_E_DRM_INVALID_CERTIFICATE
Le certificat d’appareil récupéré à partir de l’appareil n’est pas valide.
NS_E_DRM_UNABLE_TO_GET_DEVICE_CERT
Échec de la récupération du certificat d’appareil à partir de l’appareil.

Notes

Cette méthode doit être appelée avant d’effectuer des actions restreintes sur le contenu DRM, telles que le transfert de contenu DRM vers l’appareil ou l’acquisition d’informations de contrôle. Si les valeurs récupérées par pdwStatus indiquent qu’une action doit être effectuée (par exemple, l’individualisation du bureau ou l’acquisition d’une horloge pour l’appareil), l’application doit appeler AcquireDeviceData et passer la valeur pdwStatus récupérée de cette fonction au paramètre dwFlags dans AcquireDeviceData. Si zéro est retourné, l’appareil ne prend pas en charge Windows Media DRM 10 pour les appareils portables et aucune action n’est nécessaire. Pour plus d’informations, consultez Gestion du contenu protégé dans l’application .

Exemples

L’exemple de code C++ suivant crée un objet WMDRMDeviceApp , vérifie que l’appareil est un appareil Windows Media DRM 10, que son horloge est exacte, puis demande les données de contrôle.

HRESULT hr = S_OK;
// Create the WMDRMDeviceApp object.
CComPtr<IWMDRMDeviceApp> pDRM;
hr = pDRM.CoCreateInstance(CLSID_WMDRMDeviceApp, 0, CLSCTX_ALL);

// Find out first if the device is a WMDRM 10 device, and if it requires
// any clock updates.
DWORD status = 0;
hr = pDRM->QueryDeviceStatus(pDevice, &status);

if (!(WMDRM_DEVICE_ISWMDRM & status)) // Device is not WMDRM 10. Nothing can be updated,
    return E_FAIL;                   // and metering cannot be performed.
else if (status & WMDRM_DEVICE_REVOKED) // Device is revoked.
    return E_FAIL;
else if (status & WMDRM_DEVICE_NEEDCLOCK || 
    status & WMDRM_CLIENT_NEEDINDIV ||
    status & WMDRM_DEVICE_REFRESHCLOCK)
{
    // Need to update device clock. 
    // Using custom function, which is synchronous.
    hr = myAcquireDeviceData(pDRM, pDevice, this, status, &result);
    if (hr != S_OK || result != 0)    // Couldn't perform the updates.
        return E_FAIL;    
}

Spécifications

Condition requise Valeur
En-tête
WMDRMDeviceApp.h (nécessite également Wmdrmdeviceapp_i.c, généré à partir de WMDRMDeviceApp.idl)
Bibliothèque
Mssachlp.lib

Voir aussi

Gestion du contenu protégé dans l’application

IWMDRMDeviceApp Interface

IWMDRMDeviceApp2::QueryDeviceStatus2