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.
Dieser Abschnitt enthält Informationen, einschließlich Beispielcode, zur Verwendung der Sensor-API-Features. Hintergrundinformationen zu den verschiedenen Programmierschnittstellen finden Sie unter Informationen zur Sensor-API.
Der Beispielcode in diesem Abschnitt verwendet die folgenden zusätzlichen enthaltenen Header.
#include <windows.h>
#include <initguid.h>
#include <propkeydef.h>
#include <iostream>
#include <propvarutil.h>
#include <functiondiscoverykeys.h>
#include <assert.h>
Sie müssen auch eine Verknüpfung zu diesen zusätzlichen zugeordneten Bibliotheksdateien herstellen: Propsys.lib und PortableDeviceGuids.lib.
Der Beispielcode in diesem Abschnitt verwendet die folgenden Konstanten für Sensorkategorien, Typen und Datenfelder. Diese Konstanten sind benutzerdefinierte Werte, die durch das TimeSensor-Treiberbeispiel im Windows Driver Kit definiert werden. Beachten Sie, dass die Sensorplattform zwar das Definieren und Verwenden von benutzerdefinierten Typen wie diesen ermöglicht, sie sollten jedoch nach Möglichkeit plattformdefinierte Typen verwenden.
// Define an object ID.
// {0D77BEE3-7169-42bf-8379-28F9A9B59A57}
DEFINE_GUID(SAMPLE_SENSOR_TIME_ID,
0xd77bee3, 0x7169, 0x42bf, 0x83, 0x79, 0x28, 0xf9, 0xa9, 0xb5, 0x9a, 0x57);
// Define a custom category.
// {062A5C3B-44C1-4ad1-8EFC-0F65B2E4AD48}
DEFINE_GUID(SAMPLE_SENSOR_CATEGORY_DATE_TIME,
0x62a5c3b, 0x44c1, 0x4ad1, 0x8e, 0xfc, 0xf, 0x65, 0xb2, 0xe4, 0xad, 0x48);
// Define a custom type.
// {5F199A84-409F-4e35-B2DD-F9C79F5318A0}
DEFINE_GUID(SAMPLE_SENSOR_TYPE_TIME,
0x5f199a84, 0x409f, 0x4e35, 0xb2, 0xdd, 0xf9, 0xc7, 0x9f, 0x53, 0x18, 0xa0);
// Time sensor fields.
// Because these are related, each field uses the same GUID, but changes the PID.
// {340946F2-9A77-42b0-8176-57D4DF00E5CA}
DEFINE_PROPERTYKEY(SAMPLE_SENSOR_DATA_TYPE_HOUR,
0x340946f2, 0x9a77, 0x42b0, 0x81, 0x76, 0x57, 0xd4, 0xdf, 0x0, 0xe5, 0xca, PID_FIRST_USABLE); // PID = 2
DEFINE_PROPERTYKEY(SAMPLE_SENSOR_DATA_TYPE_MINUTE,
0x340946f2, 0x9a77, 0x42b0, 0x81, 0x76, 0x57, 0xd4, 0xdf, 0x0, 0xe5, 0xca, PID_FIRST_USABLE + 1); // PID = 3
DEFINE_PROPERTYKEY(SAMPLE_SENSOR_DATA_TYPE_SECOND,
0x340946f2, 0x9a77, 0x42b0, 0x81, 0x76, 0x57, 0xd4, 0xdf, 0x0, 0xe5, 0xca, PID_FIRST_USABLE + 2); // PID = 4
Der Beispielcode in diesem Abschnitt verwendet die folgenden Variablen.
HRESULT hr = S_OK;
// Sensor interface pointers
ISensorManager* pSensorManager = NULL;
ISensorCollection* pSensorColl = NULL;
ISensor* pSensor = NULL;
ISensorDataReport* pReport = NULL;
// Time sensor data field variables
ULONG ulHour, ulMinute, ulSecond = 0;
Der Beispielcode in diesem Abschnitt verwendet die folgende Funktion, um COM-Schnittstellenzeiger freizugeben.
template <class T> void SafeRelease(T **ppT)
{
if (*ppT)
{
(*ppT)->Release();
*ppT = NULL;
}
}
In diesem Abschnitt
- Abrufen eines Sensorobjekts
- Anfordern von Benutzerberechtigungen
- Abrufen und Festlegen von Sensoreigenschaften
- Überprüfung auf unterstützte Sensordatenfelder
- Verwenden von Sensor-API-Ereignissen
- Abrufen von Sensordatenwerten
- Abrufen von Vektortypen
- verwendung logischer Sensoren
- Erstellen von Light-Aware Benutzeroberflächen
Verwandte Themen