IWMDRMDeviceApp::QueryDeviceStatus-Methode
Die QueryDeviceStatus-Methode fragt ein Gerät nach seinem aktuellen DRM-Status und seinen 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 Medien-DRM. WMDRM _ DEVICE _ NEEDCLOCK Das Gerät verfügt nicht über eine sichere Uhr. _WMDRM-GERÄT _ WIDERRUFEN 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. |
Hinweise
Diese Methode sollte aufgerufen werden, bevor Sie eingeschränkte Aktionen für DRM-Inhalte ausführen, z. B. das Übertragen von DRM-Inhalten auf das Gerät oder das Abrufen von Messungsinformationen. 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 von dieser Funktion an den dwFlags-Parameter in AcquireDeviceData übergeben. Wenn 0 (null) zurückgegeben wird, unterstützt das Gerät Windows Media DRM 10 für portable Geräte nicht, und es müssen keine Aktionen ausgeführt werden. Weitere Informationen finden Sie unter Behandeln von geschützten Inhalten 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 seine 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 |
|