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 |
---|---|
|
Die Methode wurde erfolgreich ausgeführt. |
|
Mindestens ein Argument ist ungültig. |
|
XML ist falsch formatiert. |
|
XML ist falsch formatiert. |
|
XML ist falsch formatiert. |
|
Fehler beim Finden eines erforderlichen XML-Tags. |
|
Jeder von einer Reihe von Gerätefehlern. |
|
Jeder von mehreren internen DRM-Clientfehlern. |
|
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 |
|
Bibliothek |
|