IWMDRMDeviceApp::QueryDeviceStatus (Método)
El método QueryDeviceStatus consulta un dispositivo para conocer su estado y funcionalidades actuales de DRM.
Sintaxis
HRESULT QueryDeviceStatus(
[in] IWMDMDevice *pDevice,
[out] DWORD *pdwStatus
);
Parámetros
-
pDevice [in]
-
Puntero a un objeto IWMDMDevice .
-
pdwStatus [out]
-
Cero o más de los siguientes valores DWORD que describen los aspectos drm del dispositivo, combinados con un OR bit a bit. Vea la sección Comentarios.
Estado Descripción WMDRM_DEVICE_ISWMDRM El dispositivo admite DRM de Windows Media. WMDRM_DEVICE_NEEDCLOCK El dispositivo no tiene un reloj seguro. WMDRM_DEVICE_REVOKED Se ha revocado el dispositivo. WMDRM_CLIENT_NEEDINDIV La seguridad drm debe individualizarse. WMDRM_DEVICE_REFRESHCLOCK El reloj debe actualizarse.
Valor devuelto
El método devuelve un valor HRESULT. Entre los valores posibles se incluyen los que se indican en la tabla siguiente, entre otros.
Código devuelto | Descripción |
---|---|
|
El método se ha llevado a cabo de forma correcta. |
|
El argumento input no es válido. |
|
El certificado de dispositivo recuperado del dispositivo no es válido. |
|
No se pudo recuperar el certificado de dispositivo del dispositivo. |
Observaciones
Se debe llamar a este método antes de realizar acciones restringidas en contenido DRM, como transferir contenido DRM al dispositivo o adquirir información de medición. Si los valores recuperados por pdwStatus indican que es necesario realizar alguna acción (como la individualización para el escritorio o adquirir un reloj para el dispositivo), la aplicación debe llamar a AcquireDeviceData y pasar el valor pdwStatus recuperado de esta función al parámetro dwFlags en AcquireDeviceData. Si se devuelve cero, el dispositivo no admite DRM 10 de Windows Media para dispositivos portátiles y no es necesario realizar ninguna acción. Consulte Control de contenido protegido en la aplicación para obtener más información.
Ejemplos
En el siguiente ejemplo de código de C++ se crea un objeto WMDRMDeviceApp , se comprueba que el dispositivo es un dispositivo DRM 10 de Windows Media, que su reloj es preciso y, a continuación, solicita los datos de medición.
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;
}
Requisitos
Requisito | Value |
---|---|
Encabezado |
|
Biblioteca |
|