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.
Zum Abrufen eines Sensorobjekts verwenden Sie die ISensorManager-Schnittstelle . Sie können sich diese Schnittstelle als Stammschnittstelle für die Sensor-API vorstellen. Um ISensorManager zu verwenden, müssen Sie zuerst die COM CoCreateInstance-Methode aufrufen.
Im folgenden Beispielcode wird eine Instanz des Sensor-Managers erstellt.
// Create the sensor manager.
hr = CoCreateInstance(CLSID_SensorManager,
NULL, CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&pSensorManager));
if(hr == HRESULT_FROM_WIN32(ERROR_ACCESS_DISABLED_BY_POLICY))
{
// Unable to retrieve sensor manager due to
// group policy settings. Alert the user.
}
Nach dem erfolgreichen Abrufen eines Zeigers auf ISensorManager können Sie Sensoren nach Kategorie, Typ oder ID abrufen. Wenn Sie Sensoren nach Typ oder Kategorie abrufen, erhalten Sie einen Zeiger auf eine ISensorCollection-Schnittstelle , die alle verfügbaren Sensoren enthält, die zur angeforderten Kategorie oder typ gehören. Wenn Sie einen Sensor anhand seiner ID abrufen, erhalten Sie einen Zeiger auf eine ISensor-Schnittstelle , die den von Ihnen angeforderten eindeutigen Sensor darstellt.
Der folgende Beispielcode ruft eine Sammlung von Sensoren ab, die zur Kategorie mit dem Namen SAMPLE_SENSOR_CATEGORY_DATE_TIME gehören. Der Code ruft dann den ersten Sensor in der Auflistung anhand seines Indexes ab.
// Get the sensor collection.
hr = pSensorManager->GetSensorsByCategory(SAMPLE_SENSOR_CATEGORY_DATE_TIME, &pSensorColl);
if(SUCCEEDED(hr))
{
ULONG ulCount = 0;
// Verify that the collection contains
// at least one sensor.
hr = pSensorColl->GetCount(&ulCount);
if(SUCCEEDED(hr))
{
if(ulCount < 1)
{
wprintf_s(L"\nNo sensors of the requested category.\n");
hr = E_UNEXPECTED;
}
}
}
if(SUCCEEDED(hr))
{
// Get the first available sensor.
hr = pSensorColl->GetAt(0, &pSensor);
}
Beachten Sie, dass Sie alle verfügbaren Sensoren mithilfe von SENSOR_CATEGORY_ALL abrufen können.
Auf ähnliche Weise können Sie Sensoren eines bestimmten Typs abrufen.
Im folgenden Beispielcode wird eine Sammlung von Sensoren des Typs SAMPLE_SENSOR_TYPE_TIME abgerufen. Der Code ruft dann den ersten Sensor in der Auflistung anhand seines Indexes ab.
// Get the sensor collection.
hr = pSensorManager->GetSensorsByType(SAMPLE_SENSOR_TYPE_TIME, &pSensorColl);
if(SUCCEEDED(hr))
{
ULONG ulCount = 0;
// Verify that the collection contains
// at least one sensor.
hr = pSensorColl->GetCount(&ulCount);
if(SUCCEEDED(hr))
{
if(ulCount < 1)
{
wprintf_s(L"\nNo sensors of the requested type.\n");
hr = E_UNEXPECTED;
}
}
}
if(SUCCEEDED(hr))
{
// Get the first available sensor.
hr = pSensorColl->GetAt(0, &pSensor);
}
Um einen Sensor anhand seiner ID abzurufen, müssen Sie die eindeutige ID für den Sensor kennen. Sensoren generieren diese ID in der Regel, wenn sie zum ersten Mal verbunden sind, damit Sie mehrere Sensoren desselben Herstellungs- und Modellmodells identifizieren können. Dies bedeutet, dass Sie wahrscheinlich die Sensor-ID im Voraus nicht kennen. Wenn Sie jedoch eine Kopie einer bestimmten Sensor-ID gespeichert haben, die Sie zuvor abgerufen haben, z. B. durch Aufrufen von ISensor::GetID, können Sie denselben Sensor erneut abrufen.
Der folgende Beispielcode zeigt, wie ein Sensor mithilfe seiner ID abgerufen wird.
ISensor* pSensor = NULL;
// Get the sensor collection.
hr = pSensorManager->GetSensorByID(SAMPLE_SENSOR_TIME_ID, &pSensor);
Sie können auch Sensoren abrufen, wenn sie verfügbar werden, indem Sie ein Ereignis vom Sensor-Manager erhalten. Weitere Informationen finden Sie unter "ISensorManager::SetEventSink".