IWMDRMDeviceApp::QueryDeviceStatus-Methode
Die QueryDeviceStatus-Methode fragt ein Gerät nach seiner aktuellen DRM-status und -Funktionen ab.
Syntax
HRESULT QueryDeviceStatus(
[in] IWMDMDevice *pDevice,
[out] DWORD *pdwStatus
);
Parameter
-
pDevice [in]
-
Zeiger auf ein IWMDMDevice-Objekt .
-
pdwStatus [out]
-
Null oder mehr der folgenden DWORD-Werte , die die DRM-Aspekte des Geräts beschreiben, kombiniert mit einem bitweisen OR. Siehe Hinweise.
Status BESCHREIBUNG WMDRM_DEVICE_ISWMDRM Das Gerät unterstützt Windows Media DRM. WMDRM_DEVICE_NEEDCLOCK Das Gerät verfügt nicht über eine sichere Uhr. WMDRM_DEVICE_REVOKED Das Gerät wurde widerrufen. WMDRM_CLIENT_NEEDINDIV Die DRM-Sicherheit muss individualisiert werden. WMDRM_DEVICE_REFRESHCLOCK Die Uhr muss aktualisiert werden.
Rückgabewert
Die Methode gibt ein HRESULT zurück. Mögliches Werte (aber nicht die Einzigen) sind die in der folgenden Tabelle.
Rückgabecode | BESCHREIBUNG |
---|---|
|
Die Methode wurde erfolgreich ausgeführt. |
|
Das Eingabeargument ist ungültig. |
|
Das vom Gerät abgerufene Gerätezertifikat ist ungültig. |
|
Fehler beim Abrufen des Gerätezertifikats vom Gerät. |
Bemerkungen
Diese Methode sollte aufgerufen werden, bevor eingeschränkte Aktionen für DRM-Inhalte ausgeführt werden, z. B. das Übertragen von DRM-Inhalten auf das Gerät oder das Abrufen von Verbrauchsinformationen. Wenn die von pdwStatus abgerufenen Werte angeben, dass eine Aktion ausgeführt werden muss (z. B. Individualisierung für den Desktop oder Abrufen einer Uhr für das Gerät), sollte die Anwendung AcquireDeviceData aufrufen und den abgerufenen pdwStatus-Wert aus dieser Funktion an den dwFlags-Parameter in AcquireDeviceData übergeben. Wenn null zurückgegeben wird, unterstützt das Gerät Windows Media DRM 10 für tragbare Geräte nicht, und es müssen keine Aktionen ausgeführt werden. Weitere Informationen finden Sie unter Behandeln geschützter Inhalte in der Anwendung .
Beispiele
Im folgenden C++-Codebeispiel wird ein WMDRMDeviceApp-Objekt erstellt, überprüft, ob es sich bei dem Gerät um ein Windows Media DRM 10-Gerät handelt, ob die Uhr korrekt ist, und fordert dann die Messdaten an.
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;
}
Anforderungen
Anforderung | Wert |
---|---|
Header |
|
Bibliothek |
|