Freigeben über


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
S_OK
Die Methode wurde erfolgreich ausgeführt.
DRM_E_INVALIDARG
Das Eingabeargument ist ungültig.
NS_E_DRM_INVALID_CERTIFICATE
Das vom Gerät abgerufene Gerätezertifikat ist ungültig.
NS_E_DRM_UNABLE_TO_GET_DEVICE_CERT
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
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