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 |
---|---|
|
Il metodo è riuscito. |
|
L'argomento di input non è valido. |
|
Il certificato del dispositivo recuperato dal dispositivo non è valido. |
|
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 |
|
Libreria |
|