Compartilhar via


Método IWMDRMDeviceApp::QueryDeviceStatus

O método QueryDeviceStatus consulta um dispositivo em busca de seus recursos e status DRM atuais.

Sintaxe

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

Parâmetros

pDevice [in]

Ponteiro para um objeto IWMDMDevice .

pdwStatus [out]

Zero ou mais dos valores DWORD a seguir que descrevem os aspectos drm do dispositivo, combinados com um OR bit a bit. Consulte Observações.

Status Descrição
WMDRM_DEVICE_ISWMDRM O dispositivo dá suporte ao DRM do Windows Media.
WMDRM_DEVICE_NEEDCLOCK O dispositivo não tem um relógio seguro.
WMDRM_DEVICE_REVOKED O dispositivo foi revogado.
WMDRM_CLIENT_NEEDINDIV A segurança do DRM precisa ser individualizada.
WMDRM_DEVICE_REFRESHCLOCK O relógio precisa ser atualizado.

Valor retornado

O método retorna um HRESULT. Os possíveis valores incluem, mas sem limitação, aqueles na tabela a seguir.

Código de retorno Descrição
S_OK
O método foi bem-sucedido.
DRM_E_INVALIDARG
O argumento de entrada não é válido.
NS_E_DRM_INVALID_CERTIFICATE
O certificado do dispositivo recuperado do dispositivo não é válido.
NS_E_DRM_UNABLE_TO_GET_DEVICE_CERT
Falha ao recuperar o certificado do dispositivo do dispositivo.

Comentários

Esse método deve ser chamado antes de executar qualquer ação restrita no conteúdo drm, como transferir conteúdo DRM para o dispositivo ou adquirir informações de medição. Se os valores recuperados por pdwStatus indicarem que alguma ação precisa ser executada (como a individualização da área de trabalho ou a aquisição de um relógio para o dispositivo), o aplicativo deverá chamar AcquireDeviceData e passar o valor de pdwStatus recuperado dessa função para o parâmetro dwFlags em AcquireDeviceData. Se zero for retornado, o dispositivo não oferecerá suporte ao DRM 10 do Windows Media para Dispositivos Portáteis e nenhuma ação será tomada. Consulte Manipulando conteúdo protegido no aplicativo para obter mais informações.

Exemplos

O exemplo de código C++ a seguir cria um objeto WMDRMDeviceApp , verifica se o dispositivo é um dispositivo DRM 10 do Windows Media, se seu relógio é preciso e solicita os dados de medição.

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 Valor
parâmetro
WMDRMDeviceApp.h (também requer Wmdrmdeviceapp_i.c, criado a partir de WMDRMDeviceApp.idl)
Biblioteca
Mssachlp.lib

Confira também

Manipulando conteúdo protegido no aplicativo

IWMDRMDeviceApp Interface

IWMDRMDeviceApp2::QueryDeviceStatus2