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
S _ OK
Die Methode wurde erfolgreich ausgeführt.
DRM _ E _ INVALIDARG
Das Eingabeargument ist ungültig.
UNGÜLTIGES _ _ NS E-DRM-ZERTIFIKAT _ _
Das vom Gerät abgerufene Gerätezertifikat ist ungültig.
NS _ E _ DRM KANN _ _ _ _ _ GERÄTEZERTIFIKAT NICHT ABRUFEN
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
WMDRMDeviceApp.h (erfordert auch Wmdrmdeviceapp _ i.c, erstellt aus WMDRMDeviceApp.idl)
Bibliothek
Mssachlp.lib

Siehe auch

Behandeln von geschützten Inhalten in der Anwendung

IWMDRMDeviceApp-Schnittstelle

IWMDRMDeviceApp2::QueryDeviceStatus2