Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Utilisez plutôt l’API de capteur UWP .
L’API de capteur COM est déconseillée et ne doit pas être utilisée dans les nouvelles applications. Aucune fonctionnalité ou amélioration supplémentaire n’est planifiée et la prise en charge sera limitée.
Cette section fournit des informations, notamment des exemples de code, sur l’utilisation des fonctionnalités de l’API Sensor. Pour plus d’informations sur les différentes interfaces de programmation, consultez À propos de l’API Sensor.
L’exemple de code de cette section utilise les en-têtes supplémentaires supplémentaires inclus suivants.
#include <windows.h>
#include <initguid.h>
#include <propkeydef.h>
#include <iostream>
#include <propvarutil.h>
#include <functiondiscoverykeys.h>
#include <assert.h>
Vous devez également créer un lien vers ces fichiers de bibliothèque associés supplémentaires : Propsys.lib et PortableDeviceGuids.lib.
L’exemple de code de cette section utilise les constantes suivantes pour les catégories de capteurs, les types et les champs de données. Ces constantes sont des valeurs personnalisées définies par l’exemple de pilote TimeSensor dans le Kit de pilotes Windows. Notez que, bien que la plateforme Capteur active la définition et l’utilisation de types personnalisés tels que ceux-ci, vous devez utiliser des types définis par la plateforme dans la mesure du possible.
// 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
L’exemple de code de cette section utilise les variables suivantes.
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;
L’exemple de code de cette section utilise la fonction suivante pour libérer des pointeurs d’interface COM.
template <class T> void SafeRelease(T **ppT)
{
if (*ppT)
{
(*ppT)->Release();
*ppT = NULL;
}
}
Dans cette section
- récupération d’un objet capteur
- demander des autorisations utilisateur
- récupération et définition des propriétés du capteur
- vérification des champs de données de capteur pris en charge
- à l’aide des événements d’API sensor
- récupération des valeurs de données de capteur
- récupération des types de vecteurs
- à l’aide de capteurs logiques
- création d’interfaces utilisateur Light-Aware