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 |
|
L’argument d’entrée n’est pas valide. |
|
Le certificat d’appareil récupéré à partir de l’appareil n’est pas valide. |
|
É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 |
|
Bibliothèque |
|