IWMDRMDeviceApp::GenerateMeterChallenge-Methode
Die GenerateMeterChallenge-Methode erfasst Messdaten von einem Gerät.
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 Messungsinformationen anstelle von Messungsinformationen von einem verbundenen Gerät verwendet.
-
bstrMeterCert [ In]
-
Das Messungszertifikat der Anwendung als BSTR. Dies ist ein signiertes Zertifikat, das von Microsoft empfangen wurde.
-
pbstrMeterURL [ out]
-
Die URL, an die Messungsdaten gesendet werden sollen. Dies wird von Windows Media Geräte-Manager zugeordnet und muss vom Aufrufer mit sysFreeString kostenlos sein.
-
pbstrMeterData [ out]
-
Messungsdaten, die an den Messungsdienst gesendet werden sollen. Dies wird von Windows Media Geräte-Manager zugeordnet und muss vom Aufrufer mit 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 nicht ordnungsgemäß formatiert. |
|
XML ist nicht ordnungsgemäß formatiert. |
|
XML ist nicht ordnungsgemäß formatiert. |
|
Fehler beim Suchen eines erforderlichen XML-Tags. |
|
Eine beliebige Anzahl von Gerätefehlern. |
|
Eine beliebige Anzahl interner DRM-Clientfehler. |
|
Das angegebene Gerät ist kein Windows Medien-DRM-kompatibles Gerät. |
Hinweise
Vor dem Aufrufen 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 portable Geräte unterstützt.
Die abgerufenen Daten pbstrMeterData sollten an die url gesendet werden, die von pbstrMeterURL angegeben wird. Achten Sie darauf, die abgerufenen Daten url-encode zu codieren, damit sie während der Übertragung nicht geändert 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 genau ist, und fordert dann die Messungsdaten 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 |
|