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
S_OK
El método se ha llevado a cabo de forma correcta.
DRM_E_INVALIDARG
El argumento input no es válido.
NS_E_DRM_INVALID_CERTIFICATE
El certificado de dispositivo recuperado del dispositivo no es válido.
NS_E_DRM_UNABLE_TO_GET_DEVICE_CERT
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
WMDRMDeviceApp.h (también requiere Wmdrmdeviceapp_i.c, compilado a partir de WMDRMDeviceApp.idl)
Biblioteca
Mssachlp.lib

Vea también

Control del contenido protegido en la aplicación

IWMDRMDeviceApp (Interfaz)

IWMDRMDeviceApp2::QueryDeviceStatus2