IWMDRMDeviceApp::GenerateMeterChallenge-Methode

Die GenerateMeterChallenge-Methode ruft Messdaten von einem Gerät ab.

Syntax

HRESULT GenerateMeterChallenge(
  [in]  IWMDMDevice *pDevice,
  [in]  BSTR        bstrMeterCert,
  [out] BSTR        *pbstrMeterURL,
  [out] BSTR        *pbstrMeterData
);

Parameter

pDevice [in]

Zeiger auf eine IWMDMDevice-Schnittstelle . Wenn die Anwendung NULL übergibt, werden auf dem Computer gespeicherte Verbrauchsinformationen verwendet, anstatt Informationen von einem verbundenen Gerät zu erfassen.

bstrMeterCert [in]

Das Verbrauchszertifikat der Anwendung als BSTR. Dies ist ein signiertes Zertifikat, das von Microsoft empfangen wurde.

pbstrMeterURL [out]

Die URL, an die Messdaten gesendet werden sollen. Dies wird von Windows Media Geräte-Manager zugeordnet und muss vom Aufrufer mithilfe von SysFreeString kostenlos sein.

pbstrMeterData [out]

Messung von Daten, die an den Messungsdienst gesendet werden sollen. Dies wird von Windows Media Geräte-Manager zugeordnet und muss vom Aufrufer mithilfe von SysFreeString kostenlos sein.

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
Mindestens ein Argument ist ungültig.
DRM_E_INVALIDXMLTAG
XML ist falsch formatiert.
DRM_E_NOXMLCLOSETAG
XML ist falsch formatiert.
DRM_E_NOXMLOPENTAG
XML ist falsch formatiert.
DRM_E_XMLNOTFOUND
Fehler beim Finden eines erforderlichen XML-Tags.
Fehler vom Gerät
Jeder von einer Reihe von Gerätefehlern.
Fehler vom DRM-Client
Jeder von mehreren internen DRM-Clientfehlern.
NS_E_DEVICE_NOT_WMDRM_DEVICE
Das angegebene Gerät ist kein Windows Media DRM-kompatibles Gerät.

Bemerkungen

Vor dem Aufruf dieser Methode sollte die Anwendung IWMDRMDeviceApp::QueryDeviceStatus oder IWMDRMDeviceApp2::QueryDeviceStatus2 aufrufen, um sicherzustellen, dass alle DRM-Komponenten des Geräts auf dem neuesten Stand sind. Diese Methode kann nur auf einem Gerät aufgerufen werden, das Windows Media DRM 10 für tragbare Geräte unterstützt.

Die abgerufenen Daten pbstrMeterData sollten an die durch pbstrMeterURL angegebene URL gesendet werden. Stellen Sie sicher, dass Sie die abgerufenen Daten urlcodieren, damit sie während der Übertragung nicht geändert 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;    
}

// Any updates have been performed. Now get the metering information from the device.
CComBSTR meterCert(METERCERT);
CComBSTR URL;
CComBSTR rawdata;
CComBSTR data;
hr = pDRM->GenerateMeterChallenge(pDevice, meterCert, &URL, &rawdata);
if (hr == S_OK)
    ..... Send to URL...

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

IWMDMGeräteschnittstelle

IWMDRMDeviceApp-Schnittstelle