Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Verwenden Sie stattdessen die UWP-Sensor-API .
Die COM-basierte Sensor-API ist veraltet und sollte nicht in neuen Anwendungen verwendet werden. Es sind keine zusätzlichen Features oder Verbesserungen geplant, und der Support wird eingeschränkt.
In diesem Thema wird beschrieben, wie Sie überprüfen, ob ein Sensor eine bestimmte Gruppe von Datenfeldern bereitstellen kann.
Nachdem Sie ein Sensorobjekt abgerufen haben, können Sie ISensor::GetSupportedDataFields aufrufen, um zu bestimmen, ob der Sensor die benötigten Daten bereitstellen kann.
Der folgende Beispielcode erstellt eine Hilfsfunktion, die testet, ob der Sensor alle drei Beispieldatenfelder bereitstellen kann. Die Funktion verwendet einen Zeiger auf einen Sensor als Eingabe und gibt einen booleschen Wert zurück, wobei WAHR angibt, dass der Sensor alle erforderlichen Datenfelder bereitstellen kann.
BOOL CheckForSupportedDataFields(ISensor* pSensor)
{
assert(pSensor);
HRESULT hr = S_OK;
DWORD cKeys = 0; // Key count.
BOOL bRet = FALSE;
IPortableDeviceKeyCollection* pKeys = NULL; // Output
// CoCreate a key collection to store property keys.
hr = CoCreateInstance(CLSID_PortableDeviceKeyCollection,
NULL,
CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&pKeys));
if(SUCCEEDED(hr))
{
hr = pSensor->GetSupportedDataFields(&pKeys);
}
if(SUCCEEDED(hr))
{
hr = pKeys->GetCount(&cKeys);
}
if(SUCCEEDED(hr))
{
PROPERTYKEY pk;
BOOL bHour, bMinute, bSecond = FALSE;
for (DWORD i = 0; i < cKeys; i++)
{
hr = pKeys->GetAt(i, &pk);
if(SUCCEEDED(hr))
{
// Test for the data fields.
if(IsEqualPropertyKey(pk, SAMPLE_SENSOR_DATA_TYPE_HOUR))
{
bHour = TRUE;
}
else if(IsEqualPropertyKey(pk, SAMPLE_SENSOR_DATA_TYPE_MINUTE))
{
bMinute = TRUE;
}
else if(IsEqualPropertyKey(pk, SAMPLE_SENSOR_DATA_TYPE_SECOND))
{
bSecond = TRUE;
}
}
}
// Compute the return value.
// If all three properties were found,
// bRet will resolve to TRUE.
bRet = bHour && bMinute && bSecond;
}
SafeRelease(&pKeys);
return bRet;
}