Freigeben über


Programmierhandbuch für Sensor-API

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

Über die Sensor-API