Condividi tramite


Metodo IWMDRMDeviceApp::QueryDeviceStatus

Il metodo QueryDeviceStatus esegue una query su un dispositivo per lo stato e le funzionalità DRM correnti.

Sintassi

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

Parametri

pDevice [in]

Puntatore a un oggetto IWMDMDevice .

pdwStatus [out]

Zero o più dei valori DWORD seguenti che descrivono gli aspetti DRM del dispositivo, combinati con un or bit per bit. Vedere la sezione Osservazioni.

Stato Descrizione
WMDRM_DEVICE_ISWMDRM Il dispositivo supporta WINDOWS Media DRM.
WMDRM_DEVICE_NEEDCLOCK Il dispositivo non ha un orologio sicuro.
WMDRM_DEVICE_REVOKED Il dispositivo è stato revocato.
WMDRM_CLIENT_NEEDINDIV La sicurezza DRM deve essere personalizzata.
WMDRM_DEVICE_REFRESHCLOCK L'orologio deve essere aggiornato.

Valore restituito

Il metodo restituisce un HRESULT. I valori possibili includono, ma non sono limitati a, quelli indicati nella tabella seguente.

Codice restituito Descrizione
S_OK
Il metodo è riuscito.
DRM_E_INVALIDARG
L'argomento di input non è valido.
NS_E_DRM_INVALID_CERTIFICATE
Il certificato del dispositivo recuperato dal dispositivo non è valido.
NS_E_DRM_UNABLE_TO_GET_DEVICE_CERT
Impossibile recuperare il certificato del dispositivo dal dispositivo.

Commenti

Questo metodo deve essere chiamato prima di eseguire azioni limitate sul contenuto DRM, ad esempio il trasferimento di contenuto DRM al dispositivo o l'acquisizione di informazioni di misurazione. Se i valori recuperati da pdwStatus indicano che è necessario eseguire alcune azioni (ad esempio l'individualizzazione per il desktop o l'acquisizione di un orologio per il dispositivo), l'applicazione deve chiamare AcquireDeviceData e passare il valore pdwStatus recuperato da questa funzione al parametro dwFlags in AcquireDeviceData. Se viene restituito zero, il dispositivo non supporta Windows Media DRM 10 per dispositivi portatili e non è necessario eseguire azioni. Per altre informazioni, vedere Gestione del contenuto protetto nell'applicazione .

Esempio

L'esempio di codice C++ seguente crea un oggetto WMDRMDeviceApp , verifica che il dispositivo sia un dispositivo WINDOWS Media DRM 10, che il suo orologio sia accurato e quindi richieda i dati di misurazione.

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;    
}

Requisiti

Requisito Valore
Intestazione
WMDRMDeviceApp.h (richiede anche Wmdrmdeviceapp_i.c, compilata da WMDRMDeviceApp.idl)
Libreria
Mssachlp.lib

Vedi anche

Gestione del contenuto protetto nell'applicazione

Interfaccia IWMDRMDeviceApp

IWMDRMDeviceApp2::QueryDeviceStatus2