Reading sensors...
- DoubleDutch
- Addict
- Posts: 3220
- Joined: Thu Aug 07, 2003 7:01 pm
- Location: United Kingdom
- Contact:
Reading sensors...
Windows has a sensor manager in Windows 7 and Windows 8, it can be used to read what sensors are available and the data from them:
http://software.intel.com/en-us/article ... ent-guide/
Has anyone been able to read these with PB yet? Any examples?
http://software.intel.com/en-us/article ... ent-guide/
Has anyone been able to read these with PB yet? Any examples?
https://deluxepixel.com <- My Business website
https://reportcomplete.com <- School end of term reports system
https://reportcomplete.com <- School end of term reports system
Re: Reading sensors...
Maybe this will help you get started. I know you probably need the interfaces from your other post, so just roughly threw these together from http://msdn.microsoft.com/en-us/library ... s.85).aspx and from the sensorsapi.h file in the Windows 7 SDK, not perfect and very rough but might help you get started. In the .h there is an additional enumeration that does not appear at http://msdn.microsoft.com/en-us/library ... s.85).aspx for enumerations, its below in what I cobbled together
I didn't type most of the things unless I happen to have thought about it while doing these so you will need to type stuff. a lot of them are just pointers though. I did not do the constants, you will need to read about them and are GUID's. The constants (see http://msdn.microsoft.com/en-us/library ... s.85).aspx) are located in the sensors.h file in the Windows 7 SDK.
The IID's, UUID's, and CLSID's and stuff like that is in the sensorsapi.h file in the Windows 7 SDK. I assume you have the Windows 7 SDK to get the .h from, but if you don't here it is:
If you don't have the Sensors.h file for the constants, its in the next post (was too much to add to this post)
Code: Select all
; sensorsapi enumerations
Enumeration ; SensorConnectionType
#SENSOR_CONNECTION_TYPE_PC_INTEGRATED = 0
#SENSOR_CONNECTION_TYPE_PC_ATTACHED = 1; #SENSOR_CONNECTION_TYPE_PC_INTEGRATED + 1
#SENSOR_CONNECTION_TYPE_PC_EXTERNAL = 2; #SENSOR_CONNECTION_TYPE_PC_ATTACHED + 1
EndEnumeration
Enumeration ; SensorState
#SENSOR_STATE_MIN = 0
#SENSOR_STATE_READY = 0; #SENSOR_STATE_MIN
#SENSOR_STATE_NOT_AVAILABLE = 1 ;#SENSOR_STATE_READY + 1
#SENSOR_STATE_NO_DATA = 2; #SENSOR_STATE_NOT_AVAILABLE + 1
#SENSOR_STATE_INITIALIZING = 3; #SENSOR_STATE_NO_DATA + 1
#SENSOR_STATE_ACCESS_DENIED = 4; #SENSOR_STATE_INITIALIZING + 1
#SENSOR_STATE_ERROR = 5; #SENSOR_STATE_ACCESS_DENIED + 1
#SENSOR_STATE_MAX = 5; #SENSOR_STATE_ERROR
EndEnumeration
Enumeration ;LOCATION_DESIRED_ACCURACY
#LOCATION_DESIRED_ACCURACY_DEFAULT = 0
#LOCATION_DESIRED_ACCURACY_HIGH = 1; LOCATION_DESIRED_ACCURACY_DEFAULT + 1
EndEnumeration
;********************************************************************
Interface IUnknown ; see http://msdn.microsoft.com/en-us/library/windows/desktop/ms680509(v=vs.85).aspx
AddRef()
QueryInterface(riid, *ppvObject)
Release()
EndInterface
Interface ILocationPermissions Extends IUnknown; This interface is Windows 8 and greater only - see http://msdn.microsoft.com/en-us/library/windows/desktop/hh802757(v=vs.85).aspx
GetGlobalLocationPermission(*pfEnabled); bool
EndInterface
Interface ILogicalSensorManager Extends IUnknown ; see http://msdn.microsoft.com/en-us/library/windows/desktop/dd318934(v=vs.85).aspx
Connect(logicalID, *pPropertyStore)
Disconnect(logicalID)
Uninstall(logicalID)
EndInterface
Interface ISensor Extends IUnknown ;see http://msdn.microsoft.com/en-us/library/windows/desktop/dd318938(v=vs.85).aspx
GetCategory(*pSensorCategory)
GetData(*ppDataReport)
GetEventInterest(*ppValues, *pCount)
GetFriendlyName(*pFriendlyName_BSTR)
GetID(*pID)
GetProperties(*pKeys, **ppProperties)
GetState(*pState)
GetSupportedDataFields(*ppDataFields)
GetType(*pSensorType)
SetEventInterest(*pValues, count.l)
SetEventSink(*pEvents)
SetProperties(*pProperties, *ppResults)
SupportsDataField(key, *pIsSupported)
SupportsEvent(eventGuid, *pIsSupported)
EndInterface
Interface ISensorCollection Extends IUnknown; see http://msdn.microsoft.com/en-us/library/windows/desktop/dd318941(v=vs.85).aspx
Add(*pSensor)
Clear()
GetAt(ulIndex.l, *ppSensor)
GetCount(*pCount)
Remove(*pSensor)
RemoveByID(sensorID)
EndInterface
Interface ISensorDataReport Extends IUnknown; see http://msdn.microsoft.com/en-us/library/windows/desktop/dd318942(v=vs.85).aspx
GetSensorValue(pKey, *pValue)
GetSensorValues(*pKeys, *ppValues)
GetTimestamp(*pTimeStamp)
EndInterface
Interface ISensorEvents Extends IUnknown; see http://msdn.microsoft.com/en-us/library/windows/desktop/dd318944(v=vs.85).aspx
OnEvent(*pSensor, eventID, *pEventData)
OnDataUpdated(*pSensor, *pNewData)
OnLeave(sensorID)
OnStateChanged(*pSensor, state)
EndInterface
Interface ISensorManager Extends IUnknown ; see http://msdn.microsoft.com/en-us/library/windows/desktop/dd318946(v=vs.85).aspx
GetSensorByID(sensorID, *ppSensor)
GetSensorsByCategory(sensorCategory, *ppSensorsFound)
GetSensorsByType(sensorType, *ppSensorsFound)
RequestPermissions(hParent.l, *pSensors, fModal.b)
SetEventSink(*pEvents)
EndInterface
Interface ISensorManagerEvents Extends IUnknown; see http://msdn.microsoft.com/en-us/library/windows/desktop/dd318947(v=vs.85).aspx
OnSensorEnter(*pSensor, state)
EndInterface
The IID's, UUID's, and CLSID's and stuff like that is in the sensorsapi.h file in the Windows 7 SDK. I assume you have the Windows 7 SDK to get the .h from, but if you don't here it is:
Code: Select all
/* this ALWAYS GENERATED file contains the definitions For the interfaces */
/* File created by MIDL compiler version 7.00.0555 */
/* Compiler settings For sensorsapi.idl:
Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
protocol : dce , ms_ext, c_ext, robust
error checks: allocation ref bounds_check enum stub_data
VC __declspec() decoration level:
__declspec(uuid()), __declspec(selectany), __declspec(novtable)
DECLSPEC_UUID(), MIDL_INTERFACE()
*/
/* @@MIDL_FILE_HEADING( ) */
#pragma warning( disable: 4049 ) /* more than 64k source lines */
/* verify that the <rpcndr.h> version is high enough To compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 500
#endif
/* verify that the <rpcsal.h> version is high enough To compile this file*/
#ifndef __REQUIRED_RPCSAL_H_VERSION__
#define __REQUIRED_RPCSAL_H_VERSION__ 100
#endif
#include "rpc.h"
#include "rpcndr.h"
#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>
#endif // __RPCNDR_H_VERSION__
#ifndef COM_NO_WINDOWS_H
#include "windows.h"
#include "ole2.h"
#endif /*COM_NO_WINDOWS_H*/
#ifndef __sensorsapi_h__
#define __sensorsapi_h__
#if Defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif
/* Forward Declarations */
#ifndef __ISensorManager_FWD_DEFINED__
#define __ISensorManager_FWD_DEFINED__
typedef Interface ISensorManager ISensorManager;
#endif /* __ISensorManager_FWD_DEFINED__ */
#ifndef __ISensorCollection_FWD_DEFINED__
#define __ISensorCollection_FWD_DEFINED__
typedef Interface ISensorCollection ISensorCollection;
#endif /* __ISensorCollection_FWD_DEFINED__ */
#ifndef __ISensor_FWD_DEFINED__
#define __ISensor_FWD_DEFINED__
typedef Interface ISensor ISensor;
#endif /* __ISensor_FWD_DEFINED__ */
#ifndef __ISensorDataReport_FWD_DEFINED__
#define __ISensorDataReport_FWD_DEFINED__
typedef Interface ISensorDataReport ISensorDataReport;
#endif /* __ISensorDataReport_FWD_DEFINED__ */
#ifndef __ISensorManagerEvents_FWD_DEFINED__
#define __ISensorManagerEvents_FWD_DEFINED__
typedef Interface ISensorManagerEvents ISensorManagerEvents;
#endif /* __ISensorManagerEvents_FWD_DEFINED__ */
#ifndef __ISensorEvents_FWD_DEFINED__
#define __ISensorEvents_FWD_DEFINED__
typedef Interface ISensorEvents ISensorEvents;
#endif /* __ISensorEvents_FWD_DEFINED__ */
#ifndef __ILogicalSensorManager_FWD_DEFINED__
#define __ILogicalSensorManager_FWD_DEFINED__
typedef Interface ILogicalSensorManager ILogicalSensorManager;
#endif /* __ILogicalSensorManager_FWD_DEFINED__ */
#ifndef __SensorManager_FWD_DEFINED__
#define __SensorManager_FWD_DEFINED__
#ifdef __cplusplus
typedef class SensorManager SensorManager;
#else
typedef struct SensorManager SensorManager;
#endif /* __cplusplus */
#endif /* __SensorManager_FWD_DEFINED__ */
#ifndef __SensorCollection_FWD_DEFINED__
#define __SensorCollection_FWD_DEFINED__
#ifdef __cplusplus
typedef class SensorCollection SensorCollection;
#else
typedef struct SensorCollection SensorCollection;
#endif /* __cplusplus */
#endif /* __SensorCollection_FWD_DEFINED__ */
#ifndef __Sensor_FWD_DEFINED__
#define __Sensor_FWD_DEFINED__
#ifdef __cplusplus
typedef class Sensor Sensor;
#else
typedef struct Sensor Sensor;
#endif /* __cplusplus */
#endif /* __Sensor_FWD_DEFINED__ */
#ifndef __SensorDataReport_FWD_DEFINED__
#define __SensorDataReport_FWD_DEFINED__
#ifdef __cplusplus
typedef class SensorDataReport SensorDataReport;
#else
typedef struct SensorDataReport SensorDataReport;
#endif /* __cplusplus */
#endif /* __SensorDataReport_FWD_DEFINED__ */
#ifndef __LogicalSensorManager_FWD_DEFINED__
#define __LogicalSensorManager_FWD_DEFINED__
#ifdef __cplusplus
typedef class LogicalSensorManager LogicalSensorManager;
#else
typedef struct LogicalSensorManager LogicalSensorManager;
#endif /* __cplusplus */
#endif /* __LogicalSensorManager_FWD_DEFINED__ */
/* header files For imported files */
#include "oaidl.h"
#include "ocidl.h"
#include "propsys.h"
#include "PortableDeviceTypes.h"
#ifdef __cplusplus
extern "C"{
#endif
/* Interface __MIDL_itf_sensorsapi_0000_0000 */
/* [local] */
typedef /* [public][public][public][public] */
enum __MIDL___MIDL_itf_sensorsapi_0000_0000_0001
{ SENSOR_STATE_MIN = 0,
SENSOR_STATE_READY = SENSOR_STATE_MIN,
SENSOR_STATE_NOT_AVAILABLE = ( SENSOR_STATE_READY + 1 ) ,
SENSOR_STATE_NO_DATA = ( SENSOR_STATE_NOT_AVAILABLE + 1 ) ,
SENSOR_STATE_INITIALIZING = ( SENSOR_STATE_NO_DATA + 1 ) ,
SENSOR_STATE_ACCESS_DENIED = ( SENSOR_STATE_INITIALIZING + 1 ) ,
SENSOR_STATE_ERROR = ( SENSOR_STATE_ACCESS_DENIED + 1 ) ,
SENSOR_STATE_MAX = SENSOR_STATE_ERROR
} SensorState;
typedef /* [public] */
enum __MIDL___MIDL_itf_sensorsapi_0000_0000_0002
{ SENSOR_CONNECTION_TYPE_PC_INTEGRATED = 0,
SENSOR_CONNECTION_TYPE_PC_ATTACHED = ( SENSOR_CONNECTION_TYPE_PC_INTEGRATED + 1 ) ,
SENSOR_CONNECTION_TYPE_PC_EXTERNAL = ( SENSOR_CONNECTION_TYPE_PC_ATTACHED + 1 )
} SensorConnectionType;
typedef
enum LOCATION_DESIRED_ACCURACY
{ LOCATION_DESIRED_ACCURACY_DEFAULT = 0,
LOCATION_DESIRED_ACCURACY_HIGH = ( LOCATION_DESIRED_ACCURACY_DEFAULT + 1 )
} LOCATION_DESIRED_ACCURACY;
typedef GUID SENSOR_CATEGORY_ID;
typedef REFGUID REFSENSOR_CATEGORY_ID;
typedef GUID SENSOR_TYPE_ID;
typedef REFGUID REFSENSOR_TYPE_ID;
typedef GUID SENSOR_ID;
typedef REFGUID REFSENSOR_ID;
extern RPC_IF_HANDLE __MIDL_itf_sensorsapi_0000_0000_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_sensorsapi_0000_0000_v0_0_s_ifspec;
#ifndef __ISensorManager_INTERFACE_DEFINED__
#define __ISensorManager_INTERFACE_DEFINED__
/* Interface ISensorManager */
/* [unique][helpstring][uuid][object] */
EXTERN_C const IID IID_ISensorManager;
#if Defined(__cplusplus) && !Defined(CINTERFACE)
MIDL_INTERFACE("BD77DB67-45A8-42DC-8D00-6DCF15F8377A")
ISensorManager : public IUnknown
{
public:
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSensorsByCategory(
/* [in] */ __RPC__in REFSENSOR_CATEGORY_ID sensorCategory,
/* [out] */ __RPC__deref_out_opt ISensorCollection **ppSensorsFound) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSensorsByType(
/* [in] */ __RPC__in REFSENSOR_TYPE_ID sensorType,
/* [out] */ __RPC__deref_out_opt ISensorCollection **ppSensorsFound) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSensorByID(
/* [in] */ __RPC__in REFSENSOR_ID sensorID,
/* [out] */ __RPC__deref_out_opt ISensor **ppSensor) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetEventSink(
/* [in] */ __RPC__in_opt ISensorManagerEvents *pEvents) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE RequestPermissions(
/* [in] */ __RPC__in HWND hParent,
/* [in] */ __RPC__in_opt ISensorCollection *pSensors,
/* [in] */ BOOL fModal) = 0;
};
#else /* C style Interface */
typedef struct ISensorManagerVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in ISensorManager * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in ISensorManager * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in ISensorManager * This);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSensorsByCategory )(
__RPC__in ISensorManager * This,
/* [in] */ __RPC__in REFSENSOR_CATEGORY_ID sensorCategory,
/* [out] */ __RPC__deref_out_opt ISensorCollection **ppSensorsFound);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSensorsByType )(
__RPC__in ISensorManager * This,
/* [in] */ __RPC__in REFSENSOR_TYPE_ID sensorType,
/* [out] */ __RPC__deref_out_opt ISensorCollection **ppSensorsFound);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSensorByID )(
__RPC__in ISensorManager * This,
/* [in] */ __RPC__in REFSENSOR_ID sensorID,
/* [out] */ __RPC__deref_out_opt ISensor **ppSensor);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetEventSink )(
__RPC__in ISensorManager * This,
/* [in] */ __RPC__in_opt ISensorManagerEvents *pEvents);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *RequestPermissions )(
__RPC__in ISensorManager * This,
/* [in] */ __RPC__in HWND hParent,
/* [in] */ __RPC__in_opt ISensorCollection *pSensors,
/* [in] */ BOOL fModal);
END_INTERFACE
} ISensorManagerVtbl;
Interface ISensorManager
{
CONST_VTBL struct ISensorManagerVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define ISensorManager_QueryInterface(This,riid,ppvObject) \
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ISensorManager_AddRef(This) \
( (This)->lpVtbl -> AddRef(This) )
#define ISensorManager_Release(This) \
( (This)->lpVtbl -> Release(This) )
#define ISensorManager_GetSensorsByCategory(This,sensorCategory,ppSensorsFound) \
( (This)->lpVtbl -> GetSensorsByCategory(This,sensorCategory,ppSensorsFound) )
#define ISensorManager_GetSensorsByType(This,sensorType,ppSensorsFound) \
( (This)->lpVtbl -> GetSensorsByType(This,sensorType,ppSensorsFound) )
#define ISensorManager_GetSensorByID(This,sensorID,ppSensor) \
( (This)->lpVtbl -> GetSensorByID(This,sensorID,ppSensor) )
#define ISensorManager_SetEventSink(This,pEvents) \
( (This)->lpVtbl -> SetEventSink(This,pEvents) )
#define ISensorManager_RequestPermissions(This,hParent,pSensors,fModal) \
( (This)->lpVtbl -> RequestPermissions(This,hParent,pSensors,fModal) )
#endif /* COBJMACROS */
#endif /* C style Interface */
#endif /* __ISensorManager_INTERFACE_DEFINED__ */
#ifndef __ISensorCollection_INTERFACE_DEFINED__
#define __ISensorCollection_INTERFACE_DEFINED__
/* Interface ISensorCollection */
/* [unique][helpstring][uuid][object] */
EXTERN_C const IID IID_ISensorCollection;
#if Defined(__cplusplus) && !Defined(CINTERFACE)
MIDL_INTERFACE("23571E11-E545-4DD8-A337-B89BF44B10DF")
ISensorCollection : public IUnknown
{
public:
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetAt(
/* [in] */ ULONG ulIndex,
/* [out] */ __RPC__deref_out_opt ISensor **ppSensor) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetCount(
/* [out] */ __RPC__out ULONG *pCount) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Add(
/* [in] */ __RPC__in_opt ISensor *pSensor) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Remove(
/* [in] */ __RPC__in_opt ISensor *pSensor) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE RemoveByID(
/* [in] */ __RPC__in REFSENSOR_ID sensorID) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Clear( void) = 0;
};
#else /* C style Interface */
typedef struct ISensorCollectionVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in ISensorCollection * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in ISensorCollection * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in ISensorCollection * This);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetAt )(
__RPC__in ISensorCollection * This,
/* [in] */ ULONG ulIndex,
/* [out] */ __RPC__deref_out_opt ISensor **ppSensor);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetCount )(
__RPC__in ISensorCollection * This,
/* [out] */ __RPC__out ULONG *pCount);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Add )(
__RPC__in ISensorCollection * This,
/* [in] */ __RPC__in_opt ISensor *pSensor);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Remove )(
__RPC__in ISensorCollection * This,
/* [in] */ __RPC__in_opt ISensor *pSensor);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *RemoveByID )(
__RPC__in ISensorCollection * This,
/* [in] */ __RPC__in REFSENSOR_ID sensorID);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Clear )(
__RPC__in ISensorCollection * This);
END_INTERFACE
} ISensorCollectionVtbl;
Interface ISensorCollection
{
CONST_VTBL struct ISensorCollectionVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define ISensorCollection_QueryInterface(This,riid,ppvObject) \
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ISensorCollection_AddRef(This) \
( (This)->lpVtbl -> AddRef(This) )
#define ISensorCollection_Release(This) \
( (This)->lpVtbl -> Release(This) )
#define ISensorCollection_GetAt(This,ulIndex,ppSensor) \
( (This)->lpVtbl -> GetAt(This,ulIndex,ppSensor) )
#define ISensorCollection_GetCount(This,pCount) \
( (This)->lpVtbl -> GetCount(This,pCount) )
#define ISensorCollection_Add(This,pSensor) \
( (This)->lpVtbl -> Add(This,pSensor) )
#define ISensorCollection_Remove(This,pSensor) \
( (This)->lpVtbl -> Remove(This,pSensor) )
#define ISensorCollection_RemoveByID(This,sensorID) \
( (This)->lpVtbl -> RemoveByID(This,sensorID) )
#define ISensorCollection_Clear(This) \
( (This)->lpVtbl -> Clear(This) )
#endif /* COBJMACROS */
#endif /* C style Interface */
#endif /* __ISensorCollection_INTERFACE_DEFINED__ */
#ifndef __ISensor_INTERFACE_DEFINED__
#define __ISensor_INTERFACE_DEFINED__
/* Interface ISensor */
/* [unique][helpstring][uuid][object] */
EXTERN_C const IID IID_ISensor;
#if Defined(__cplusplus) && !Defined(CINTERFACE)
MIDL_INTERFACE("5FA08F80-2657-458E-AF75-46F73FA6AC5C")
ISensor : public IUnknown
{
public:
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetID(
/* [out] */ __RPC__out SENSOR_ID *pID) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetCategory(
/* [out] */ __RPC__out SENSOR_CATEGORY_ID *pSensorCategory) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetType(
/* [out] */ __RPC__out SENSOR_TYPE_ID *pSensorType) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetFriendlyName(
/* [out] */ __RPC__deref_out_opt BSTR *pFriendlyName) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetProperty(
/* [in] */ __RPC__in REFPROPERTYKEY key,
/* [out] */ __RPC__out PROPVARIANT *pProperty) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetProperties(
/* [in] */ __RPC__in_opt IPortableDeviceKeyCollection *pKeys,
/* [out] */ __RPC__deref_out_opt IPortableDeviceValues **ppProperties) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSupportedDataFields(
/* [out] */ __RPC__deref_out_opt IPortableDeviceKeyCollection **ppDataFields) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetProperties(
/* [in] */ __RPC__in_opt IPortableDeviceValues *pProperties,
/* [out] */ __RPC__deref_out_opt IPortableDeviceValues **ppResults) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SupportsDataField(
/* [in] */ __RPC__in REFPROPERTYKEY key,
/* [out] */ __RPC__out VARIANT_BOOL *pIsSupported) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetState(
/* [out] */ __RPC__out SensorState *pState) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetData(
/* [out] */ __RPC__deref_out_opt ISensorDataReport **ppDataReport) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SupportsEvent(
/* [in] */ __RPC__in REFGUID eventGuid,
/* [out] */ __RPC__out VARIANT_BOOL *pIsSupported) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetEventInterest(
/* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pCount) GUID **ppValues,
/* [out] */ __RPC__out ULONG *pCount) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetEventInterest(
/* [size_is][in] */ __RPC__in_ecount_full(count) GUID *pValues,
/* [in] */ ULONG count) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetEventSink(
/* [in] */ __RPC__in_opt ISensorEvents *pEvents) = 0;
};
#else /* C style Interface */
typedef struct ISensorVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in ISensor * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in ISensor * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in ISensor * This);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetID )(
__RPC__in ISensor * This,
/* [out] */ __RPC__out SENSOR_ID *pID);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetCategory )(
__RPC__in ISensor * This,
/* [out] */ __RPC__out SENSOR_CATEGORY_ID *pSensorCategory);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetType )(
__RPC__in ISensor * This,
/* [out] */ __RPC__out SENSOR_TYPE_ID *pSensorType);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetFriendlyName )(
__RPC__in ISensor * This,
/* [out] */ __RPC__deref_out_opt BSTR *pFriendlyName);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetProperty )(
__RPC__in ISensor * This,
/* [in] */ __RPC__in REFPROPERTYKEY key,
/* [out] */ __RPC__out PROPVARIANT *pProperty);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetProperties )(
__RPC__in ISensor * This,
/* [in] */ __RPC__in_opt IPortableDeviceKeyCollection *pKeys,
/* [out] */ __RPC__deref_out_opt IPortableDeviceValues **ppProperties);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSupportedDataFields )(
__RPC__in ISensor * This,
/* [out] */ __RPC__deref_out_opt IPortableDeviceKeyCollection **ppDataFields);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetProperties )(
__RPC__in ISensor * This,
/* [in] */ __RPC__in_opt IPortableDeviceValues *pProperties,
/* [out] */ __RPC__deref_out_opt IPortableDeviceValues **ppResults);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SupportsDataField )(
__RPC__in ISensor * This,
/* [in] */ __RPC__in REFPROPERTYKEY key,
/* [out] */ __RPC__out VARIANT_BOOL *pIsSupported);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetState )(
__RPC__in ISensor * This,
/* [out] */ __RPC__out SensorState *pState);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetData )(
__RPC__in ISensor * This,
/* [out] */ __RPC__deref_out_opt ISensorDataReport **ppDataReport);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SupportsEvent )(
__RPC__in ISensor * This,
/* [in] */ __RPC__in REFGUID eventGuid,
/* [out] */ __RPC__out VARIANT_BOOL *pIsSupported);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetEventInterest )(
__RPC__in ISensor * This,
/* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pCount) GUID **ppValues,
/* [out] */ __RPC__out ULONG *pCount);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetEventInterest )(
__RPC__in ISensor * This,
/* [size_is][in] */ __RPC__in_ecount_full(count) GUID *pValues,
/* [in] */ ULONG count);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetEventSink )(
__RPC__in ISensor * This,
/* [in] */ __RPC__in_opt ISensorEvents *pEvents);
END_INTERFACE
} ISensorVtbl;
Interface ISensor
{
CONST_VTBL struct ISensorVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define ISensor_QueryInterface(This,riid,ppvObject) \
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ISensor_AddRef(This) \
( (This)->lpVtbl -> AddRef(This) )
#define ISensor_Release(This) \
( (This)->lpVtbl -> Release(This) )
#define ISensor_GetID(This,pID) \
( (This)->lpVtbl -> GetID(This,pID) )
#define ISensor_GetCategory(This,pSensorCategory) \
( (This)->lpVtbl -> GetCategory(This,pSensorCategory) )
#define ISensor_GetType(This,pSensorType) \
( (This)->lpVtbl -> GetType(This,pSensorType) )
#define ISensor_GetFriendlyName(This,pFriendlyName) \
( (This)->lpVtbl -> GetFriendlyName(This,pFriendlyName) )
#define ISensor_GetProperty(This,key,pProperty) \
( (This)->lpVtbl -> GetProperty(This,key,pProperty) )
#define ISensor_GetProperties(This,pKeys,ppProperties) \
( (This)->lpVtbl -> GetProperties(This,pKeys,ppProperties) )
#define ISensor_GetSupportedDataFields(This,ppDataFields) \
( (This)->lpVtbl -> GetSupportedDataFields(This,ppDataFields) )
#define ISensor_SetProperties(This,pProperties,ppResults) \
( (This)->lpVtbl -> SetProperties(This,pProperties,ppResults) )
#define ISensor_SupportsDataField(This,key,pIsSupported) \
( (This)->lpVtbl -> SupportsDataField(This,key,pIsSupported) )
#define ISensor_GetState(This,pState) \
( (This)->lpVtbl -> GetState(This,pState) )
#define ISensor_GetData(This,ppDataReport) \
( (This)->lpVtbl -> GetData(This,ppDataReport) )
#define ISensor_SupportsEvent(This,eventGuid,pIsSupported) \
( (This)->lpVtbl -> SupportsEvent(This,eventGuid,pIsSupported) )
#define ISensor_GetEventInterest(This,ppValues,pCount) \
( (This)->lpVtbl -> GetEventInterest(This,ppValues,pCount) )
#define ISensor_SetEventInterest(This,pValues,count) \
( (This)->lpVtbl -> SetEventInterest(This,pValues,count) )
#define ISensor_SetEventSink(This,pEvents) \
( (This)->lpVtbl -> SetEventSink(This,pEvents) )
#endif /* COBJMACROS */
#endif /* C style Interface */
#endif /* __ISensor_INTERFACE_DEFINED__ */
#ifndef __ISensorDataReport_INTERFACE_DEFINED__
#define __ISensorDataReport_INTERFACE_DEFINED__
/* Interface ISensorDataReport */
/* [unique][helpstring][uuid][object] */
EXTERN_C const IID IID_ISensorDataReport;
#if Defined(__cplusplus) && !Defined(CINTERFACE)
MIDL_INTERFACE("0AB9DF9B-C4B5-4796-8898-0470706A2E1D")
ISensorDataReport : public IUnknown
{
public:
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetTimestamp(
/* [out] */ __RPC__out SYSTEMTIME *pTimeStamp) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSensorValue(
/* [in] */ __RPC__in REFPROPERTYKEY pKey,
/* [out] */ __RPC__out PROPVARIANT *pValue) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSensorValues(
/* [in] */ __RPC__in_opt IPortableDeviceKeyCollection *pKeys,
/* [out] */ __RPC__deref_out_opt IPortableDeviceValues **ppValues) = 0;
};
#else /* C style Interface */
typedef struct ISensorDataReportVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in ISensorDataReport * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in ISensorDataReport * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in ISensorDataReport * This);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetTimestamp )(
__RPC__in ISensorDataReport * This,
/* [out] */ __RPC__out SYSTEMTIME *pTimeStamp);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSensorValue )(
__RPC__in ISensorDataReport * This,
/* [in] */ __RPC__in REFPROPERTYKEY pKey,
/* [out] */ __RPC__out PROPVARIANT *pValue);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSensorValues )(
__RPC__in ISensorDataReport * This,
/* [in] */ __RPC__in_opt IPortableDeviceKeyCollection *pKeys,
/* [out] */ __RPC__deref_out_opt IPortableDeviceValues **ppValues);
END_INTERFACE
} ISensorDataReportVtbl;
Interface ISensorDataReport
{
CONST_VTBL struct ISensorDataReportVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define ISensorDataReport_QueryInterface(This,riid,ppvObject) \
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ISensorDataReport_AddRef(This) \
( (This)->lpVtbl -> AddRef(This) )
#define ISensorDataReport_Release(This) \
( (This)->lpVtbl -> Release(This) )
#define ISensorDataReport_GetTimestamp(This,pTimeStamp) \
( (This)->lpVtbl -> GetTimestamp(This,pTimeStamp) )
#define ISensorDataReport_GetSensorValue(This,pKey,pValue) \
( (This)->lpVtbl -> GetSensorValue(This,pKey,pValue) )
#define ISensorDataReport_GetSensorValues(This,pKeys,ppValues) \
( (This)->lpVtbl -> GetSensorValues(This,pKeys,ppValues) )
#endif /* COBJMACROS */
#endif /* C style Interface */
#endif /* __ISensorDataReport_INTERFACE_DEFINED__ */
#ifndef __ISensorManagerEvents_INTERFACE_DEFINED__
#define __ISensorManagerEvents_INTERFACE_DEFINED__
/* Interface ISensorManagerEvents */
/* [object][helpstring][uuid] */
EXTERN_C const IID IID_ISensorManagerEvents;
#if Defined(__cplusplus) && !Defined(CINTERFACE)
MIDL_INTERFACE("9B3B0B86-266A-4AAD-B21F-FDE5501001B7")
ISensorManagerEvents : public IUnknown
{
public:
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE OnSensorEnter(
/* [in] */ __RPC__in_opt ISensor *pSensor,
/* [in] */ SensorState state) = 0;
};
#else /* C style Interface */
typedef struct ISensorManagerEventsVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in ISensorManagerEvents * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in ISensorManagerEvents * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in ISensorManagerEvents * This);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *OnSensorEnter )(
__RPC__in ISensorManagerEvents * This,
/* [in] */ __RPC__in_opt ISensor *pSensor,
/* [in] */ SensorState state);
END_INTERFACE
} ISensorManagerEventsVtbl;
Interface ISensorManagerEvents
{
CONST_VTBL struct ISensorManagerEventsVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define ISensorManagerEvents_QueryInterface(This,riid,ppvObject) \
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ISensorManagerEvents_AddRef(This) \
( (This)->lpVtbl -> AddRef(This) )
#define ISensorManagerEvents_Release(This) \
( (This)->lpVtbl -> Release(This) )
#define ISensorManagerEvents_OnSensorEnter(This,pSensor,state) \
( (This)->lpVtbl -> OnSensorEnter(This,pSensor,state) )
#endif /* COBJMACROS */
#endif /* C style Interface */
#endif /* __ISensorManagerEvents_INTERFACE_DEFINED__ */
#ifndef __ISensorEvents_INTERFACE_DEFINED__
#define __ISensorEvents_INTERFACE_DEFINED__
/* Interface ISensorEvents */
/* [object][helpstring][uuid] */
EXTERN_C const IID IID_ISensorEvents;
#if Defined(__cplusplus) && !Defined(CINTERFACE)
MIDL_INTERFACE("5D8DCC91-4641-47E7-B7C3-B74F48A6C391")
ISensorEvents : public IUnknown
{
public:
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE OnStateChanged(
/* [in] */ __RPC__in_opt ISensor *pSensor,
/* [in] */ SensorState state) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE OnDataUpdated(
/* [in] */ __RPC__in_opt ISensor *pSensor,
/* [in] */ __RPC__in_opt ISensorDataReport *pNewData) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE OnEvent(
/* [in] */ __RPC__in_opt ISensor *pSensor,
/* [in] */ __RPC__in REFGUID eventID,
/* [in] */ __RPC__in_opt IPortableDeviceValues *pEventData) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE OnLeave(
/* [in] */ __RPC__in REFSENSOR_ID ID) = 0;
};
#else /* C style Interface */
typedef struct ISensorEventsVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in ISensorEvents * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in ISensorEvents * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in ISensorEvents * This);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *OnStateChanged )(
__RPC__in ISensorEvents * This,
/* [in] */ __RPC__in_opt ISensor *pSensor,
/* [in] */ SensorState state);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *OnDataUpdated )(
__RPC__in ISensorEvents * This,
/* [in] */ __RPC__in_opt ISensor *pSensor,
/* [in] */ __RPC__in_opt ISensorDataReport *pNewData);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *OnEvent )(
__RPC__in ISensorEvents * This,
/* [in] */ __RPC__in_opt ISensor *pSensor,
/* [in] */ __RPC__in REFGUID eventID,
/* [in] */ __RPC__in_opt IPortableDeviceValues *pEventData);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *OnLeave )(
__RPC__in ISensorEvents * This,
/* [in] */ __RPC__in REFSENSOR_ID ID);
END_INTERFACE
} ISensorEventsVtbl;
Interface ISensorEvents
{
CONST_VTBL struct ISensorEventsVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define ISensorEvents_QueryInterface(This,riid,ppvObject) \
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ISensorEvents_AddRef(This) \
( (This)->lpVtbl -> AddRef(This) )
#define ISensorEvents_Release(This) \
( (This)->lpVtbl -> Release(This) )
#define ISensorEvents_OnStateChanged(This,pSensor,state) \
( (This)->lpVtbl -> OnStateChanged(This,pSensor,state) )
#define ISensorEvents_OnDataUpdated(This,pSensor,pNewData) \
( (This)->lpVtbl -> OnDataUpdated(This,pSensor,pNewData) )
#define ISensorEvents_OnEvent(This,pSensor,eventID,pEventData) \
( (This)->lpVtbl -> OnEvent(This,pSensor,eventID,pEventData) )
#define ISensorEvents_OnLeave(This,ID) \
( (This)->lpVtbl -> OnLeave(This,ID) )
#endif /* COBJMACROS */
#endif /* C style Interface */
#endif /* __ISensorEvents_INTERFACE_DEFINED__ */
#ifndef __ILogicalSensorManager_INTERFACE_DEFINED__
#define __ILogicalSensorManager_INTERFACE_DEFINED__
/* Interface ILogicalSensorManager */
/* [unique][helpstring][uuid][object] */
EXTERN_C const IID IID_ILogicalSensorManager;
#if Defined(__cplusplus) && !Defined(CINTERFACE)
MIDL_INTERFACE("7490B4D4-1BE9-469A-9743-37A27C1D80AF")
ILogicalSensorManager : public IUnknown
{
public:
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Connect(
/* [in] */ __RPC__in REFGUID logicalID,
/* [in] */ __RPC__in_opt IPropertyStore *pPropertyStore) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Uninstall(
/* [in] */ __RPC__in REFGUID logicalID) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Disconnect(
/* [in] */ __RPC__in REFGUID logicalID) = 0;
};
#else /* C style Interface */
typedef struct ILogicalSensorManagerVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in ILogicalSensorManager * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in ILogicalSensorManager * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in ILogicalSensorManager * This);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Connect )(
__RPC__in ILogicalSensorManager * This,
/* [in] */ __RPC__in REFGUID logicalID,
/* [in] */ __RPC__in_opt IPropertyStore *pPropertyStore);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Uninstall )(
__RPC__in ILogicalSensorManager * This,
/* [in] */ __RPC__in REFGUID logicalID);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Disconnect )(
__RPC__in ILogicalSensorManager * This,
/* [in] */ __RPC__in REFGUID logicalID);
END_INTERFACE
} ILogicalSensorManagerVtbl;
Interface ILogicalSensorManager
{
CONST_VTBL struct ILogicalSensorManagerVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define ILogicalSensorManager_QueryInterface(This,riid,ppvObject) \
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ILogicalSensorManager_AddRef(This) \
( (This)->lpVtbl -> AddRef(This) )
#define ILogicalSensorManager_Release(This) \
( (This)->lpVtbl -> Release(This) )
#define ILogicalSensorManager_Connect(This,logicalID,pPropertyStore) \
( (This)->lpVtbl -> Connect(This,logicalID,pPropertyStore) )
#define ILogicalSensorManager_Uninstall(This,logicalID) \
( (This)->lpVtbl -> Uninstall(This,logicalID) )
#define ILogicalSensorManager_Disconnect(This,logicalID) \
( (This)->lpVtbl -> Disconnect(This,logicalID) )
#endif /* COBJMACROS */
#endif /* C style Interface */
#endif /* __ILogicalSensorManager_INTERFACE_DEFINED__ */
#ifndef __SensorsApiLib_LIBRARY_DEFINED__
#define __SensorsApiLib_LIBRARY_DEFINED__
/* library SensorsApiLib */
/* [helpstring][version][uuid] */
EXTERN_C const IID LIBID_SensorsApiLib;
EXTERN_C const CLSID CLSID_SensorManager;
#ifdef __cplusplus
class DECLSPEC_UUID("77A1C827-FCD2-4689-8915-9D613CC5FA3E")
SensorManager;
#endif
EXTERN_C const CLSID CLSID_SensorCollection;
#ifdef __cplusplus
class DECLSPEC_UUID("79C43ADB-A429-469F-AA39-2F2B74B75937")
SensorCollection;
#endif
EXTERN_C const CLSID CLSID_Sensor;
#ifdef __cplusplus
class DECLSPEC_UUID("E97CED00-523A-4133-BF6F-D3A2DAE7F6BA")
Sensor;
#endif
EXTERN_C const CLSID CLSID_SensorDataReport;
#ifdef __cplusplus
class DECLSPEC_UUID("4EA9D6EF-694B-4218-8816-CCDA8DA74BBA")
SensorDataReport;
#endif
EXTERN_C const CLSID CLSID_LogicalSensorManager;
#ifdef __cplusplus
class DECLSPEC_UUID("50A7B286-7D23-41E6-9440-4DAEE00DC5F0")
LogicalSensorManager;
#endif
#endif /* __SensorsApiLib_LIBRARY_DEFINED__ */
/* Additional Prototypes For ALL interfaces */
unsigned long __RPC_USER BSTR_UserSize( __RPC__in unsigned long *, unsigned long , __RPC__in BSTR * );
unsigned char * __RPC_USER BSTR_UserMarshal( __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in BSTR * );
unsigned char * __RPC_USER BSTR_UserUnmarshal(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out BSTR * );
void __RPC_USER BSTR_UserFree( __RPC__in unsigned long *, __RPC__in BSTR * );
unsigned long __RPC_USER HWND_UserSize( __RPC__in unsigned long *, unsigned long , __RPC__in HWND * );
unsigned char * __RPC_USER HWND_UserMarshal( __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in HWND * );
unsigned char * __RPC_USER HWND_UserUnmarshal(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out HWND * );
void __RPC_USER HWND_UserFree( __RPC__in unsigned long *, __RPC__in HWND * );
unsigned long __RPC_USER LPSAFEARRAY_UserSize( __RPC__in unsigned long *, unsigned long , __RPC__in LPSAFEARRAY * );
unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal( __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in LPSAFEARRAY * );
unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out LPSAFEARRAY * );
void __RPC_USER LPSAFEARRAY_UserFree( __RPC__in unsigned long *, __RPC__in LPSAFEARRAY * );
unsigned long __RPC_USER BSTR_UserSize64( __RPC__in unsigned long *, unsigned long , __RPC__in BSTR * );
unsigned char * __RPC_USER BSTR_UserMarshal64( __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in BSTR * );
unsigned char * __RPC_USER BSTR_UserUnmarshal64(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out BSTR * );
void __RPC_USER BSTR_UserFree64( __RPC__in unsigned long *, __RPC__in BSTR * );
unsigned long __RPC_USER HWND_UserSize64( __RPC__in unsigned long *, unsigned long , __RPC__in HWND * );
unsigned char * __RPC_USER HWND_UserMarshal64( __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in HWND * );
unsigned char * __RPC_USER HWND_UserUnmarshal64(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out HWND * );
void __RPC_USER HWND_UserFree64( __RPC__in unsigned long *, __RPC__in HWND * );
unsigned long __RPC_USER LPSAFEARRAY_UserSize64( __RPC__in unsigned long *, unsigned long , __RPC__in LPSAFEARRAY * );
unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal64( __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in LPSAFEARRAY * );
unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal64(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out LPSAFEARRAY * );
void __RPC_USER LPSAFEARRAY_UserFree64( __RPC__in unsigned long *, __RPC__in LPSAFEARRAY * );
/* End of Additional Prototypes */
#ifdef __cplusplus
}
#endif
#endif
Last edited by SFSxOI on Sat Aug 25, 2012 1:08 pm, edited 2 times in total.
The advantage of a 64 bit operating system over a 32 bit operating system comes down to only being twice the headache.
Re: Reading sensors...
The Sensors.h file if you don't have it:
Code: Select all
//-----------------------------------------------------------------------
// <copyright file="Sensors.h" company="Microsoft">
// Copyright (c) 2007 Microsoft Corporation. All rights
// reserved.
// </copyright>
//
// Module:
// Sensors.h
//
// Description:
// This file defines supporting structures And values used in
// the Sensors platform.
//
//-----------------------------------------------------------------------
#ifndef _SENSORS_H_
#define _SENSORS_H_
#include "propkeydef.h"
// {BA1BB692-9B7A-4833-9A1E-525ED134E7E2}
DEFINE_GUID(GUID_DEVINTERFACE_SENSOR, 0XBA1BB692, 0X9B7A, 0X4833, 0X9A, 0X1E, 0X52, 0X5E, 0XD1, 0X34, 0XE7, 0XE2);
// {BFD96016-6BD7-4560-AD34-F2F6607E8F81}
DEFINE_GUID(SENSOR_EVENT_STATE_CHANGED, 0XBFD96016, 0X6BD7, 0X4560, 0XAD, 0X34, 0XF2, 0XF6, 0X60, 0X7E, 0X8F, 0X81);
// {2ED0F2A4-0087-41D3-87DB-6773370B3C88}
DEFINE_GUID(SENSOR_EVENT_DATA_UPDATED, 0X2ED0F2A4, 0X0087, 0X41D3, 0X87, 0XDB, 0X67, 0X73, 0X37, 0X0B, 0X3C, 0X88);
// {2358F099-84C9-4D3D-90DF-C2421E2B2045}
DEFINE_GUID(SENSOR_EVENT_PROPERTY_CHANGED, 0X2358F099, 0X84C9, 0X4D3D, 0X90, 0XDF, 0XC2, 0X42, 0X1E, 0X2B, 0X20, 0X45);
// {2ED0F2A4-0087-41D3-87DB-6773370B3C88}
DEFINE_PROPERTYKEY(SENSOR_EVENT_PARAMETER_EVENT_ID, 0X64346E30, 0X8728, 0X4B34, 0XBD, 0XF6, 0X4F, 0X52, 0X44, 0X2C, 0X5C, 0X28, 2);
// {64346E30-8728-4B34-BDF6-4F52442C5C28}
DEFINE_PROPERTYKEY(SENSOR_EVENT_PARAMETER_STATE, 0X64346E30, 0X8728, 0X4B34, 0XBD, 0XF6, 0X4F, 0X52, 0X44, 0X2C, 0X5C, 0X28, 3); // [VT_UI4]
/////////////////////////////////////////////////////////////////////
// Sensor Properties
//
// {7F8383EC-D3EC-495C-A8CF-B8BBE85C2920}
DEFINE_GUID(SENSOR_PROPERTY_COMMON_GUID, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20);
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_TYPE, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 2); //[VT_CLSID]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_STATE, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 3); //[VT_UI4]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_PERSISTENT_UNIQUE_ID, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 5); //[VT_CLSID]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_MANUFACTURER, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 6); //[VT_LPWSTR]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_MODEL, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 7); //[VT_LPWSTR]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_SERIAL_NUMBER, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 8); //[VT_LPWSTR]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_FRIENDLY_NAME, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 9); //[VT_LPWSTR]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_DESCRIPTION, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 10); //[VT_LPWSTR]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_CONNECTION_TYPE, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 11); //[VT_UI4]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_MIN_REPORT_INTERVAL, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 12); //[VT_UI4]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_CURRENT_REPORT_INTERVAL, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 13); //[VT_UI4]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_CHANGE_SENSITIVITY, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 14); //[VT_UNKNOWN], IPortableDeviceValues
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_DEVICE_PATH, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 15); //[VT_LPWSTR]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_LIGHT_RESPONSE_CURVE, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 16); //[VT_VECTOR|VT_UI4]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_ACCURACY, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 17); //[VT_UNKNOWN], IPortableDeviceValues
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_RESOLUTION, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 18); //[VT_UNKNOWN], IPortableDeviceValues
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_LOCATION_DESIRED_ACCURACY, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 19); //[VT_UI4]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_RANGE_MINIMUM, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 20); //[VT_UNKNOWN], IPortableDeviceValues
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_RANGE_MAXIMUM, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 21); //[VT_UNKNOWN], IPortableDeviceValues
/////////////////////////////////////////////////////////////////////
// Sensor Categories
//
// {C317C286-C468-4288-9975-D4C4587C442C}
DEFINE_GUID(SENSOR_CATEGORY_ALL, 0XC317C286, 0XC468, 0X4288, 0X99, 0X75, 0XD4, 0XC4, 0X58, 0X7C, 0X44, 0X2C);
// {BFA794E4-F964-4FDB-90F6-51056BFE4B44}
DEFINE_GUID(SENSOR_CATEGORY_LOCATION, 0XBFA794E4, 0XF964, 0X4FDB, 0X90, 0XF6, 0X51, 0X5, 0X6B, 0XFE, 0X4B, 0X44);
// {323439AA-7F66-492B-BA0C-73E9AA0A65D5}
DEFINE_GUID(SENSOR_CATEGORY_ENVIRONMENTAL, 0X323439AA, 0X7F66, 0X492B, 0XBA, 0XC, 0X73, 0XE9, 0XAA, 0XA, 0X65, 0XD5);
// {CD09DAF1-3B2E-4C3D-B598-B5E5FF93FD46}
DEFINE_GUID(SENSOR_CATEGORY_MOTION, 0XCD09DAF1, 0X3B2E, 0X4C3D, 0XB5, 0X98, 0XB5, 0XE5, 0XFF, 0X93, 0XFD, 0X46);
// {9E6C04B6-96FE-4954-B726-68682A473F69}
DEFINE_GUID(SENSOR_CATEGORY_ORIENTATION, 0X9E6C04B6, 0X96FE, 0X4954, 0XB7, 0X26, 0X68, 0X68, 0X2A, 0X47, 0X3F, 0X69);
// {8D131D68-8EF7-4656-80B5-CCCBD93791C5}
DEFINE_GUID(SENSOR_CATEGORY_MECHANICAL, 0X8D131D68, 0X8EF7, 0X4656, 0X80, 0XB5, 0XCC, 0XCB, 0XD9, 0X37, 0X91, 0XC5);
// {FB73FCD8-FC4A-483C-AC58-27B691C6BEFF}
DEFINE_GUID(SENSOR_CATEGORY_ELECTRICAL, 0XFB73FCD8, 0XFC4A, 0X483C, 0XAC, 0X58, 0X27, 0XB6, 0X91, 0XC6, 0XBE, 0XFF);
// {CA19690F-A2C7-477D-A99E-99EC6E2B5648}
DEFINE_GUID(SENSOR_CATEGORY_BIOMETRIC, 0XCA19690F, 0XA2C7, 0X477D, 0XA9, 0X9E, 0X99, 0XEC, 0X6E, 0X2B, 0X56, 0X48);
// {17A665C0-9063-4216-B202-5C7A255E18CE}
DEFINE_GUID(SENSOR_CATEGORY_LIGHT, 0X17A665C0, 0X9063, 0X4216, 0XB2, 0X2, 0X5C, 0X7A, 0X25, 0X5E, 0X18, 0XCE);
// {B000E77E-F5B5-420F-815D-0270A726F270}
DEFINE_GUID(SENSOR_CATEGORY_SCANNER, 0XB000E77E, 0XF5B5, 0X420F, 0X81, 0X5D, 0X2, 0X70, 0XA7, 0X26, 0XF2, 0X70);
/////////////////////////////////////////////////////////////////////
// Sensor Types
//
//
// Location Sensor Types
//
// {ED4CA589-327A-4FF9-A560-91DA4B48275E}
DEFINE_GUID(SENSOR_TYPE_LOCATION_GPS, 0XED4CA589, 0X327A, 0X4FF9, 0XA5, 0X60, 0X91, 0XDA, 0X4B, 0X48, 0X27, 0X5E);
// {095F8184-0FA9-4445-8E6E-B70F320B6B4C}
DEFINE_GUID(SENSOR_TYPE_LOCATION_STATIC, 0X095F8184, 0X0FA9, 0X4445, 0X8E, 0X6E, 0XB7, 0X0F, 0X32, 0X0B, 0X6B, 0X4C);
// {3B2EAE4A-72CE-436D-96D2-3C5B8570E987}
DEFINE_GUID(SENSOR_TYPE_LOCATION_LOOKUP, 0X3B2EAE4A, 0X72CE, 0X436D, 0X96, 0XD2, 0X3C, 0X5B, 0X85, 0X70, 0XE9, 0X87);
// {691C341A-5406-4FE1-942F-2246CBEB39E0}
DEFINE_GUID(SENSOR_TYPE_LOCATION_TRIANGULATION, 0X691C341A, 0X5406, 0X4FE1, 0X94, 0X2F, 0X22, 0X46, 0XCB, 0XEB, 0X39, 0XE0);
// {9B2D0566-0368-4F71-B88D-533F132031DE}
DEFINE_GUID(SENSOR_TYPE_LOCATION_OTHER, 0X9B2D0566, 0X0368, 0X4F71, 0XB8, 0X8D, 0X53, 0X3F, 0X13, 0X20, 0X31, 0XDE);
// {D26988CF-5162-4039-BB17-4C58B698E44A}
DEFINE_GUID(SENSOR_TYPE_LOCATION_BROADCAST, 0XD26988CF, 0X5162, 0X4039, 0XBB, 0X17, 0X4C, 0X58, 0XB6, 0X98, 0XE4, 0X4A);
// {1A37D538-F28B-42DA-9FCE-A9D0A2A6D829}
DEFINE_GUID(SENSOR_TYPE_LOCATION_DEAD_RECKONING, 0X1A37D538, 0XF28B, 0X42DA, 0X9F, 0XCE, 0XA9, 0XD0, 0XA2, 0XA6, 0XD8, 0X29);
//
// Environmental Sensor Types
//
// {04FD0EC4-D5DA-45FA-95A9-5DB38EE19306}
DEFINE_GUID(SENSOR_TYPE_ENVIRONMENTAL_TEMPERATURE, 0X04FD0EC4, 0XD5DA, 0X45FA, 0X95, 0XA9, 0X5D, 0XB3, 0X8E, 0XE1, 0X93, 0X06);
// {0E903829-FF8A-4A93-97DF-3DCBDE402288}
DEFINE_GUID(SENSOR_TYPE_ENVIRONMENTAL_ATMOSPHERIC_PRESSURE, 0XE903829, 0XFF8A, 0X4A93, 0X97, 0XDF, 0X3D, 0XCB, 0XDE, 0X40, 0X22, 0X88);
// {5C72BF67-BD7E-4257-990B-98A3BA3B400A}
DEFINE_GUID(SENSOR_TYPE_ENVIRONMENTAL_HUMIDITY, 0X5C72BF67, 0XBD7E, 0X4257, 0X99, 0XB, 0X98, 0XA3, 0XBA, 0X3B, 0X40, 0XA);
// {DD50607B-A45F-42CD-8EFD-EC61761C4226}
DEFINE_GUID(SENSOR_TYPE_ENVIRONMENTAL_WIND_SPEED, 0XDD50607B, 0XA45F, 0X42CD, 0X8E, 0XFD, 0XEC, 0X61, 0X76, 0X1C, 0X42, 0X26);
// {9EF57A35-9306-434D-AF09-37FA5A9C00BD}
DEFINE_GUID(SENSOR_TYPE_ENVIRONMENTAL_WIND_DIRECTION, 0X9EF57A35, 0X9306, 0X434D, 0XAF, 0X9, 0X37, 0XFA, 0X5A, 0X9C, 0X0, 0XBD);
//
// Motion Sensor Types
//
// {C04D2387-7340-4CC2-991E-3B18CB8EF2F4}
DEFINE_GUID(SENSOR_TYPE_ACCELEROMETER_1D, 0XC04D2387, 0X7340, 0X4CC2, 0X99, 0X1E, 0X3B, 0X18, 0XCB, 0X8E, 0XF2, 0XF4);
// {B2C517A8-F6B5-4BA6-A423-5DF560B4CC07}
DEFINE_GUID(SENSOR_TYPE_ACCELEROMETER_2D, 0XB2C517A8, 0XF6B5, 0X4BA6, 0XA4, 0X23, 0X5D, 0XF5, 0X60, 0XB4, 0XCC, 0X7);
// {C2FB0F5F-E2D2-4C78-BCD0-352A9582819D}
DEFINE_GUID(SENSOR_TYPE_ACCELEROMETER_3D, 0XC2FB0F5F, 0XE2D2, 0X4C78, 0XBC, 0XD0, 0X35, 0X2A, 0X95, 0X82, 0X81, 0X9D);
// {5C7C1A12-30A5-43B9-A4B2-CF09EC5B7BE8}
DEFINE_GUID(SENSOR_TYPE_MOTION_DETECTOR, 0X5C7C1A12, 0X30A5, 0X43B9, 0XA4, 0XB2, 0XCF, 0X9, 0XEC, 0X5B, 0X7B, 0XE8);
// {FA088734-F552-4584-8324-EDFAF649652C}
DEFINE_GUID(SENSOR_TYPE_GYROMETER_1D, 0XFA088734, 0XF552, 0X4584, 0X83, 0X24, 0XED, 0XFA, 0XF6, 0X49, 0X65, 0X2C);
// {31EF4F83-919B-48BF-8DE0-5D7A9D240556}
DEFINE_GUID(SENSOR_TYPE_GYROMETER_2D, 0X31EF4F83, 0X919B, 0X48BF, 0X8D, 0XE0, 0X5D, 0X7A, 0X9D, 0X24, 0X5, 0X56);
// {09485F5A-759E-42C2-BD4B-A349B75C8643}
DEFINE_GUID(SENSOR_TYPE_GYROMETER_3D, 0X9485F5A, 0X759E, 0X42C2, 0XBD, 0X4B, 0XA3, 0X49, 0XB7, 0X5C, 0X86, 0X43);
// {6BD73C1F-0BB4-4310-81B2-DFC18A52BF94}
DEFINE_GUID(SENSOR_TYPE_SPEEDOMETER, 0X6BD73C1F, 0XBB4, 0X4310, 0X81, 0XB2, 0XDF, 0XC1, 0X8A, 0X52, 0XBF, 0X94);
//
// Orientation Sensor Types
//
// {A415F6C5-CB50-49D0-8E62-A8270BD7A26C}
DEFINE_GUID(SENSOR_TYPE_COMPASS_1D, 0XA415F6C5, 0XCB50, 0X49D0, 0X8E, 0X62, 0XA8, 0X27, 0XB, 0XD7, 0XA2, 0X6C);
// {15655CC0-997A-4D30-84DB-57CABA3648BB}
DEFINE_GUID(SENSOR_TYPE_COMPASS_2D, 0X15655CC0, 0X997A, 0X4D30, 0X84, 0XDB, 0X57, 0XCA, 0XBA, 0X36, 0X48, 0XBB);
// {76B5CE0D-17DD-414D-93A1-E127F40BDF6E}
DEFINE_GUID(SENSOR_TYPE_COMPASS_3D, 0X76B5CE0D, 0X17DD, 0X414D, 0X93, 0XA1, 0XE1, 0X27, 0XF4, 0XB, 0XDF, 0X6E);
// {B96F98C5-7A75-4BA7-94E9-AC868C966DD8}
DEFINE_GUID(SENSOR_TYPE_INCLINOMETER_1D, 0XB96F98C5, 0X7A75, 0X4BA7, 0X94, 0XE9, 0XAC, 0X86, 0X8C, 0X96, 0X6D, 0XD8);
// {AB140F6D-83EB-4264-B70B-B16A5B256A01}
DEFINE_GUID(SENSOR_TYPE_INCLINOMETER_2D, 0XAB140F6D, 0X83EB, 0X4264, 0XB7, 0XB, 0XB1, 0X6A, 0X5B, 0X25, 0X6A, 0X1);
// {B84919FB-EA85-4976-8444-6F6F5C6D31DB}
DEFINE_GUID(SENSOR_TYPE_INCLINOMETER_3D, 0XB84919FB, 0XEA85, 0X4976, 0X84, 0X44, 0X6F, 0X6F, 0X5C, 0X6D, 0X31, 0XDB);
// {5F14AB2F-1407-4306-A93F-B1DBABE4F9C0}
DEFINE_GUID(SENSOR_TYPE_DISTANCE_1D, 0X5F14AB2F, 0X1407, 0X4306, 0XA9, 0X3F, 0XB1, 0XDB, 0XAB, 0XE4, 0XF9, 0XC0);
// {5CF9A46C-A9A2-4E55-B6A1-A04AAFA95A92}
DEFINE_GUID(SENSOR_TYPE_DISTANCE_2D, 0X5CF9A46C, 0XA9A2, 0X4E55, 0XB6, 0XA1, 0XA0, 0X4A, 0XAF, 0XA9, 0X5A, 0X92);
// {A20CAE31-0E25-4772-9FE5-96608A1354B2}
DEFINE_GUID(SENSOR_TYPE_DISTANCE_3D, 0XA20CAE31, 0XE25, 0X4772, 0X9F, 0XE5, 0X96, 0X60, 0X8A, 0X13, 0X54, 0XB2);
//
// Electrical Sensor Types
//
// {C5484637-4FB7-4953-98B8-A56D8AA1FB1E}
DEFINE_GUID(SENSOR_TYPE_VOLTAGE, 0XC5484637, 0X4FB7, 0X4953, 0X98, 0XB8, 0XA5, 0X6D, 0X8A, 0XA1, 0XFB, 0X1E);
// {5ADC9FCE-15A0-4BBE-A1AD-2D38A9AE831C}
DEFINE_GUID(SENSOR_TYPE_CURRENT, 0X5ADC9FCE, 0X15A0, 0X4BBE, 0XA1, 0XAD, 0X2D, 0X38, 0XA9, 0XAE, 0X83, 0X1C);
// {CA2FFB1C-2317-49C0-A0B4-B63CE63461A0}
DEFINE_GUID(SENSOR_TYPE_CAPACITANCE, 0XCA2FFB1C, 0X2317, 0X49C0, 0XA0, 0XB4, 0XB6, 0X3C, 0XE6, 0X34, 0X61, 0XA0);
// {9993D2C8-C157-4A52-A7B5-195C76037231}
DEFINE_GUID(SENSOR_TYPE_RESISTANCE, 0X9993D2C8, 0XC157, 0X4A52, 0XA7, 0XB5, 0X19, 0X5C, 0X76, 0X03, 0X72, 0X31);
// {DC1D933F-C435-4C7D-A2FE-607192A524D3}
DEFINE_GUID(SENSOR_TYPE_INDUCTANCE, 0XDC1D933F, 0XC435, 0X4C7D, 0XA2, 0XFE, 0X60, 0X71, 0X92, 0XA5, 0X24, 0XD3);
// {212F10F5-14AB-4376-9A43-A7794098C2FE}
DEFINE_GUID(SENSOR_TYPE_ELECTRICAL_POWER, 0X212F10F5, 0X14AB, 0X4376, 0X9A, 0X43, 0XA7, 0X79, 0X40, 0X98, 0XC2, 0XFE);
// {2B3681A9-CADC-45AA-A6FF-54957C8BB440}
DEFINE_GUID(SENSOR_TYPE_POTENTIOMETER, 0X2B3681A9, 0XCADC, 0X45AA, 0XA6, 0XFF, 0X54, 0X95, 0X7C, 0X8B, 0XB4, 0X40);
//
// Mechanical Sensor Types
//
// {9C7E371F-1041-460B-8D5C-71E4752E350C}
DEFINE_GUID(SENSOR_TYPE_BOOLEAN_SWITCH, 0X9C7E371F, 0X1041, 0X460B, 0X8D, 0X5C, 0X71, 0XE4, 0X75, 0X2E, 0X35, 0XC);
// {B3EE4D76-37A4-4402-B25E-99C60A775FA1}
DEFINE_GUID(SENSOR_TYPE_MULTIVALUE_SWITCH, 0XB3EE4D76, 0X37A4, 0X4402, 0XB2, 0X5E, 0X99, 0XC6, 0XA, 0X77, 0X5F, 0XA1);
// {C2AB2B02-1A1C-4778-A81B-954A1788CC75}
DEFINE_GUID(SENSOR_TYPE_FORCE, 0XC2AB2B02, 0X1A1C, 0X4778, 0XA8, 0X1B, 0X95, 0X4A, 0X17, 0X88, 0XCC, 0X75);
// {C06DD92C-7FEB-438E-9BF6-82207FFF5BB8}
DEFINE_GUID(SENSOR_TYPE_SCALE, 0XC06DD92C, 0X7FEB, 0X438E, 0X9B, 0XF6, 0X82, 0X20, 0X7F, 0XFF, 0X5B, 0XB8);
// {26D31F34-6352-41CF-B793-EA0713D53D77}
DEFINE_GUID(SENSOR_TYPE_PRESSURE, 0X26D31F34, 0X6352, 0X41CF, 0XB7, 0X93, 0XEA, 0X7, 0X13, 0XD5, 0X3D, 0X77);
// {C6D1EC0E-6803-4361-AD3D-85BCC58C6D29}
DEFINE_GUID(SENSOR_TYPE_STRAIN, 0XC6D1EC0E, 0X6803, 0X4361, 0XAD, 0X3D, 0X85, 0XBC, 0XC5, 0X8C, 0X6D, 0X29);
//
// Biometric Sensor Types
//
// {C138C12B-AD52-451C-9375-87F518FF10C6}
DEFINE_GUID(SENSOR_TYPE_HUMAN_PRESENCE, 0XC138C12B, 0XAD52, 0X451C, 0X93, 0X75, 0X87, 0XF5, 0X18, 0XFF, 0X10, 0XC6);
// {5220DAE9-3179-4430-9F90-06266D2A34DE}
DEFINE_GUID(SENSOR_TYPE_HUMAN_PROXIMITY, 0X5220DAE9, 0X3179, 0X4430, 0X9F, 0X90, 0X6, 0X26, 0X6D, 0X2A, 0X34, 0XDE);
// {17DB3018-06C4-4F7D-81AF-9274B7599C27}
DEFINE_GUID(SENSOR_TYPE_TOUCH, 0X17DB3018, 0X6C4, 0X4F7D, 0X81, 0XAF, 0X92, 0X74, 0XB7, 0X59, 0X9C, 0X27);
//
// Light Sensor Types
//
// {97F115C8-599A-4153-8894-D2D12899918A}
DEFINE_GUID(SENSOR_TYPE_AMBIENT_LIGHT, 0X97F115C8, 0X599A, 0X4153, 0X88, 0X94, 0XD2, 0XD1, 0X28, 0X99, 0X91, 0X8A);
//
// Scanner Sensor Types
//
// {44328EF5-02DD-4E8D-AD5D-9249832B2ECA}
DEFINE_GUID(SENSOR_TYPE_RFID_SCANNER, 0X44328EF5, 0X2DD, 0X4E8D, 0XAD, 0X5D, 0X92, 0X49, 0X83, 0X2B, 0X2E, 0XCA);
// {990B3D8F-85BB-45FF-914D-998C04F372DF}
DEFINE_GUID(SENSOR_TYPE_BARCODE_SCANNER, 0X990B3D8F, 0X85BB, 0X45FF, 0X91, 0X4D, 0X99, 0X8C, 0X4, 0XF3, 0X72, 0XDF);
/////////////////////////////////////////////////////////////////////
// Sensor Data Types
//
//
// Common Sensor Data Types
//
// {DB5E0CF2-CF1F-4C18-B46C-D86011D62150}
DEFINE_GUID(SENSOR_DATA_TYPE_COMMON_GUID, 0XDB5E0CF2, 0XCF1F, 0X4C18, 0XB4, 0X6C, 0XD8, 0X60, 0X11, 0XD6, 0X21, 0X50);
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_TIMESTAMP, 0XDB5E0CF2, 0XCF1F, 0X4C18, 0XB4, 0X6C, 0XD8, 0X60, 0X11, 0XD6, 0X21, 0X50, 2); //[VT_FILETIME]
//
// Location Sensor Data Types
//
// {055C74D8-CA6F-47D6-95C6-1ED3637A0FF4}
DEFINE_GUID(SENSOR_DATA_TYPE_LOCATION_GUID, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4);
// SENSOR_DATA_TYPE_LATITUDE: Degrees latitude where North is positive
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_LATITUDE_DEGREES, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 2); //[VT_R8]
// SENSOR_DATA_TYPE_LONGITUDE: Degrees longitude where East is positive
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_LONGITUDE_DEGREES, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 3); //[VT_R8]
// SENSOR_DATA_TYPE_ALTITUDE_SEALEVEL_METERS: Altitude With regards To sea level, in meters
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ALTITUDE_SEALEVEL_METERS, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 4); //[VT_R8]
// SENSOR_DATA_TYPE_ALTITUDE_ELLIPSOID_METERS: Altitude With regards To ellipsoid, in meters
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ALTITUDE_ELLIPSOID_METERS, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 5); //[VT_R8]
// SENSOR_DATA_TYPE_SPEED_KNOTS: Speed measured in knots
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_SPEED_KNOTS, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 6); //[VT_R8]
// SENSOR_DATA_TYPE_TRUE_HEADING_DEGREES: Heading relative To true North in degrees
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_TRUE_HEADING_DEGREES, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 7); //[VT_R8]
// SENSOR_DATA_TYPE_MAGNETIC_HEADING_DEGREES: Heading relative To magnetic North in degrees
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_MAGNETIC_HEADING_DEGREES, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 8); //[VT_R8]
// SENSOR_DATA_TYPE_MAGNETIC_VARIATION: Magnetic variation. East is positive
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_MAGNETIC_VARIATION, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 9); //[VT_R8]
// SENSOR_DATA_TYPE_FIX_QUALITY: Quality of fix
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_FIX_QUALITY, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 10); //[VT_I4]
// SENSOR_DATA_TYPE_FIX_TYPE: Fix Type
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_FIX_TYPE, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 11); //[VT_I4]
// SENSOR_DATA_TYPE_POSITION_DILUTION_OF_PRECISION: Position Dilution of Precision
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_POSITION_DILUTION_OF_PRECISION, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 12); //[VT_R8]
// SENSOR_DATA_TYPE_HORIZONAL_DILUTION_OF_PRECISION: HORIZONTAL Dilution of Precision
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_HORIZONAL_DILUTION_OF_PRECISION, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 13); //[VT_R8]
// SENSOR_DATA_TYPE_VERTICAL_DILUTION_OF_PRECISION: VERTICAL Dilution of Precision
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_VERTICAL_DILUTION_OF_PRECISION, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 14); //[VT_R8]
// SENSOR_DATA_TYPE_SATELLITES_USED_COUNT: Number of satellites used in solution
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_SATELLITES_USED_COUNT, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 15); //[VT_I4]
// SENSOR_DATA_TYPE_SATELLITES_USED_PRNS: PRN numbers of satellites used in the solution
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_SATELLITES_USED_PRNS, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 16); //[VT_VECTOR | VT_UI4]
// SENSOR_DATA_TYPE_SATELLITES_IN_VIEW: Number of satellites in view. From 0-GPS_MAX_SATELLITES
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_SATELLITES_IN_VIEW, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 17); //[VT_I4]
// SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_PRNS: PRN numbers of satellites in view
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_PRNS, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 18); //[VT_VECTOR | VT_UI4]
// SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_ELEVATION: Elevation of each sattellite in view
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_ELEVATION, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 19); //[VT_VECTOR | VT_R8]
// SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_AZIMUTH: Azimuth of each satellite in view
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_AZIMUTH, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 20); //[VT_VECTOR | VT_R8]
// SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_STN_RATIO: Signal To noise ratio For each satellite in view
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_STN_RATIO, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 21); //[VT_VECTOR | VT_R8]
// SENSOR_DATA_TYPE_ERROR_RADIUS_METERS: Accuracy of Latitude And Longitude values
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ERROR_RADIUS_METERS, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 22); //[VT_R8]
// SENSOR_DATA_TYPE_ADDRESS1: AddressLine1
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ADDRESS1, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 23); //[VT_LPWSTR]
// SENSOR_DATA_TYPE_ADDRESS2: AddressLine2
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ADDRESS2, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 24); //[VT_LPWSTR]
// SENSOR_DATA_TYPE_CITY: City
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CITY, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 25); //[VT_LPWSTR]
// SENSOR_DATA_TYPE_STATE_PROVINCE: State/Province
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_STATE_PROVINCE, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 26); //[VT_LPWSTR]
// SENSOR_DATA_TYPE_POSTALCODE: Postal Code (e.g. ZIP)
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_POSTALCODE, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 27); //[VT_LPWSTR]
// SENSOR_DATA_TYPE_COUNTRY_REGION: Country/Region
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_COUNTRY_REGION, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 28); //[VT_LPWSTR]
// SENSOR_DATA_TYPE_ALTITUDE_ELLIPSOID_ERROR_METERS: Altitude Error With regards To ellipsoid, in meters
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ALTITUDE_ELLIPSOID_ERROR_METERS, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 29); //[VT_R8]
// SENSOR_DATA_TYPE_ALTITUDE_SEALEVEL_ERROR_METERS: Altitude Error With regards To sea level, in meters
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ALTITUDE_SEALEVEL_ERROR_METERS, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 30); //[VT_R8]
// SENSOR_DATA_TYPE_GPS_SELECTION_MODE:
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_GPS_SELECTION_MODE, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 31); //[VT_I4]
// SENSOR_DATA_TYPE_GPS_OPERATION_MODE:
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_GPS_OPERATION_MODE, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 32); //[VT_I4]
// SENSOR_DATA_TYPE_GPS_STATUS:
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_GPS_STATUS, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 33); //[VT_I4]
// SENSOR_DATA_TYPE_GEOIDAL_SEPARATION:
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_GEOIDAL_SEPARATION, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 34); //[VT_R8]
// SENSOR_DATA_TYPE_DGPS_DATA_AGE:
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_DGPS_DATA_AGE, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 35); //[VT_R8]
// SENSOR_DATA_TYPE_ALTITUDE_ANTENNA_SEALEVEL_METERS:
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ALTITUDE_ANTENNA_SEALEVEL_METERS, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 36); //[VT_R8]
// SENSOR_DATA_TYPE_DIFFERENTIAL_REFERENCE_STATION_ID:
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_DIFFERENTIAL_REFERENCE_STATION_ID, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 37); //[VT_I4]
// SENSOR_DATA_TYPE_NMEA_SENTENCE:
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_NMEA_SENTENCE, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 38); //[VT_LPWSTR]
// SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_ID:
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_ID, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 39); //[VT_VECTOR|VT_I4]
//
// Environmental Sensor Data Types
//
// {8B0AA2F1-2D57-42EE-8CC0-4D27622B46C4}
DEFINE_GUID(SENSOR_DATA_TYPE_ENVIRONMENTAL_GUID, 0X8B0AA2F1, 0X2D57, 0X42EE, 0X8C, 0XC0, 0X4D, 0X27, 0X62, 0X2B, 0X46, 0XC4);
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_TEMPERATURE_CELSIUS, 0X8B0AA2F1, 0X2D57, 0X42EE, 0X8C, 0XC0, 0X4D, 0X27, 0X62, 0X2B, 0X46, 0XC4, 2); //[VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_RELATIVE_HUMIDITY_PERCENT, 0X8B0AA2F1, 0X2D57, 0X42EE, 0X8C, 0XC0, 0X4D, 0X27, 0X62, 0X2B, 0X46, 0XC4, 3); //[VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ATMOSPHERIC_PRESSURE_BAR, 0X8B0AA2F1, 0X2D57, 0X42EE, 0X8C, 0XC0, 0X4D, 0X27, 0X62, 0X2B, 0X46, 0XC4, 4); //[VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_WIND_DIRECTION_DEGREES_ANTICLOCKWISE, 0X8B0AA2F1, 0X2D57, 0X42EE, 0X8C, 0XC0, 0X4D, 0X27, 0X62, 0X2B, 0X46, 0XC4, 5); //[VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_WIND_SPEED_METERS_PER_SECOND, 0X8B0AA2F1, 0X2D57, 0X42EE, 0X8C, 0XC0, 0X4D, 0X27, 0X62, 0X2B, 0X46, 0XC4, 6); //[VT_R4]
//
// Motion Sensor Data Types
//
// {3F8A69A2-07C5-4E48-A965-CD797AAB56D5}
DEFINE_GUID(SENSOR_DATA_TYPE_MOTION_GUID, 0X3F8A69A2, 0X7C5, 0X4E48, 0XA9, 0X65, 0XCD, 0X79, 0X7A, 0XAB, 0X56, 0XD5);
// Accelerometer Data Types
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ACCELERATION_X_G, 0X3F8A69A2, 0X7C5, 0X4E48, 0XA9, 0X65, 0XCD, 0X79, 0X7A, 0XAB, 0X56, 0XD5, 2); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ACCELERATION_Y_G, 0X3F8A69A2, 0X7C5, 0X4E48, 0XA9, 0X65, 0XCD, 0X79, 0X7A, 0XAB, 0X56, 0XD5, 3); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ACCELERATION_Z_G, 0X3F8A69A2, 0X7C5, 0X4E48, 0XA9, 0X65, 0XCD, 0X79, 0X7A, 0XAB, 0X56, 0XD5, 4); //[VT_R8]
// Gyrometer Data Types
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ANGULAR_ACCELERATION_X_DEGREES_PER_SECOND_SQUARED, 0X3F8A69A2, 0X7C5, 0X4E48, 0XA9, 0X65, 0XCD, 0X79, 0X7A, 0XAB, 0X56, 0XD5, 5); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ANGULAR_ACCELERATION_Y_DEGREES_PER_SECOND_SQUARED, 0X3F8A69A2, 0X7C5, 0X4E48, 0XA9, 0X65, 0XCD, 0X79, 0X7A, 0XAB, 0X56, 0XD5, 6); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ANGULAR_ACCELERATION_Z_DEGREES_PER_SECOND_SQUARED, 0X3F8A69A2, 0X7C5, 0X4E48, 0XA9, 0X65, 0XCD, 0X79, 0X7A, 0XAB, 0X56, 0XD5, 7); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_SPEED_METERS_PER_SECOND, 0X3F8A69A2, 0X7C5, 0X4E48, 0XA9, 0X65, 0XCD, 0X79, 0X7A, 0XAB, 0X56, 0XD5, 8); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_MOTION_STATE, 0X3F8A69A2, 0X7C5, 0X4E48, 0XA9, 0X65, 0XCD, 0X79, 0X7A, 0XAB, 0X56, 0XD5, 9); //[VT_BOOL]
//
// Orientation Sensor Data Types
//
// {1637D8A2-4248-4275-865D-558DE84AEDFD}
DEFINE_GUID(SENSOR_DATA_TYPE_ORIENTATION_GUID, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD);
// Inclinometer Data Types
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_TILT_X_DEGREES, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 2); //[VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_TILT_Y_DEGREES, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 3); //[VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_TILT_Z_DEGREES, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 4); //[VT_R4]
// Compass Data Types
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_MAGNETIC_HEADING_X_DEGREES, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 5); //[VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_MAGNETIC_HEADING_Y_DEGREES, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 6); //[VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_MAGNETIC_HEADING_Z_DEGREES, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 7); //[VT_R4]
// Distance Data Types
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_DISTANCE_X_METERS, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 8); //[VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_DISTANCE_Y_METERS, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 9); //[VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_DISTANCE_Z_METERS, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 10); //[VT_R4]
//
// Mechanical Sensor Data Types
//
// {38564A7C-F2F2-49BB-9B2B-BA60F66A58DF}
DEFINE_GUID(SENSOR_DATA_TYPE_GUID_MECHANICAL_GUID, 0X38564A7C, 0XF2F2, 0X49BB, 0X9B, 0X2B, 0XBA, 0X60, 0XF6, 0X6A, 0X58, 0XDF);
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_BOOLEAN_SWITCH_STATE, 0X38564A7C, 0XF2F2, 0X49BB, 0X9B, 0X2B, 0XBA, 0X60, 0XF6, 0X6A, 0X58, 0XDF, 2); //[VT_BOOL]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_MULTIVALUE_SWITCH_STATE, 0X38564A7C, 0XF2F2, 0X49BB, 0X9B, 0X2B, 0XBA, 0X60, 0XF6, 0X6A, 0X58, 0XDF, 3); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_FORCE_NEWTONS, 0X38564A7C, 0XF2F2, 0X49BB, 0X9B, 0X2B, 0XBA, 0X60, 0XF6, 0X6A, 0X58, 0XDF, 4); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ABSOLUTE_PRESSURE_PASCAL, 0X38564A7C, 0XF2F2, 0X49BB, 0X9B, 0X2B, 0XBA, 0X60, 0XF6, 0X6A, 0X58, 0XDF, 5); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_GAUGE_PRESSURE_PASCAL, 0X38564A7C, 0XF2F2, 0X49BB, 0X9B, 0X2B, 0XBA, 0X60, 0XF6, 0X6A, 0X58, 0XDF, 6); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_STRAIN, 0X38564A7C, 0XF2F2, 0X49BB, 0X9B, 0X2B, 0XBA, 0X60, 0XF6, 0X6A, 0X58, 0XDF, 7); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_WEIGHT_KILOGRAMS, 0X38564A7C, 0XF2F2, 0X49BB, 0X9B, 0X2B, 0XBA, 0X60, 0XF6, 0X6A, 0X58, 0XDF, 8); //[VT_R8]
//
// Biometric Sensor Data Types
//
// {2299288A-6D9E-4B0B-B7EC-3528F89E40AF}
DEFINE_GUID(SENSOR_DATA_TYPE_BIOMETRIC_GUID, 0X2299288A, 0X6D9E, 0X4B0B, 0XB7, 0XEC, 0X35, 0X28, 0XF8, 0X9E, 0X40, 0XAF);
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_HUMAN_PRESENCE, 0X2299288A, 0X6D9E, 0X4B0B, 0XB7, 0XEC, 0X35, 0X28, 0XF8, 0X9E, 0X40, 0XAF, 2); //[VT_BOOL]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_HUMAN_PROXIMITY_METERS, 0X2299288A, 0X6D9E, 0X4B0B, 0XB7, 0XEC, 0X35, 0X28, 0XF8, 0X9E, 0X40, 0XAF, 3); //[VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_TOUCH_STATE, 0X2299288A, 0X6D9E, 0X4B0B, 0XB7, 0XEC, 0X35, 0X28, 0XF8, 0X9E, 0X40, 0XAF, 4); //[VT_BOOL]
//
// Light Sensor Data Types
//
// {E4C77CE2-DCB7-46E9-8439-4FEC548833A6}
DEFINE_GUID(SENSOR_DATA_TYPE_LIGHT_GUID, 0XE4C77CE2, 0XDCB7, 0X46E9, 0X84, 0X39, 0X4F, 0XEC, 0X54, 0X88, 0X33, 0XA6);
// Ambient light in LUX, Lumens per square meter, the ACPI convention For reporting ambient light values
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_LIGHT_LEVEL_LUX, 0XE4C77CE2, 0XDCB7, 0X46E9, 0X84, 0X39, 0X4F, 0XEC, 0X54, 0X88, 0X33, 0XA6, 2); //[VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_LIGHT_TEMPERATURE_KELVIN, 0XE4C77CE2, 0XDCB7, 0X46E9, 0X84, 0X39, 0X4F, 0XEC, 0X54, 0X88, 0X33, 0XA6, 3); //[VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_LIGHT_CHROMACITY, 0XE4C77CE2, 0XDCB7, 0X46E9, 0X84, 0X39, 0X4F, 0XEC, 0X54, 0X88, 0X33, 0XA6, 4); //[VT_VECTOR|VT_R4]
//
// Scanner Sensor Data Types
//
// {D7A59A3C-3421-44AB-8D3A-9DE8AB6C4CAE}
DEFINE_GUID(SENSOR_DATA_TYPE_SCANNER_GUID, 0XD7A59A3C, 0X3421, 0X44AB, 0X8D, 0X3A, 0X9D, 0XE8, 0XAB, 0X6C, 0X4C, 0XAE);
// EM4102 RFID protocol uses 40 bit tags, stored in 64 bit value: VT_UI8
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_RFID_TAG_40_BIT, 0XD7A59A3C, 0X3421, 0X44AB, 0X8D, 0X3A, 0X9D, 0XE8, 0XAB, 0X6C, 0X4C, 0XAE, 2); //[VT_UI8]
//
// Electrical Sensor Data Types
//
// {BBB246D1-E242-4780-A2D3-CDED84F35842}
DEFINE_GUID(SENSOR_DATA_TYPE_ELECTRICAL_GUID, 0XBBB246D1, 0XE242, 0X4780, 0XA2, 0XD3, 0XCD, 0XED, 0X84, 0XF3, 0X58, 0X42);
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_VOLTAGE_VOLTS, 0XBBB246D1, 0XE242, 0X4780, 0XA2, 0XD3, 0XCD, 0XED, 0X84, 0XF3, 0X58, 0X42, 2); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CURRENT_AMPS, 0XBBB246D1, 0XE242, 0X4780, 0XA2, 0XD3, 0XCD, 0XED, 0X84, 0XF3, 0X58, 0X42, 3); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CAPACITANCE_FARAD, 0XBBB246D1, 0XE242, 0X4780, 0XA2, 0XD3, 0XCD, 0XED, 0X84, 0XF3, 0X58, 0X42, 4); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_RESISTANCE_OHMS, 0XBBB246D1, 0XE242, 0X4780, 0XA2, 0XD3, 0XCD, 0XED, 0X84, 0XF3, 0X58, 0X42, 5); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_INDUCTANCE_HENRY, 0XBBB246D1, 0XE242, 0X4780, 0XA2, 0XD3, 0XCD, 0XED, 0X84, 0XF3, 0X58, 0X42, 6); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ELECTRICAL_POWER_WATTS, 0XBBB246D1, 0XE242, 0X4780, 0XA2, 0XD3, 0XCD, 0XED, 0X84, 0XF3, 0X58, 0X42, 7); //[VT_R8]
#endif
The advantage of a 64 bit operating system over a 32 bit operating system comes down to only being twice the headache.
- DoubleDutch
- Addict
- Posts: 3220
- Joined: Thu Aug 07, 2003 7:01 pm
- Location: United Kingdom
- Contact:
Re: Reading sensors...
Thanks. 

https://deluxepixel.com <- My Business website
https://reportcomplete.com <- School end of term reports system
https://reportcomplete.com <- School end of term reports system
- DoubleDutch
- Addict
- Posts: 3220
- Joined: Thu Aug 07, 2003 7:01 pm
- Location: United Kingdom
- Contact:
Re: Reading sensors...
Here are some newer files:
Code: Select all
/* this ALWAYS GENERATED file contains the definitions for the interfaces */
/* File created by MIDL compiler version 8.00.0595 */
/* @@MIDL_FILE_HEADING( ) */
#pragma warning( disable: 4049 ) /* more than 64k source lines */
/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 500
#endif
/* verify that the <rpcsal.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCSAL_H_VERSION__
#define __REQUIRED_RPCSAL_H_VERSION__ 100
#endif
#include "rpc.h"
#include "rpcndr.h"
#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>
#endif // __RPCNDR_H_VERSION__
#ifndef COM_NO_WINDOWS_H
#include "windows.h"
#include "ole2.h"
#endif /*COM_NO_WINDOWS_H*/
#ifndef __sensorsapi_h__
#define __sensorsapi_h__
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif
/* Forward Declarations */
#ifndef __ISensorManager_FWD_DEFINED__
#define __ISensorManager_FWD_DEFINED__
typedef interface ISensorManager ISensorManager;
#endif /* __ISensorManager_FWD_DEFINED__ */
#ifndef __ILocationPermissions_FWD_DEFINED__
#define __ILocationPermissions_FWD_DEFINED__
typedef interface ILocationPermissions ILocationPermissions;
#endif /* __ILocationPermissions_FWD_DEFINED__ */
#ifndef __ISensorCollection_FWD_DEFINED__
#define __ISensorCollection_FWD_DEFINED__
typedef interface ISensorCollection ISensorCollection;
#endif /* __ISensorCollection_FWD_DEFINED__ */
#ifndef __ISensor_FWD_DEFINED__
#define __ISensor_FWD_DEFINED__
typedef interface ISensor ISensor;
#endif /* __ISensor_FWD_DEFINED__ */
#ifndef __ISensorDataReport_FWD_DEFINED__
#define __ISensorDataReport_FWD_DEFINED__
typedef interface ISensorDataReport ISensorDataReport;
#endif /* __ISensorDataReport_FWD_DEFINED__ */
#ifndef __ISensorManagerEvents_FWD_DEFINED__
#define __ISensorManagerEvents_FWD_DEFINED__
typedef interface ISensorManagerEvents ISensorManagerEvents;
#endif /* __ISensorManagerEvents_FWD_DEFINED__ */
#ifndef __ISensorEvents_FWD_DEFINED__
#define __ISensorEvents_FWD_DEFINED__
typedef interface ISensorEvents ISensorEvents;
#endif /* __ISensorEvents_FWD_DEFINED__ */
#ifndef __SensorManager_FWD_DEFINED__
#define __SensorManager_FWD_DEFINED__
#ifdef __cplusplus
typedef class SensorManager SensorManager;
#else
typedef struct SensorManager SensorManager;
#endif /* __cplusplus */
#endif /* __SensorManager_FWD_DEFINED__ */
#ifndef __SensorCollection_FWD_DEFINED__
#define __SensorCollection_FWD_DEFINED__
#ifdef __cplusplus
typedef class SensorCollection SensorCollection;
#else
typedef struct SensorCollection SensorCollection;
#endif /* __cplusplus */
#endif /* __SensorCollection_FWD_DEFINED__ */
#ifndef __Sensor_FWD_DEFINED__
#define __Sensor_FWD_DEFINED__
#ifdef __cplusplus
typedef class Sensor Sensor;
#else
typedef struct Sensor Sensor;
#endif /* __cplusplus */
#endif /* __Sensor_FWD_DEFINED__ */
#ifndef __SensorDataReport_FWD_DEFINED__
#define __SensorDataReport_FWD_DEFINED__
#ifdef __cplusplus
typedef class SensorDataReport SensorDataReport;
#else
typedef struct SensorDataReport SensorDataReport;
#endif /* __cplusplus */
#endif /* __SensorDataReport_FWD_DEFINED__ */
/* header files for imported files */
#include "oaidl.h"
#include "ocidl.h"
#include "propsys.h"
#include "PortableDeviceTypes.h"
#ifdef __cplusplus
extern "C"{
#endif
/* interface __MIDL_itf_sensorsapi_0000_0000 */
/* [local] */
#include <winapifamily.h>
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
typedef /* [public][public][public][public] */
enum __MIDL___MIDL_itf_sensorsapi_0000_0000_0001
{
SENSOR_STATE_MIN = 0,
SENSOR_STATE_READY = SENSOR_STATE_MIN,
SENSOR_STATE_NOT_AVAILABLE = ( SENSOR_STATE_READY + 1 ) ,
SENSOR_STATE_NO_DATA = ( SENSOR_STATE_NOT_AVAILABLE + 1 ) ,
SENSOR_STATE_INITIALIZING = ( SENSOR_STATE_NO_DATA + 1 ) ,
SENSOR_STATE_ACCESS_DENIED = ( SENSOR_STATE_INITIALIZING + 1 ) ,
SENSOR_STATE_ERROR = ( SENSOR_STATE_ACCESS_DENIED + 1 ) ,
SENSOR_STATE_MAX = SENSOR_STATE_ERROR
} SensorState;
typedef /* [public] */
enum __MIDL___MIDL_itf_sensorsapi_0000_0000_0002
{
SENSOR_CONNECTION_TYPE_PC_INTEGRATED = 0,
SENSOR_CONNECTION_TYPE_PC_ATTACHED = ( SENSOR_CONNECTION_TYPE_PC_INTEGRATED + 1 ) ,
SENSOR_CONNECTION_TYPE_PC_EXTERNAL = ( SENSOR_CONNECTION_TYPE_PC_ATTACHED + 1 )
} SensorConnectionType;
typedef
enum LOCATION_DESIRED_ACCURACY
{
LOCATION_DESIRED_ACCURACY_DEFAULT = 0,
LOCATION_DESIRED_ACCURACY_HIGH = ( LOCATION_DESIRED_ACCURACY_DEFAULT + 1 )
} LOCATION_DESIRED_ACCURACY;
typedef
enum SimpleDeviceOrientation
{
SIMPLE_DEVICE_ORIENTATION_NOT_ROTATED = 0,
SIMPLE_DEVICE_ORIENTATION_ROTATED_90 = ( SIMPLE_DEVICE_ORIENTATION_NOT_ROTATED + 1 ) ,
SIMPLE_DEVICE_ORIENTATION_ROTATED_180 = ( SIMPLE_DEVICE_ORIENTATION_ROTATED_90 + 1 ) ,
SIMPLE_DEVICE_ORIENTATION_ROTATED_270 = ( SIMPLE_DEVICE_ORIENTATION_ROTATED_180 + 1 ) ,
SIMPLE_DEVICE_ORIENTATION_ROTATED_FACE_UP = ( SIMPLE_DEVICE_ORIENTATION_ROTATED_270 + 1 ) ,
SIMPLE_DEVICE_ORIENTATION_ROTATED_FACE_DOWN = ( SIMPLE_DEVICE_ORIENTATION_ROTATED_FACE_UP + 1 )
} SimpleDeviceOrientation;
typedef GUID SENSOR_CATEGORY_ID;
typedef REFGUID REFSENSOR_CATEGORY_ID;
typedef GUID SENSOR_TYPE_ID;
typedef REFGUID REFSENSOR_TYPE_ID;
typedef GUID SENSOR_ID;
typedef REFGUID REFSENSOR_ID;
extern RPC_IF_HANDLE __MIDL_itf_sensorsapi_0000_0000_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_sensorsapi_0000_0000_v0_0_s_ifspec;
#ifndef __ISensorManager_INTERFACE_DEFINED__
#define __ISensorManager_INTERFACE_DEFINED__
/* interface ISensorManager */
/* [unique][helpstring][uuid][object] */
EXTERN_C const IID IID_ISensorManager;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("BD77DB67-45A8-42DC-8D00-6DCF15F8377A")
ISensorManager : public IUnknown
{
public:
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSensorsByCategory(
/* [in] */ __RPC__in REFSENSOR_CATEGORY_ID sensorCategory,
/* [out] */ __RPC__deref_out_opt ISensorCollection **ppSensorsFound) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSensorsByType(
/* [in] */ __RPC__in REFSENSOR_TYPE_ID sensorType,
/* [out] */ __RPC__deref_out_opt ISensorCollection **ppSensorsFound) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSensorByID(
/* [in] */ __RPC__in REFSENSOR_ID sensorID,
/* [out] */ __RPC__deref_out_opt ISensor **ppSensor) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetEventSink(
/* [in] */ __RPC__in_opt ISensorManagerEvents *pEvents) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE RequestPermissions(
/* [in] */ __RPC__in HWND hParent,
/* [in] */ __RPC__in_opt ISensorCollection *pSensors,
/* [in] */ BOOL fModal) = 0;
};
#else /* C style interface */
typedef struct ISensorManagerVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in ISensorManager * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in ISensorManager * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in ISensorManager * This);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSensorsByCategory )(
__RPC__in ISensorManager * This,
/* [in] */ __RPC__in REFSENSOR_CATEGORY_ID sensorCategory,
/* [out] */ __RPC__deref_out_opt ISensorCollection **ppSensorsFound);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSensorsByType )(
__RPC__in ISensorManager * This,
/* [in] */ __RPC__in REFSENSOR_TYPE_ID sensorType,
/* [out] */ __RPC__deref_out_opt ISensorCollection **ppSensorsFound);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSensorByID )(
__RPC__in ISensorManager * This,
/* [in] */ __RPC__in REFSENSOR_ID sensorID,
/* [out] */ __RPC__deref_out_opt ISensor **ppSensor);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetEventSink )(
__RPC__in ISensorManager * This,
/* [in] */ __RPC__in_opt ISensorManagerEvents *pEvents);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *RequestPermissions )(
__RPC__in ISensorManager * This,
/* [in] */ __RPC__in HWND hParent,
/* [in] */ __RPC__in_opt ISensorCollection *pSensors,
/* [in] */ BOOL fModal);
END_INTERFACE
} ISensorManagerVtbl;
interface ISensorManager
{
CONST_VTBL struct ISensorManagerVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define ISensorManager_QueryInterface(This,riid,ppvObject) \
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ISensorManager_AddRef(This) \
( (This)->lpVtbl -> AddRef(This) )
#define ISensorManager_Release(This) \
( (This)->lpVtbl -> Release(This) )
#define ISensorManager_GetSensorsByCategory(This,sensorCategory,ppSensorsFound) \
( (This)->lpVtbl -> GetSensorsByCategory(This,sensorCategory,ppSensorsFound) )
#define ISensorManager_GetSensorsByType(This,sensorType,ppSensorsFound) \
( (This)->lpVtbl -> GetSensorsByType(This,sensorType,ppSensorsFound) )
#define ISensorManager_GetSensorByID(This,sensorID,ppSensor) \
( (This)->lpVtbl -> GetSensorByID(This,sensorID,ppSensor) )
#define ISensorManager_SetEventSink(This,pEvents) \
( (This)->lpVtbl -> SetEventSink(This,pEvents) )
#define ISensorManager_RequestPermissions(This,hParent,pSensors,fModal) \
( (This)->lpVtbl -> RequestPermissions(This,hParent,pSensors,fModal) )
#endif /* COBJMACROS */
#endif /* C style interface */
#endif /* __ISensorManager_INTERFACE_DEFINED__ */
#ifndef __ILocationPermissions_INTERFACE_DEFINED__
#define __ILocationPermissions_INTERFACE_DEFINED__
/* interface ILocationPermissions */
/* [unique][helpstring][uuid][object] */
EXTERN_C const IID IID_ILocationPermissions;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("D5FB0A7F-E74E-44f5-8E02-4806863A274F")
ILocationPermissions : public IUnknown
{
public:
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetGlobalLocationPermission(
/* [out] */ __RPC__out BOOL *pfEnabled) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE CheckLocationCapability(
/* [in] */ DWORD dwClientThreadId) = 0;
};
#else /* C style interface */
typedef struct ILocationPermissionsVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in ILocationPermissions * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in ILocationPermissions * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in ILocationPermissions * This);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetGlobalLocationPermission )(
__RPC__in ILocationPermissions * This,
/* [out] */ __RPC__out BOOL *pfEnabled);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *CheckLocationCapability )(
__RPC__in ILocationPermissions * This,
/* [in] */ DWORD dwClientThreadId);
END_INTERFACE
} ILocationPermissionsVtbl;
interface ILocationPermissions
{
CONST_VTBL struct ILocationPermissionsVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define ILocationPermissions_QueryInterface(This,riid,ppvObject) \
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ILocationPermissions_AddRef(This) \
( (This)->lpVtbl -> AddRef(This) )
#define ILocationPermissions_Release(This) \
( (This)->lpVtbl -> Release(This) )
#define ILocationPermissions_GetGlobalLocationPermission(This,pfEnabled) \
( (This)->lpVtbl -> GetGlobalLocationPermission(This,pfEnabled) )
#define ILocationPermissions_CheckLocationCapability(This,dwClientThreadId) \
( (This)->lpVtbl -> CheckLocationCapability(This,dwClientThreadId) )
#endif /* COBJMACROS */
#endif /* C style interface */
#endif /* __ILocationPermissions_INTERFACE_DEFINED__ */
#ifndef __ISensorCollection_INTERFACE_DEFINED__
#define __ISensorCollection_INTERFACE_DEFINED__
/* interface ISensorCollection */
/* [unique][helpstring][uuid][object] */
EXTERN_C const IID IID_ISensorCollection;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("23571E11-E545-4DD8-A337-B89BF44B10DF")
ISensorCollection : public IUnknown
{
public:
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetAt(
/* [in] */ ULONG ulIndex,
/* [out] */ __RPC__deref_out_opt ISensor **ppSensor) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetCount(
/* [out] */ __RPC__out ULONG *pCount) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Add(
/* [in] */ __RPC__in_opt ISensor *pSensor) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Remove(
/* [in] */ __RPC__in_opt ISensor *pSensor) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE RemoveByID(
/* [in] */ __RPC__in REFSENSOR_ID sensorID) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Clear( void) = 0;
};
#else /* C style interface */
typedef struct ISensorCollectionVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in ISensorCollection * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in ISensorCollection * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in ISensorCollection * This);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetAt )(
__RPC__in ISensorCollection * This,
/* [in] */ ULONG ulIndex,
/* [out] */ __RPC__deref_out_opt ISensor **ppSensor);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetCount )(
__RPC__in ISensorCollection * This,
/* [out] */ __RPC__out ULONG *pCount);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Add )(
__RPC__in ISensorCollection * This,
/* [in] */ __RPC__in_opt ISensor *pSensor);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Remove )(
__RPC__in ISensorCollection * This,
/* [in] */ __RPC__in_opt ISensor *pSensor);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *RemoveByID )(
__RPC__in ISensorCollection * This,
/* [in] */ __RPC__in REFSENSOR_ID sensorID);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Clear )(
__RPC__in ISensorCollection * This);
END_INTERFACE
} ISensorCollectionVtbl;
interface ISensorCollection
{
CONST_VTBL struct ISensorCollectionVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define ISensorCollection_QueryInterface(This,riid,ppvObject) \
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ISensorCollection_AddRef(This) \
( (This)->lpVtbl -> AddRef(This) )
#define ISensorCollection_Release(This) \
( (This)->lpVtbl -> Release(This) )
#define ISensorCollection_GetAt(This,ulIndex,ppSensor) \
( (This)->lpVtbl -> GetAt(This,ulIndex,ppSensor) )
#define ISensorCollection_GetCount(This,pCount) \
( (This)->lpVtbl -> GetCount(This,pCount) )
#define ISensorCollection_Add(This,pSensor) \
( (This)->lpVtbl -> Add(This,pSensor) )
#define ISensorCollection_Remove(This,pSensor) \
( (This)->lpVtbl -> Remove(This,pSensor) )
#define ISensorCollection_RemoveByID(This,sensorID) \
( (This)->lpVtbl -> RemoveByID(This,sensorID) )
#define ISensorCollection_Clear(This) \
( (This)->lpVtbl -> Clear(This) )
#endif /* COBJMACROS */
#endif /* C style interface */
#endif /* __ISensorCollection_INTERFACE_DEFINED__ */
#ifndef __ISensor_INTERFACE_DEFINED__
#define __ISensor_INTERFACE_DEFINED__
/* interface ISensor */
/* [unique][helpstring][uuid][object] */
EXTERN_C const IID IID_ISensor;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("5FA08F80-2657-458E-AF75-46F73FA6AC5C")
ISensor : public IUnknown
{
public:
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetID(
/* [out] */ __RPC__out SENSOR_ID *pID) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetCategory(
/* [out] */ __RPC__out SENSOR_CATEGORY_ID *pSensorCategory) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetType(
/* [out] */ __RPC__out SENSOR_TYPE_ID *pSensorType) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetFriendlyName(
/* [out] */ __RPC__deref_out_opt BSTR *pFriendlyName) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetProperty(
/* [in] */ __RPC__in REFPROPERTYKEY key,
/* [out] */ __RPC__out PROPVARIANT *pProperty) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetProperties(
/* [in] */ __RPC__in_opt IPortableDeviceKeyCollection *pKeys,
/* [out] */ __RPC__deref_out_opt IPortableDeviceValues **ppProperties) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSupportedDataFields(
/* [out] */ __RPC__deref_out_opt IPortableDeviceKeyCollection **ppDataFields) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetProperties(
/* [in] */ __RPC__in_opt IPortableDeviceValues *pProperties,
/* [out] */ __RPC__deref_out_opt IPortableDeviceValues **ppResults) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SupportsDataField(
/* [in] */ __RPC__in REFPROPERTYKEY key,
/* [out] */ __RPC__out VARIANT_BOOL *pIsSupported) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetState(
/* [out] */ __RPC__out SensorState *pState) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetData(
/* [out] */ __RPC__deref_out_opt ISensorDataReport **ppDataReport) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SupportsEvent(
/* [in] */ __RPC__in REFGUID eventGuid,
/* [out] */ __RPC__out VARIANT_BOOL *pIsSupported) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetEventInterest(
/* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pCount) GUID **ppValues,
/* [out] */ __RPC__out ULONG *pCount) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetEventInterest(
/* [size_is][unique][in] */ __RPC__in_ecount_full_opt(count) GUID *pValues,
/* [in] */ ULONG count) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetEventSink(
/* [in] */ __RPC__in_opt ISensorEvents *pEvents) = 0;
};
#else /* C style interface */
typedef struct ISensorVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in ISensor * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in ISensor * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in ISensor * This);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetID )(
__RPC__in ISensor * This,
/* [out] */ __RPC__out SENSOR_ID *pID);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetCategory )(
__RPC__in ISensor * This,
/* [out] */ __RPC__out SENSOR_CATEGORY_ID *pSensorCategory);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetType )(
__RPC__in ISensor * This,
/* [out] */ __RPC__out SENSOR_TYPE_ID *pSensorType);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetFriendlyName )(
__RPC__in ISensor * This,
/* [out] */ __RPC__deref_out_opt BSTR *pFriendlyName);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetProperty )(
__RPC__in ISensor * This,
/* [in] */ __RPC__in REFPROPERTYKEY key,
/* [out] */ __RPC__out PROPVARIANT *pProperty);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetProperties )(
__RPC__in ISensor * This,
/* [in] */ __RPC__in_opt IPortableDeviceKeyCollection *pKeys,
/* [out] */ __RPC__deref_out_opt IPortableDeviceValues **ppProperties);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSupportedDataFields )(
__RPC__in ISensor * This,
/* [out] */ __RPC__deref_out_opt IPortableDeviceKeyCollection **ppDataFields);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetProperties )(
__RPC__in ISensor * This,
/* [in] */ __RPC__in_opt IPortableDeviceValues *pProperties,
/* [out] */ __RPC__deref_out_opt IPortableDeviceValues **ppResults);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SupportsDataField )(
__RPC__in ISensor * This,
/* [in] */ __RPC__in REFPROPERTYKEY key,
/* [out] */ __RPC__out VARIANT_BOOL *pIsSupported);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetState )(
__RPC__in ISensor * This,
/* [out] */ __RPC__out SensorState *pState);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetData )(
__RPC__in ISensor * This,
/* [out] */ __RPC__deref_out_opt ISensorDataReport **ppDataReport);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SupportsEvent )(
__RPC__in ISensor * This,
/* [in] */ __RPC__in REFGUID eventGuid,
/* [out] */ __RPC__out VARIANT_BOOL *pIsSupported);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetEventInterest )(
__RPC__in ISensor * This,
/* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pCount) GUID **ppValues,
/* [out] */ __RPC__out ULONG *pCount);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetEventInterest )(
__RPC__in ISensor * This,
/* [size_is][unique][in] */ __RPC__in_ecount_full_opt(count) GUID *pValues,
/* [in] */ ULONG count);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetEventSink )(
__RPC__in ISensor * This,
/* [in] */ __RPC__in_opt ISensorEvents *pEvents);
END_INTERFACE
} ISensorVtbl;
interface ISensor
{
CONST_VTBL struct ISensorVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define ISensor_QueryInterface(This,riid,ppvObject) \
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ISensor_AddRef(This) \
( (This)->lpVtbl -> AddRef(This) )
#define ISensor_Release(This) \
( (This)->lpVtbl -> Release(This) )
#define ISensor_GetID(This,pID) \
( (This)->lpVtbl -> GetID(This,pID) )
#define ISensor_GetCategory(This,pSensorCategory) \
( (This)->lpVtbl -> GetCategory(This,pSensorCategory) )
#define ISensor_GetType(This,pSensorType) \
( (This)->lpVtbl -> GetType(This,pSensorType) )
#define ISensor_GetFriendlyName(This,pFriendlyName) \
( (This)->lpVtbl -> GetFriendlyName(This,pFriendlyName) )
#define ISensor_GetProperty(This,key,pProperty) \
( (This)->lpVtbl -> GetProperty(This,key,pProperty) )
#define ISensor_GetProperties(This,pKeys,ppProperties) \
( (This)->lpVtbl -> GetProperties(This,pKeys,ppProperties) )
#define ISensor_GetSupportedDataFields(This,ppDataFields) \
( (This)->lpVtbl -> GetSupportedDataFields(This,ppDataFields) )
#define ISensor_SetProperties(This,pProperties,ppResults) \
( (This)->lpVtbl -> SetProperties(This,pProperties,ppResults) )
#define ISensor_SupportsDataField(This,key,pIsSupported) \
( (This)->lpVtbl -> SupportsDataField(This,key,pIsSupported) )
#define ISensor_GetState(This,pState) \
( (This)->lpVtbl -> GetState(This,pState) )
#define ISensor_GetData(This,ppDataReport) \
( (This)->lpVtbl -> GetData(This,ppDataReport) )
#define ISensor_SupportsEvent(This,eventGuid,pIsSupported) \
( (This)->lpVtbl -> SupportsEvent(This,eventGuid,pIsSupported) )
#define ISensor_GetEventInterest(This,ppValues,pCount) \
( (This)->lpVtbl -> GetEventInterest(This,ppValues,pCount) )
#define ISensor_SetEventInterest(This,pValues,count) \
( (This)->lpVtbl -> SetEventInterest(This,pValues,count) )
#define ISensor_SetEventSink(This,pEvents) \
( (This)->lpVtbl -> SetEventSink(This,pEvents) )
#endif /* COBJMACROS */
#endif /* C style interface */
#endif /* __ISensor_INTERFACE_DEFINED__ */
#ifndef __ISensorDataReport_INTERFACE_DEFINED__
#define __ISensorDataReport_INTERFACE_DEFINED__
/* interface ISensorDataReport */
/* [unique][helpstring][uuid][object] */
EXTERN_C const IID IID_ISensorDataReport;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0AB9DF9B-C4B5-4796-8898-0470706A2E1D")
ISensorDataReport : public IUnknown
{
public:
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetTimestamp(
/* [out] */ __RPC__out SYSTEMTIME *pTimeStamp) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSensorValue(
/* [in] */ __RPC__in REFPROPERTYKEY pKey,
/* [out] */ __RPC__out PROPVARIANT *pValue) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetSensorValues(
/* [in] */ __RPC__in_opt IPortableDeviceKeyCollection *pKeys,
/* [out] */ __RPC__deref_out_opt IPortableDeviceValues **ppValues) = 0;
};
#else /* C style interface */
typedef struct ISensorDataReportVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in ISensorDataReport * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in ISensorDataReport * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in ISensorDataReport * This);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetTimestamp )(
__RPC__in ISensorDataReport * This,
/* [out] */ __RPC__out SYSTEMTIME *pTimeStamp);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSensorValue )(
__RPC__in ISensorDataReport * This,
/* [in] */ __RPC__in REFPROPERTYKEY pKey,
/* [out] */ __RPC__out PROPVARIANT *pValue);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetSensorValues )(
__RPC__in ISensorDataReport * This,
/* [in] */ __RPC__in_opt IPortableDeviceKeyCollection *pKeys,
/* [out] */ __RPC__deref_out_opt IPortableDeviceValues **ppValues);
END_INTERFACE
} ISensorDataReportVtbl;
interface ISensorDataReport
{
CONST_VTBL struct ISensorDataReportVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define ISensorDataReport_QueryInterface(This,riid,ppvObject) \
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ISensorDataReport_AddRef(This) \
( (This)->lpVtbl -> AddRef(This) )
#define ISensorDataReport_Release(This) \
( (This)->lpVtbl -> Release(This) )
#define ISensorDataReport_GetTimestamp(This,pTimeStamp) \
( (This)->lpVtbl -> GetTimestamp(This,pTimeStamp) )
#define ISensorDataReport_GetSensorValue(This,pKey,pValue) \
( (This)->lpVtbl -> GetSensorValue(This,pKey,pValue) )
#define ISensorDataReport_GetSensorValues(This,pKeys,ppValues) \
( (This)->lpVtbl -> GetSensorValues(This,pKeys,ppValues) )
#endif /* COBJMACROS */
#endif /* C style interface */
#endif /* __ISensorDataReport_INTERFACE_DEFINED__ */
#ifndef __ISensorManagerEvents_INTERFACE_DEFINED__
#define __ISensorManagerEvents_INTERFACE_DEFINED__
/* interface ISensorManagerEvents */
/* [object][helpstring][uuid] */
EXTERN_C const IID IID_ISensorManagerEvents;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("9B3B0B86-266A-4AAD-B21F-FDE5501001B7")
ISensorManagerEvents : public IUnknown
{
public:
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE OnSensorEnter(
/* [in] */ __RPC__in_opt ISensor *pSensor,
/* [in] */ SensorState state) = 0;
};
#else /* C style interface */
typedef struct ISensorManagerEventsVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in ISensorManagerEvents * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in ISensorManagerEvents * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in ISensorManagerEvents * This);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *OnSensorEnter )(
__RPC__in ISensorManagerEvents * This,
/* [in] */ __RPC__in_opt ISensor *pSensor,
/* [in] */ SensorState state);
END_INTERFACE
} ISensorManagerEventsVtbl;
interface ISensorManagerEvents
{
CONST_VTBL struct ISensorManagerEventsVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define ISensorManagerEvents_QueryInterface(This,riid,ppvObject) \
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ISensorManagerEvents_AddRef(This) \
( (This)->lpVtbl -> AddRef(This) )
#define ISensorManagerEvents_Release(This) \
( (This)->lpVtbl -> Release(This) )
#define ISensorManagerEvents_OnSensorEnter(This,pSensor,state) \
( (This)->lpVtbl -> OnSensorEnter(This,pSensor,state) )
#endif /* COBJMACROS */
#endif /* C style interface */
#endif /* __ISensorManagerEvents_INTERFACE_DEFINED__ */
#ifndef __ISensorEvents_INTERFACE_DEFINED__
#define __ISensorEvents_INTERFACE_DEFINED__
/* interface ISensorEvents */
/* [object][helpstring][uuid] */
EXTERN_C const IID IID_ISensorEvents;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("5D8DCC91-4641-47E7-B7C3-B74F48A6C391")
ISensorEvents : public IUnknown
{
public:
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE OnStateChanged(
/* [in] */ __RPC__in_opt ISensor *pSensor,
/* [in] */ SensorState state) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE OnDataUpdated(
/* [in] */ __RPC__in_opt ISensor *pSensor,
/* [in] */ __RPC__in_opt ISensorDataReport *pNewData) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE OnEvent(
/* [in] */ __RPC__in_opt ISensor *pSensor,
/* [in] */ __RPC__in REFGUID eventID,
/* [in] */ __RPC__in_opt IPortableDeviceValues *pEventData) = 0;
virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE OnLeave(
/* [in] */ __RPC__in REFSENSOR_ID ID) = 0;
};
#else /* C style interface */
typedef struct ISensorEventsVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in ISensorEvents * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in ISensorEvents * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in ISensorEvents * This);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *OnStateChanged )(
__RPC__in ISensorEvents * This,
/* [in] */ __RPC__in_opt ISensor *pSensor,
/* [in] */ SensorState state);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *OnDataUpdated )(
__RPC__in ISensorEvents * This,
/* [in] */ __RPC__in_opt ISensor *pSensor,
/* [in] */ __RPC__in_opt ISensorDataReport *pNewData);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *OnEvent )(
__RPC__in ISensorEvents * This,
/* [in] */ __RPC__in_opt ISensor *pSensor,
/* [in] */ __RPC__in REFGUID eventID,
/* [in] */ __RPC__in_opt IPortableDeviceValues *pEventData);
/* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *OnLeave )(
__RPC__in ISensorEvents * This,
/* [in] */ __RPC__in REFSENSOR_ID ID);
END_INTERFACE
} ISensorEventsVtbl;
interface ISensorEvents
{
CONST_VTBL struct ISensorEventsVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define ISensorEvents_QueryInterface(This,riid,ppvObject) \
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ISensorEvents_AddRef(This) \
( (This)->lpVtbl -> AddRef(This) )
#define ISensorEvents_Release(This) \
( (This)->lpVtbl -> Release(This) )
#define ISensorEvents_OnStateChanged(This,pSensor,state) \
( (This)->lpVtbl -> OnStateChanged(This,pSensor,state) )
#define ISensorEvents_OnDataUpdated(This,pSensor,pNewData) \
( (This)->lpVtbl -> OnDataUpdated(This,pSensor,pNewData) )
#define ISensorEvents_OnEvent(This,pSensor,eventID,pEventData) \
( (This)->lpVtbl -> OnEvent(This,pSensor,eventID,pEventData) )
#define ISensorEvents_OnLeave(This,ID) \
( (This)->lpVtbl -> OnLeave(This,ID) )
#endif /* COBJMACROS */
#endif /* C style interface */
#endif /* __ISensorEvents_INTERFACE_DEFINED__ */
#ifndef __SensorsApiLib_LIBRARY_DEFINED__
#define __SensorsApiLib_LIBRARY_DEFINED__
/* library SensorsApiLib */
/* [helpstring][version][uuid] */
EXTERN_C const IID LIBID_SensorsApiLib;
EXTERN_C const CLSID CLSID_SensorManager;
#ifdef __cplusplus
class DECLSPEC_UUID("77A1C827-FCD2-4689-8915-9D613CC5FA3E")
SensorManager;
#endif
EXTERN_C const CLSID CLSID_SensorCollection;
#ifdef __cplusplus
class DECLSPEC_UUID("79C43ADB-A429-469F-AA39-2F2B74B75937")
SensorCollection;
#endif
EXTERN_C const CLSID CLSID_Sensor;
#ifdef __cplusplus
class DECLSPEC_UUID("E97CED00-523A-4133-BF6F-D3A2DAE7F6BA")
Sensor;
#endif
EXTERN_C const CLSID CLSID_SensorDataReport;
#ifdef __cplusplus
class DECLSPEC_UUID("4EA9D6EF-694B-4218-8816-CCDA8DA74BBA")
SensorDataReport;
#endif
#endif /* __SensorsApiLib_LIBRARY_DEFINED__ */
/* interface __MIDL_itf_sensorsapi_0000_0008 */
/* [local] */
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
extern RPC_IF_HANDLE __MIDL_itf_sensorsapi_0000_0008_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_sensorsapi_0000_0008_v0_0_s_ifspec;
/* Additional Prototypes for ALL interfaces */
unsigned long __RPC_USER BSTR_UserSize( __RPC__in unsigned long *, unsigned long , __RPC__in BSTR * );
unsigned char * __RPC_USER BSTR_UserMarshal( __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in BSTR * );
unsigned char * __RPC_USER BSTR_UserUnmarshal(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out BSTR * );
void __RPC_USER BSTR_UserFree( __RPC__in unsigned long *, __RPC__in BSTR * );
unsigned long __RPC_USER HWND_UserSize( __RPC__in unsigned long *, unsigned long , __RPC__in HWND * );
unsigned char * __RPC_USER HWND_UserMarshal( __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in HWND * );
unsigned char * __RPC_USER HWND_UserUnmarshal(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out HWND * );
void __RPC_USER HWND_UserFree( __RPC__in unsigned long *, __RPC__in HWND * );
unsigned long __RPC_USER LPSAFEARRAY_UserSize( __RPC__in unsigned long *, unsigned long , __RPC__in LPSAFEARRAY * );
unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal( __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in LPSAFEARRAY * );
unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out LPSAFEARRAY * );
void __RPC_USER LPSAFEARRAY_UserFree( __RPC__in unsigned long *, __RPC__in LPSAFEARRAY * );
unsigned long __RPC_USER BSTR_UserSize64( __RPC__in unsigned long *, unsigned long , __RPC__in BSTR * );
unsigned char * __RPC_USER BSTR_UserMarshal64( __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in BSTR * );
unsigned char * __RPC_USER BSTR_UserUnmarshal64(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out BSTR * );
void __RPC_USER BSTR_UserFree64( __RPC__in unsigned long *, __RPC__in BSTR * );
unsigned long __RPC_USER HWND_UserSize64( __RPC__in unsigned long *, unsigned long , __RPC__in HWND * );
unsigned char * __RPC_USER HWND_UserMarshal64( __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in HWND * );
unsigned char * __RPC_USER HWND_UserUnmarshal64(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out HWND * );
void __RPC_USER HWND_UserFree64( __RPC__in unsigned long *, __RPC__in HWND * );
unsigned long __RPC_USER LPSAFEARRAY_UserSize64( __RPC__in unsigned long *, unsigned long , __RPC__in LPSAFEARRAY * );
unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal64( __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in LPSAFEARRAY * );
unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal64(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out LPSAFEARRAY * );
void __RPC_USER LPSAFEARRAY_UserFree64( __RPC__in unsigned long *, __RPC__in LPSAFEARRAY * );
/* end of Additional Prototypes */
#ifdef __cplusplus
}
#endif
#endif
https://deluxepixel.com <- My Business website
https://reportcomplete.com <- School end of term reports system
https://reportcomplete.com <- School end of term reports system
- DoubleDutch
- Addict
- Posts: 3220
- Joined: Thu Aug 07, 2003 7:01 pm
- Location: United Kingdom
- Contact:
Re: Reading sensors...
This one might be newer, not compared.
Code: Select all
//-----------------------------------------------------------------------
// <copyright file="Sensors.h" company="Microsoft">
// Copyright (c) 2007 Microsoft Corporation. All rights
// reserved.
// </copyright>
//
// Module:
// Sensors.h
//
// Description:
// This file defines supporting structures and values used in
// the Sensors platform.
//
//-----------------------------------------------------------------------
#ifndef _SENSORS_H_
#define _SENSORS_H_
#include <winapifamily.h>
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#include "propkeydef.h"
// {BA1BB692-9B7A-4833-9A1E-525ED134E7E2}
DEFINE_GUID(GUID_DEVINTERFACE_SENSOR, 0XBA1BB692, 0X9B7A, 0X4833, 0X9A, 0X1E, 0X52, 0X5E, 0XD1, 0X34, 0XE7, 0XE2);
// {BFD96016-6BD7-4560-AD34-F2F6607E8F81}
DEFINE_GUID(SENSOR_EVENT_STATE_CHANGED, 0XBFD96016, 0X6BD7, 0X4560, 0XAD, 0X34, 0XF2, 0XF6, 0X60, 0X7E, 0X8F, 0X81);
// {2ED0F2A4-0087-41D3-87DB-6773370B3C88}
DEFINE_GUID(SENSOR_EVENT_DATA_UPDATED, 0X2ED0F2A4, 0X0087, 0X41D3, 0X87, 0XDB, 0X67, 0X73, 0X37, 0X0B, 0X3C, 0X88);
// {2358F099-84C9-4D3D-90DF-C2421E2B2045}
DEFINE_GUID(SENSOR_EVENT_PROPERTY_CHANGED, 0X2358F099, 0X84C9, 0X4D3D, 0X90, 0XDF, 0XC2, 0X42, 0X1E, 0X2B, 0X20, 0X45);
// {825F5A94-0F48-4396-9CA0-6ECB5C99D915}
DEFINE_GUID(SENSOR_EVENT_ACCELEROMETER_SHAKE, 0X825F5A94, 0X0F48, 0X4396, 0X9C, 0XA0, 0X6E, 0XCB, 0X5C, 0X99, 0XD9, 0X15);
// {64346E30-8728-4B34-BDF6-4F52442C5C28}
DEFINE_GUID(SENSOR_EVENT_PARAMETER_COMMON_GUID, 0X64346E30, 0X8728, 0X4B34, 0XBD, 0XF6, 0X4F, 0X52, 0X44, 0X2C, 0X5C, 0X28);
DEFINE_PROPERTYKEY(SENSOR_EVENT_PARAMETER_EVENT_ID, 0X64346E30, 0X8728, 0X4B34, 0XBD, 0XF6, 0X4F, 0X52, 0X44, 0X2C, 0X5C, 0X28, 2);
DEFINE_PROPERTYKEY(SENSOR_EVENT_PARAMETER_STATE, 0X64346E30, 0X8728, 0X4B34, 0XBD, 0XF6, 0X4F, 0X52, 0X44, 0X2C, 0X5C, 0X28, 3); // [VT_UI4]
// {77112BCD-FCE1-4f43-B8B8-A88256ADB4B3}
DEFINE_GUID(SENSOR_ERROR_PARAMETER_COMMON_GUID, 0X77112BCD, 0XFCE1, 0X4F43, 0XB8, 0XB8, 0XA8, 0X82, 0X56, 0XAD, 0XB4, 0XB3);
/////////////////////////////////////////////////////////////////////
// Sensor Properties
//
// {7F8383EC-D3EC-495C-A8CF-B8BBE85C2920}
DEFINE_GUID(SENSOR_PROPERTY_COMMON_GUID, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20);
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_TYPE, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 2); //[VT_CLSID]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_STATE, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 3); //[VT_UI4]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_PERSISTENT_UNIQUE_ID, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 5); //[VT_CLSID]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_MANUFACTURER, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 6); //[VT_LPWSTR]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_MODEL, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 7); //[VT_LPWSTR]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_SERIAL_NUMBER, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 8); //[VT_LPWSTR]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_FRIENDLY_NAME, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 9); //[VT_LPWSTR]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_DESCRIPTION, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 10); //[VT_LPWSTR]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_CONNECTION_TYPE, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 11); //[VT_UI4]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_MIN_REPORT_INTERVAL, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 12); //[VT_UI4]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_CURRENT_REPORT_INTERVAL, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 13); //[VT_UI4]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_CHANGE_SENSITIVITY, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 14); //[VT_UNKNOWN], IPortableDeviceValues
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_DEVICE_PATH, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 15); //[VT_LPWSTR]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_LIGHT_RESPONSE_CURVE, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 16); //[VT_VECTOR|VT_UI1]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_ACCURACY, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 17); //[VT_UNKNOWN], IPortableDeviceValues
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_RESOLUTION, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 18); //[VT_UNKNOWN], IPortableDeviceValues
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_LOCATION_DESIRED_ACCURACY, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 19); //[VT_UI4]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_RANGE_MINIMUM, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 20); //[VT_UNKNOWN], IPortableDeviceValues
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_RANGE_MAXIMUM, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 21); //[VT_UNKNOWN], IPortableDeviceValues
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_HID_USAGE, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 22); //[VT_UI4]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_RADIO_STATE, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 23); //[VT_UI4]
DEFINE_PROPERTYKEY(SENSOR_PROPERTY_RADIO_STATE_PREVIOUS, 0X7F8383EC, 0XD3EC, 0X495C, 0XA8, 0XCF, 0XB8, 0XBB, 0XE8, 0X5C, 0X29, 0X20, 24); //[VT_UI4]
/////////////////////////////////////////////////////////////////////
// Sensor Categories
//
// {C317C286-C468-4288-9975-D4C4587C442C}
DEFINE_GUID(SENSOR_CATEGORY_ALL, 0XC317C286, 0XC468, 0X4288, 0X99, 0X75, 0XD4, 0XC4, 0X58, 0X7C, 0X44, 0X2C);
// {BFA794E4-F964-4FDB-90F6-51056BFE4B44}
DEFINE_GUID(SENSOR_CATEGORY_LOCATION, 0XBFA794E4, 0XF964, 0X4FDB, 0X90, 0XF6, 0X51, 0X05, 0X6B, 0XFE, 0X4B, 0X44);
// {323439AA-7F66-492B-BA0C-73E9AA0A65D5}
DEFINE_GUID(SENSOR_CATEGORY_ENVIRONMENTAL, 0X323439AA, 0X7F66, 0X492B, 0XBA, 0X0C, 0X73, 0XE9, 0XAA, 0X0A, 0X65, 0XD5);
// {CD09DAF1-3B2E-4C3D-B598-B5E5FF93FD46}
DEFINE_GUID(SENSOR_CATEGORY_MOTION, 0XCD09DAF1, 0X3B2E, 0X4C3D, 0XB5, 0X98, 0XB5, 0XE5, 0XFF, 0X93, 0XFD, 0X46);
// {9E6C04B6-96FE-4954-B726-68682A473F69}
DEFINE_GUID(SENSOR_CATEGORY_ORIENTATION, 0X9E6C04B6, 0X96FE, 0X4954, 0XB7, 0X26, 0X68, 0X68, 0X2A, 0X47, 0X3F, 0X69);
// {8D131D68-8EF7-4656-80B5-CCCBD93791C5}
DEFINE_GUID(SENSOR_CATEGORY_MECHANICAL, 0X8D131D68, 0X8EF7, 0X4656, 0X80, 0XB5, 0XCC, 0XCB, 0XD9, 0X37, 0X91, 0XC5);
// {FB73FCD8-FC4A-483C-AC58-27B691C6BEFF}
DEFINE_GUID(SENSOR_CATEGORY_ELECTRICAL, 0XFB73FCD8, 0XFC4A, 0X483C, 0XAC, 0X58, 0X27, 0XB6, 0X91, 0XC6, 0XBE, 0XFF);
// {CA19690F-A2C7-477D-A99E-99EC6E2B5648}
DEFINE_GUID(SENSOR_CATEGORY_BIOMETRIC, 0XCA19690F, 0XA2C7, 0X477D, 0XA9, 0X9E, 0X99, 0XEC, 0X6E, 0X2B, 0X56, 0X48);
// {17A665C0-9063-4216-B202-5C7A255E18CE}
DEFINE_GUID(SENSOR_CATEGORY_LIGHT, 0X17A665C0, 0X9063, 0X4216, 0XB2, 0X02, 0X5C, 0X7A, 0X25, 0X5E, 0X18, 0XCE);
// {B000E77E-F5B5-420F-815D-0270A726F270}
DEFINE_GUID(SENSOR_CATEGORY_SCANNER, 0XB000E77E, 0XF5B5, 0X420F, 0X81, 0X5D, 0X02, 0X70, 0XA7, 0X26, 0XF2, 0X70);
// {2C90E7A9-F4C9-4FA2-AF37-56D471FE5A3D}
DEFINE_GUID(SENSOR_CATEGORY_OTHER, 0x2C90E7A9, 0xF4C9, 0x4FA2, 0xAF, 0x37, 0x56, 0xD4, 0x71, 0xFE, 0x5A, 0x3D);
// {2BEAE7FA-19B0-48C5-A1F6-B5480DC206B0}
DEFINE_GUID(SENSOR_CATEGORY_UNSUPPORTED, 0x2BEAE7fA, 0x19B0, 0x48C5, 0xA1, 0xF6, 0xB5, 0x48, 0x0D, 0xC2, 0x06, 0xB0);
/////////////////////////////////////////////////////////////////////
// Sensor Types
//
//
// Location Sensor Types
//
// {ED4CA589-327A-4FF9-A560-91DA4B48275E}
DEFINE_GUID(SENSOR_TYPE_LOCATION_GPS, 0XED4CA589, 0X327A, 0X4FF9, 0XA5, 0X60, 0X91, 0XDA, 0X4B, 0X48, 0X27, 0X5E);
// {095F8184-0FA9-4445-8E6E-B70F320B6B4C}
DEFINE_GUID(SENSOR_TYPE_LOCATION_STATIC, 0X095F8184, 0X0FA9, 0X4445, 0X8E, 0X6E, 0XB7, 0X0F, 0X32, 0X0B, 0X6B, 0X4C);
// {3B2EAE4A-72CE-436D-96D2-3C5B8570E987}
DEFINE_GUID(SENSOR_TYPE_LOCATION_LOOKUP, 0X3B2EAE4A, 0X72CE, 0X436D, 0X96, 0XD2, 0X3C, 0X5B, 0X85, 0X70, 0XE9, 0X87);
// {691C341A-5406-4FE1-942F-2246CBEB39E0}
DEFINE_GUID(SENSOR_TYPE_LOCATION_TRIANGULATION, 0X691C341A, 0X5406, 0X4FE1, 0X94, 0X2F, 0X22, 0X46, 0XCB, 0XEB, 0X39, 0XE0);
// {9B2D0566-0368-4F71-B88D-533F132031DE}
DEFINE_GUID(SENSOR_TYPE_LOCATION_OTHER, 0X9B2D0566, 0X0368, 0X4F71, 0XB8, 0X8D, 0X53, 0X3F, 0X13, 0X20, 0X31, 0XDE);
// {D26988CF-5162-4039-BB17-4C58B698E44A}
DEFINE_GUID(SENSOR_TYPE_LOCATION_BROADCAST, 0XD26988CF, 0X5162, 0X4039, 0XBB, 0X17, 0X4C, 0X58, 0XB6, 0X98, 0XE4, 0X4A);
// {1A37D538-F28B-42DA-9FCE-A9D0A2A6D829}
DEFINE_GUID(SENSOR_TYPE_LOCATION_DEAD_RECKONING, 0X1A37D538, 0XF28B, 0X42DA, 0X9F, 0XCE, 0XA9, 0XD0, 0XA2, 0XA6, 0XD8, 0X29);
//
// Environmental Sensor Types
//
// {04FD0EC4-D5DA-45FA-95A9-5DB38EE19306}
DEFINE_GUID(SENSOR_TYPE_ENVIRONMENTAL_TEMPERATURE, 0X04FD0EC4, 0XD5DA, 0X45FA, 0X95, 0XA9, 0X5D, 0XB3, 0X8E, 0XE1, 0X93, 0X06);
// {0E903829-FF8A-4A93-97DF-3DCBDE402288}
DEFINE_GUID(SENSOR_TYPE_ENVIRONMENTAL_ATMOSPHERIC_PRESSURE, 0X0E903829, 0XFF8A, 0X4A93, 0X97, 0XDF, 0X3D, 0XCB, 0XDE, 0X40, 0X22, 0X88);
// {5C72BF67-BD7E-4257-990B-98A3BA3B400A}
DEFINE_GUID(SENSOR_TYPE_ENVIRONMENTAL_HUMIDITY, 0X5C72BF67, 0XBD7E, 0X4257, 0X99, 0X0B, 0X98, 0XA3, 0XBA, 0X3B, 0X40, 0X0A);
// {DD50607B-A45F-42CD-8EFD-EC61761C4226}
DEFINE_GUID(SENSOR_TYPE_ENVIRONMENTAL_WIND_SPEED, 0XDD50607B, 0XA45F, 0X42CD, 0X8E, 0XFD, 0XEC, 0X61, 0X76, 0X1C, 0X42, 0X26);
// {9EF57A35-9306-434D-AF09-37FA5A9C00BD}
DEFINE_GUID(SENSOR_TYPE_ENVIRONMENTAL_WIND_DIRECTION, 0X9EF57A35, 0X9306, 0X434D, 0XAF, 0X09, 0X37, 0XFA, 0X5A, 0X9C, 0X00, 0XBD);
//
// Motion Sensor Types
//
// {C04D2387-7340-4CC2-991E-3B18CB8EF2F4}
DEFINE_GUID(SENSOR_TYPE_ACCELEROMETER_1D, 0XC04D2387, 0X7340, 0X4CC2, 0X99, 0X1E, 0X3B, 0X18, 0XCB, 0X8E, 0XF2, 0XF4);
// {B2C517A8-F6B5-4BA6-A423-5DF560B4CC07}
DEFINE_GUID(SENSOR_TYPE_ACCELEROMETER_2D, 0XB2C517A8, 0XF6B5, 0X4BA6, 0XA4, 0X23, 0X5D, 0XF5, 0X60, 0XB4, 0XCC, 0X07);
// {C2FB0F5F-E2D2-4C78-BCD0-352A9582819D}
DEFINE_GUID(SENSOR_TYPE_ACCELEROMETER_3D, 0XC2FB0F5F, 0XE2D2, 0X4C78, 0XBC, 0XD0, 0X35, 0X2A, 0X95, 0X82, 0X81, 0X9D);
// {5C7C1A12-30A5-43B9-A4B2-CF09EC5B7BE8}
DEFINE_GUID(SENSOR_TYPE_MOTION_DETECTOR, 0X5C7C1A12, 0X30A5, 0X43B9, 0XA4, 0XB2, 0XCF, 0X09, 0XEC, 0X5B, 0X7B, 0XE8);
// {FA088734-F552-4584-8324-EDFAF649652C}
DEFINE_GUID(SENSOR_TYPE_GYROMETER_1D, 0XFA088734, 0XF552, 0X4584, 0X83, 0X24, 0XED, 0XFA, 0XF6, 0X49, 0X65, 0X2C);
// {31EF4F83-919B-48BF-8DE0-5D7A9D240556}
DEFINE_GUID(SENSOR_TYPE_GYROMETER_2D, 0X31EF4F83, 0X919B, 0X48BF, 0X8D, 0XE0, 0X5D, 0X7A, 0X9D, 0X24, 0X05, 0X56);
// {09485F5A-759E-42C2-BD4B-A349B75C8643}
DEFINE_GUID(SENSOR_TYPE_GYROMETER_3D, 0X09485F5A, 0X759E, 0X42C2, 0XBD, 0X4B, 0XA3, 0X49, 0XB7, 0X5C, 0X86, 0X43);
// {6BD73C1F-0BB4-4310-81B2-DFC18A52BF94}
DEFINE_GUID(SENSOR_TYPE_SPEEDOMETER, 0X6BD73C1F, 0X0BB4, 0X4310, 0X81, 0XB2, 0XDF, 0XC1, 0X8A, 0X52, 0XBF, 0X94);
//
// Orientation Sensor Types
//
// {A415F6C5-CB50-49D0-8E62-A8270BD7A26C}
DEFINE_GUID(SENSOR_TYPE_COMPASS_1D, 0XA415F6C5, 0XCB50, 0X49D0, 0X8E, 0X62, 0XA8, 0X27, 0X0B, 0XD7, 0XA2, 0X6C);
// {15655CC0-997A-4D30-84DB-57CABA3648BB}
DEFINE_GUID(SENSOR_TYPE_COMPASS_2D, 0X15655CC0, 0X997A, 0X4D30, 0X84, 0XDB, 0X57, 0XCA, 0XBA, 0X36, 0X48, 0XBB);
// {76B5CE0D-17DD-414D-93A1-E127F40BDF6E}
DEFINE_GUID(SENSOR_TYPE_COMPASS_3D, 0X76B5CE0D, 0X17DD, 0X414D, 0X93, 0XA1, 0XE1, 0X27, 0XF4, 0X0B, 0XDF, 0X6E);
// {B96F98C5-7A75-4BA7-94E9-AC868C966DD8}
DEFINE_GUID(SENSOR_TYPE_INCLINOMETER_1D, 0XB96F98C5, 0X7A75, 0X4BA7, 0X94, 0XE9, 0XAC, 0X86, 0X8C, 0X96, 0X6D, 0XD8);
// {AB140F6D-83EB-4264-B70B-B16A5B256A01}
DEFINE_GUID(SENSOR_TYPE_INCLINOMETER_2D, 0XAB140F6D, 0X83EB, 0X4264, 0XB7, 0X0B, 0XB1, 0X6A, 0X5B, 0X25, 0X6A, 0X01);
// {B84919FB-EA85-4976-8444-6F6F5C6D31DB}
DEFINE_GUID(SENSOR_TYPE_INCLINOMETER_3D, 0XB84919FB, 0XEA85, 0X4976, 0X84, 0X44, 0X6F, 0X6F, 0X5C, 0X6D, 0X31, 0XDB);
// {5F14AB2F-1407-4306-A93F-B1DBABE4F9C0}
DEFINE_GUID(SENSOR_TYPE_DISTANCE_1D, 0X5F14AB2F, 0X1407, 0X4306, 0XA9, 0X3F, 0XB1, 0XDB, 0XAB, 0XE4, 0XF9, 0XC0);
// {5CF9A46C-A9A2-4E55-B6A1-A04AAFA95A92}
DEFINE_GUID(SENSOR_TYPE_DISTANCE_2D, 0X5CF9A46C, 0XA9A2, 0X4E55, 0XB6, 0XA1, 0XA0, 0X4A, 0XAF, 0XA9, 0X5A, 0X92);
// {A20CAE31-0E25-4772-9FE5-96608A1354B2}
DEFINE_GUID(SENSOR_TYPE_DISTANCE_3D, 0XA20CAE31, 0X0E25, 0X4772, 0X9F, 0XE5, 0X96, 0X60, 0X8A, 0X13, 0X54, 0XB2);
// {9F81F1AF-C4AB-4307-9904-C828BFB90829}
DEFINE_GUID(SENSOR_TYPE_AGGREGATED_QUADRANT_ORIENTATION, 0X9F81F1AF, 0XC4AB, 0X4307, 0X99, 0X04, 0XC8, 0X28, 0XBF, 0XB9, 0X08, 0X29);
// {CDB5D8F7-3CFD-41C8-8542-CCE622CF5D6E}
DEFINE_GUID(SENSOR_TYPE_AGGREGATED_DEVICE_ORIENTATION, 0XCDB5D8F7, 0X3CFD, 0X41C8, 0X85, 0X42, 0XCC, 0XE6, 0X22, 0XCF, 0X5D, 0X6E);
// {86A19291-0482-402C-BF4C-ADDAC52B1C39}
DEFINE_GUID(SENSOR_TYPE_AGGREGATED_SIMPLE_DEVICE_ORIENTATION, 0X86A19291, 0X0482, 0X402C, 0XBF, 0X4C, 0XAD, 0XDA, 0XC5, 0X2B, 0X1C, 0X39);
//
// Electrical Sensor Types
//
// {C5484637-4FB7-4953-98B8-A56D8AA1FB1E}
DEFINE_GUID(SENSOR_TYPE_VOLTAGE, 0XC5484637, 0X4FB7, 0X4953, 0X98, 0XB8, 0XA5, 0X6D, 0X8A, 0XA1, 0XFB, 0X1E);
// {5ADC9FCE-15A0-4BBE-A1AD-2D38A9AE831C}
DEFINE_GUID(SENSOR_TYPE_CURRENT, 0X5ADC9FCE, 0X15A0, 0X4BBE, 0XA1, 0XAD, 0X2D, 0X38, 0XA9, 0XAE, 0X83, 0X1C);
// {CA2FFB1C-2317-49C0-A0B4-B63CE63461A0}
DEFINE_GUID(SENSOR_TYPE_CAPACITANCE, 0XCA2FFB1C, 0X2317, 0X49C0, 0XA0, 0XB4, 0XB6, 0X3C, 0XE6, 0X34, 0X61, 0XA0);
// {9993D2C8-C157-4A52-A7B5-195C76037231}
DEFINE_GUID(SENSOR_TYPE_RESISTANCE, 0X9993D2C8, 0XC157, 0X4A52, 0XA7, 0XB5, 0X19, 0X5C, 0X76, 0X03, 0X72, 0X31);
// {DC1D933F-C435-4C7D-A2FE-607192A524D3}
DEFINE_GUID(SENSOR_TYPE_INDUCTANCE, 0XDC1D933F, 0XC435, 0X4C7D, 0XA2, 0XFE, 0X60, 0X71, 0X92, 0XA5, 0X24, 0XD3);
// {212F10F5-14AB-4376-9A43-A7794098C2FE}
DEFINE_GUID(SENSOR_TYPE_ELECTRICAL_POWER, 0X212F10F5, 0X14AB, 0X4376, 0X9A, 0X43, 0XA7, 0X79, 0X40, 0X98, 0XC2, 0XFE);
// {2B3681A9-CADC-45AA-A6FF-54957C8BB440}
DEFINE_GUID(SENSOR_TYPE_POTENTIOMETER, 0X2B3681A9, 0XCADC, 0X45AA, 0XA6, 0XFF, 0X54, 0X95, 0X7C, 0X8B, 0XB4, 0X40);
// {8CD2CBB6-73E6-4640-A709-72AE8FB60D7F}
DEFINE_GUID(SENSOR_TYPE_FREQUENCY, 0X8CD2CBB6, 0X73E6, 0X4640, 0XA7, 0X09, 0X72, 0XAE, 0X8F, 0XB6, 0X0D, 0X7F);
//
// Mechanical Sensor Types
//
// {9C7E371F-1041-460B-8D5C-71E4752E350C}
DEFINE_GUID(SENSOR_TYPE_BOOLEAN_SWITCH, 0X9C7E371F, 0X1041, 0X460B, 0X8D, 0X5C, 0X71, 0XE4, 0X75, 0X2E, 0X35, 0X0C);
// {B3EE4D76-37A4-4402-B25E-99C60A775FA1}
DEFINE_GUID(SENSOR_TYPE_MULTIVALUE_SWITCH, 0XB3EE4D76, 0X37A4, 0X4402, 0XB2, 0X5E, 0X99, 0XC6, 0X0A, 0X77, 0X5F, 0XA1);
// {C2AB2B02-1A1C-4778-A81B-954A1788CC75}
DEFINE_GUID(SENSOR_TYPE_FORCE, 0XC2AB2B02, 0X1A1C, 0X4778, 0XA8, 0X1B, 0X95, 0X4A, 0X17, 0X88, 0XCC, 0X75);
// {C06DD92C-7FEB-438E-9BF6-82207FFF5BB8}
DEFINE_GUID(SENSOR_TYPE_SCALE, 0XC06DD92C, 0X7FEB, 0X438E, 0X9B, 0XF6, 0X82, 0X20, 0X7F, 0XFF, 0X5B, 0XB8);
// {26D31F34-6352-41CF-B793-EA0713D53D77}
DEFINE_GUID(SENSOR_TYPE_PRESSURE, 0X26D31F34, 0X6352, 0X41CF, 0XB7, 0X93, 0XEA, 0X07, 0X13, 0XD5, 0X3D, 0X77);
// {C6D1EC0E-6803-4361-AD3D-85BCC58C6D29}
DEFINE_GUID(SENSOR_TYPE_STRAIN, 0XC6D1EC0E, 0X6803, 0X4361, 0XAD, 0X3D, 0X85, 0XBC, 0XC5, 0X8C, 0X6D, 0X29);
// {545C8BA5-B143-4545-868F-CA7FD986B4F6}
DEFINE_GUID(SENSOR_TYPE_BOOLEAN_SWITCH_ARRAY, 0X545C8BA5, 0XB143, 0X4545, 0X86, 0X8F, 0XCA, 0X7F, 0XD9, 0X86, 0XB4, 0XF6);
//
// Biometric Sensor Types
//
// {C138C12B-AD52-451C-9375-87F518FF10C6}
DEFINE_GUID(SENSOR_TYPE_HUMAN_PRESENCE, 0XC138C12B, 0XAD52, 0X451C, 0X93, 0X75, 0X87, 0XF5, 0X18, 0XFF, 0X10, 0XC6);
// {5220DAE9-3179-4430-9F90-06266D2A34DE}
DEFINE_GUID(SENSOR_TYPE_HUMAN_PROXIMITY, 0X5220DAE9, 0X3179, 0X4430, 0X9F, 0X90, 0X06, 0X26, 0X6D, 0X2A, 0X34, 0XDE);
// {17DB3018-06C4-4F7D-81AF-9274B7599C27}
DEFINE_GUID(SENSOR_TYPE_TOUCH, 0X17DB3018, 0X06C4, 0X4F7D, 0X81, 0XAF, 0X92, 0X74, 0XB7, 0X59, 0X9C, 0X27);
//
// Light Sensor Types
//
// {97F115C8-599A-4153-8894-D2D12899918A}
DEFINE_GUID(SENSOR_TYPE_AMBIENT_LIGHT, 0X97F115C8, 0X599A, 0X4153, 0X88, 0X94, 0XD2, 0XD1, 0X28, 0X99, 0X91, 0X8A);
//
// Scanner Sensor Types
//
// {44328EF5-02DD-4E8D-AD5D-9249832B2ECA}
DEFINE_GUID(SENSOR_TYPE_RFID_SCANNER, 0X44328EF5, 0X02DD, 0X4E8D, 0XAD, 0X5D, 0X92, 0X49, 0X83, 0X2B, 0X2E, 0XCA);
// {990B3D8F-85BB-45FF-914D-998C04F372DF}
DEFINE_GUID(SENSOR_TYPE_BARCODE_SCANNER, 0X990B3D8F, 0X85BB, 0X45FF, 0X91, 0X4D, 0X99, 0X8C, 0X04, 0XF3, 0X72, 0XDF);
//
// Custom Sensor Types
//
// {E83AF229-8640-4D18-A213-E22675EBB2C3}
DEFINE_GUID(SENSOR_TYPE_CUSTOM, 0XE83AF229, 0X8640, 0X4D18, 0XA2, 0X13, 0XE2, 0X26, 0X75, 0XEB, 0XB2, 0XC3);
//
// Unknown Sensor Types
//
// {10BA83E3-EF4F-41ED-9885-A87D6435A8E1}
DEFINE_GUID(SENSOR_TYPE_UNKNOWN, 0X10BA83E3, 0XEF4F, 0X41ED, 0X98, 0X85, 0XA8, 0X7D, 0X64, 0X35, 0XA8, 0XE1);
/////////////////////////////////////////////////////////////////////
// Sensor Data Types
//
//
// Common Sensor Data Types
//
// {DB5E0CF2-CF1F-4C18-B46C-D86011D62150}
DEFINE_GUID(SENSOR_DATA_TYPE_COMMON_GUID, 0XDB5E0CF2, 0XCF1F, 0X4C18, 0XB4, 0X6C, 0XD8, 0X60, 0X11, 0XD6, 0X21, 0X50);
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_TIMESTAMP, 0XDB5E0CF2, 0XCF1F, 0X4C18, 0XB4, 0X6C, 0XD8, 0X60, 0X11, 0XD6, 0X21, 0X50, 2); //[VT_FILETIME]
//
// Location Sensor Data Types
//
// {055C74D8-CA6F-47D6-95C6-1ED3637A0FF4}
DEFINE_GUID(SENSOR_DATA_TYPE_LOCATION_GUID, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4);
// SENSOR_DATA_TYPE_LATITUDE: Degrees latitude where North is positive
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_LATITUDE_DEGREES, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 2); //[VT_R8]
// SENSOR_DATA_TYPE_LONGITUDE: Degrees longitude where East is positive
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_LONGITUDE_DEGREES, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 3); //[VT_R8]
// SENSOR_DATA_TYPE_ALTITUDE_SEALEVEL_METERS: Altitude with regards to sea level, in meters
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ALTITUDE_SEALEVEL_METERS, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 4); //[VT_R8]
// SENSOR_DATA_TYPE_ALTITUDE_ELLIPSOID_METERS: Altitude with regards to ellipsoid, in meters
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ALTITUDE_ELLIPSOID_METERS, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 5); //[VT_R8]
// SENSOR_DATA_TYPE_SPEED_KNOTS: Speed measured in knots
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_SPEED_KNOTS, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 6); //[VT_R8]
// SENSOR_DATA_TYPE_TRUE_HEADING_DEGREES: Heading relative to true North in degrees
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_TRUE_HEADING_DEGREES, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 7); //[VT_R8]
// SENSOR_DATA_TYPE_MAGNETIC_HEADING_DEGREES: Heading relative to magnetic North in degrees
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_MAGNETIC_HEADING_DEGREES, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 8); //[VT_R8]
// SENSOR_DATA_TYPE_MAGNETIC_VARIATION: Magnetic variation. East is positive
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_MAGNETIC_VARIATION, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 9); //[VT_R8]
// SENSOR_DATA_TYPE_FIX_QUALITY: Quality of fix
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_FIX_QUALITY, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 10); //[VT_I4]
// SENSOR_DATA_TYPE_FIX_TYPE: Fix Type
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_FIX_TYPE, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 11); //[VT_I4]
// SENSOR_DATA_TYPE_POSITION_DILUTION_OF_PRECISION: Position Dilution of Precision
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_POSITION_DILUTION_OF_PRECISION, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 12); //[VT_R8]
// SENSOR_DATA_TYPE_HORIZONAL_DILUTION_OF_PRECISION: HORIZONTAL Dilution of Precision
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_HORIZONAL_DILUTION_OF_PRECISION, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 13); //[VT_R8]
// SENSOR_DATA_TYPE_VERTICAL_DILUTION_OF_PRECISION: VERTICAL Dilution of Precision
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_VERTICAL_DILUTION_OF_PRECISION, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 14); //[VT_R8]
// SENSOR_DATA_TYPE_SATELLITES_USED_COUNT: Number of satellites used in solution
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_SATELLITES_USED_COUNT, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 15); //[VT_I4]
// SENSOR_DATA_TYPE_SATELLITES_USED_PRNS: PRN numbers of satellites used in the solution
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_SATELLITES_USED_PRNS, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 16); //[VT_VECTOR | VT_UI1]
// SENSOR_DATA_TYPE_SATELLITES_IN_VIEW: Number of satellites in view. From 0-GPS_MAX_SATELLITES
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_SATELLITES_IN_VIEW, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 17); //[VT_I4]
// SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_PRNS: PRN numbers of satellites in view
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_PRNS, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 18); //[VT_VECTOR | VT_UI1]
// SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_ELEVATION: Elevation of each sattellite in view
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_ELEVATION, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 19); //[VT_VECTOR | VT_UI1]
// SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_AZIMUTH: Azimuth of each satellite in view
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_AZIMUTH, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 20); //[VT_VECTOR | VT_UI1
// SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_STN_RATIO: Signal to noise ratio for each satellite in view
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_STN_RATIO, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 21); //[VT_VECTOR | VT_UI1]
// SENSOR_DATA_TYPE_ERROR_RADIUS_METERS: Accuracy of Latitude and Longitude values
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ERROR_RADIUS_METERS, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 22); //[VT_R8]
// SENSOR_DATA_TYPE_ADDRESS1: AddressLine1
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ADDRESS1, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 23); //[VT_LPWSTR]
// SENSOR_DATA_TYPE_ADDRESS2: AddressLine2
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ADDRESS2, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 24); //[VT_LPWSTR]
// SENSOR_DATA_TYPE_CITY: City
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CITY, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 25); //[VT_LPWSTR]
// SENSOR_DATA_TYPE_STATE_PROVINCE: State/Province
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_STATE_PROVINCE, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 26); //[VT_LPWSTR]
// SENSOR_DATA_TYPE_POSTALCODE: Postal Code (e.g. ZIP)
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_POSTALCODE, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 27); //[VT_LPWSTR]
// SENSOR_DATA_TYPE_COUNTRY_REGION: Country/Region
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_COUNTRY_REGION, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 28); //[VT_LPWSTR]
// SENSOR_DATA_TYPE_ALTITUDE_ELLIPSOID_ERROR_METERS: Altitude Error with regards to ellipsoid, in meters
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ALTITUDE_ELLIPSOID_ERROR_METERS, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 29); //[VT_R8]
// SENSOR_DATA_TYPE_ALTITUDE_SEALEVEL_ERROR_METERS: Altitude Error with regards to sea level, in meters
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ALTITUDE_SEALEVEL_ERROR_METERS, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 30); //[VT_R8]
// SENSOR_DATA_TYPE_GPS_SELECTION_MODE:
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_GPS_SELECTION_MODE, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 31); //[VT_I4]
// SENSOR_DATA_TYPE_GPS_OPERATION_MODE:
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_GPS_OPERATION_MODE, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 32); //[VT_I4]
// SENSOR_DATA_TYPE_GPS_STATUS:
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_GPS_STATUS, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 33); //[VT_I4]
// SENSOR_DATA_TYPE_GEOIDAL_SEPARATION:
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_GEOIDAL_SEPARATION, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 34); //[VT_R8]
// SENSOR_DATA_TYPE_DGPS_DATA_AGE:
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_DGPS_DATA_AGE, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 35); //[VT_R8]
// SENSOR_DATA_TYPE_ALTITUDE_ANTENNA_SEALEVEL_METERS:
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ALTITUDE_ANTENNA_SEALEVEL_METERS, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 36); //[VT_R8]
// SENSOR_DATA_TYPE_DIFFERENTIAL_REFERENCE_STATION_ID:
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_DIFFERENTIAL_REFERENCE_STATION_ID, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 37); //[VT_I4]
// SENSOR_DATA_TYPE_NMEA_SENTENCE:
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_NMEA_SENTENCE, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 38); //[VT_LPWSTR]
// SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_ID:
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_ID, 0X055C74D8, 0XCA6F, 0X47D6, 0X95, 0XC6, 0X1E, 0XD3, 0X63, 0X7A, 0X0F, 0XF4, 39); //[VT_VECTOR|VT_UI1]
//
// Environmental Sensor Data Types
//
// {8B0AA2F1-2D57-42EE-8CC0-4D27622B46C4}
DEFINE_GUID(SENSOR_DATA_TYPE_ENVIRONMENTAL_GUID, 0X8B0AA2F1, 0X2D57, 0X42EE, 0X8C, 0XC0, 0X4D, 0X27, 0X62, 0X2B, 0X46, 0XC4);
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_TEMPERATURE_CELSIUS, 0X8B0AA2F1, 0X2D57, 0X42EE, 0X8C, 0XC0, 0X4D, 0X27, 0X62, 0X2B, 0X46, 0XC4, 2); //[VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_RELATIVE_HUMIDITY_PERCENT, 0X8B0AA2F1, 0X2D57, 0X42EE, 0X8C, 0XC0, 0X4D, 0X27, 0X62, 0X2B, 0X46, 0XC4, 3); //[VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ATMOSPHERIC_PRESSURE_BAR, 0X8B0AA2F1, 0X2D57, 0X42EE, 0X8C, 0XC0, 0X4D, 0X27, 0X62, 0X2B, 0X46, 0XC4, 4); //[VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_WIND_DIRECTION_DEGREES_ANTICLOCKWISE, 0X8B0AA2F1, 0X2D57, 0X42EE, 0X8C, 0XC0, 0X4D, 0X27, 0X62, 0X2B, 0X46, 0XC4, 5); //[VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_WIND_SPEED_METERS_PER_SECOND, 0X8B0AA2F1, 0X2D57, 0X42EE, 0X8C, 0XC0, 0X4D, 0X27, 0X62, 0X2B, 0X46, 0XC4, 6); //[VT_R4]
//
// Motion Sensor Data Types
//
// {3F8A69A2-07C5-4E48-A965-CD797AAB56D5}
DEFINE_GUID(SENSOR_DATA_TYPE_MOTION_GUID, 0X3F8A69A2, 0X7C5, 0X4E48, 0XA9, 0X65, 0XCD, 0X79, 0X7A, 0XAB, 0X56, 0XD5);
// Accelerometer Data Types
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ACCELERATION_X_G, 0X3F8A69A2, 0X7C5, 0X4E48, 0XA9, 0X65, 0XCD, 0X79, 0X7A, 0XAB, 0X56, 0XD5, 2); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ACCELERATION_Y_G, 0X3F8A69A2, 0X7C5, 0X4E48, 0XA9, 0X65, 0XCD, 0X79, 0X7A, 0XAB, 0X56, 0XD5, 3); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ACCELERATION_Z_G, 0X3F8A69A2, 0X7C5, 0X4E48, 0XA9, 0X65, 0XCD, 0X79, 0X7A, 0XAB, 0X56, 0XD5, 4); //[VT_R8]
// Gyrometer Data Types
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ANGULAR_ACCELERATION_X_DEGREES_PER_SECOND_SQUARED, 0X3F8A69A2, 0X7C5, 0X4E48, 0XA9, 0X65, 0XCD, 0X79, 0X7A, 0XAB, 0X56, 0XD5, 5); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ANGULAR_ACCELERATION_Y_DEGREES_PER_SECOND_SQUARED, 0X3F8A69A2, 0X7C5, 0X4E48, 0XA9, 0X65, 0XCD, 0X79, 0X7A, 0XAB, 0X56, 0XD5, 6); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ANGULAR_ACCELERATION_Z_DEGREES_PER_SECOND_SQUARED, 0X3F8A69A2, 0X7C5, 0X4E48, 0XA9, 0X65, 0XCD, 0X79, 0X7A, 0XAB, 0X56, 0XD5, 7); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_SPEED_METERS_PER_SECOND, 0X3F8A69A2, 0X7C5, 0X4E48, 0XA9, 0X65, 0XCD, 0X79, 0X7A, 0XAB, 0X56, 0XD5, 8); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_MOTION_STATE, 0X3F8A69A2, 0X7C5, 0X4E48, 0XA9, 0X65, 0XCD, 0X79, 0X7A, 0XAB, 0X56, 0XD5, 9); //[VT_BOOL]
// Additional Motion Data Types
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ANGULAR_VELOCITY_X_DEGREES_PER_SECOND, 0X3F8A69A2, 0X7C5, 0X4E48, 0XA9, 0X65, 0XCD, 0X79, 0X7A, 0XAB, 0X56, 0XD5, 10); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ANGULAR_VELOCITY_Y_DEGREES_PER_SECOND, 0X3F8A69A2, 0X7C5, 0X4E48, 0XA9, 0X65, 0XCD, 0X79, 0X7A, 0XAB, 0X56, 0XD5, 11); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ANGULAR_VELOCITY_Z_DEGREES_PER_SECOND, 0X3F8A69A2, 0X7C5, 0X4E48, 0XA9, 0X65, 0XCD, 0X79, 0X7A, 0XAB, 0X56, 0XD5, 12); //[VT_R8]
//
// Orientation Sensor Data Types
//
// {1637D8A2-4248-4275-865D-558DE84AEDFD}
DEFINE_GUID(SENSOR_DATA_TYPE_ORIENTATION_GUID, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD);
// Inclinometer Data Types
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_TILT_X_DEGREES, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 2); //[VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_TILT_Y_DEGREES, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 3); //[VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_TILT_Z_DEGREES, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 4); //[VT_R4]
// Compass Data Types
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_MAGNETIC_HEADING_X_DEGREES, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 5); //[VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_MAGNETIC_HEADING_Y_DEGREES, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 6); //[VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_MAGNETIC_HEADING_Z_DEGREES, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 7); //[VT_R4]
// Distance Data Types
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_DISTANCE_X_METERS, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 8); //[VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_DISTANCE_Y_METERS, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 9); //[VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_DISTANCE_Z_METERS, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 10); //[VT_R4]
// Additional Compass Data Types
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_MAGNETIC_HEADING_COMPENSATED_MAGNETIC_NORTH_DEGREES, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 11); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_MAGNETIC_HEADING_COMPENSATED_TRUE_NORTH_DEGREES, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 12); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_MAGNETIC_HEADING_MAGNETIC_NORTH_DEGREES, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 13); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_MAGNETIC_HEADING_TRUE_NORTH_DEGREES, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 14); //[VT_R8]
// Additional Orientation Data Types
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_QUADRANT_ANGLE_DEGREES, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 15); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ROTATION_MATRIX, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 16); //[VT_VECTOR|VT_UI1]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_QUATERNION, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 17); //[VT_VECTOR|VT_UI1]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_SIMPLE_DEVICE_ORIENTATION, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 18); //[VT_UI4]
// Compass (Magnetometer) Data Types
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_MAGNETIC_FIELD_STRENGTH_X_MILLIGAUSS, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 19); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_MAGNETIC_FIELD_STRENGTH_Y_MILLIGAUSS, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 20); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_MAGNETIC_FIELD_STRENGTH_Z_MILLIGAUSS, 0X1637D8A2, 0X4248, 0X4275, 0X86, 0X5D, 0X55, 0X8D, 0XE8, 0X4A, 0XED, 0XFD, 21); //[VT_R8]
//
// Mechanical Sensor Data Types
//
// {38564A7C-F2F2-49BB-9B2B-BA60F66A58DF}
DEFINE_GUID(SENSOR_DATA_TYPE_GUID_MECHANICAL_GUID, 0X38564A7C, 0XF2F2, 0X49BB, 0X9B, 0X2B, 0XBA, 0X60, 0XF6, 0X6A, 0X58, 0XDF);
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_BOOLEAN_SWITCH_STATE, 0X38564A7C, 0XF2F2, 0X49BB, 0X9B, 0X2B, 0XBA, 0X60, 0XF6, 0X6A, 0X58, 0XDF, 2); //[VT_BOOL]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_MULTIVALUE_SWITCH_STATE, 0X38564A7C, 0XF2F2, 0X49BB, 0X9B, 0X2B, 0XBA, 0X60, 0XF6, 0X6A, 0X58, 0XDF, 3); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_FORCE_NEWTONS, 0X38564A7C, 0XF2F2, 0X49BB, 0X9B, 0X2B, 0XBA, 0X60, 0XF6, 0X6A, 0X58, 0XDF, 4); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ABSOLUTE_PRESSURE_PASCAL, 0X38564A7C, 0XF2F2, 0X49BB, 0X9B, 0X2B, 0XBA, 0X60, 0XF6, 0X6A, 0X58, 0XDF, 5); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_GAUGE_PRESSURE_PASCAL, 0X38564A7C, 0XF2F2, 0X49BB, 0X9B, 0X2B, 0XBA, 0X60, 0XF6, 0X6A, 0X58, 0XDF, 6); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_STRAIN, 0X38564A7C, 0XF2F2, 0X49BB, 0X9B, 0X2B, 0XBA, 0X60, 0XF6, 0X6A, 0X58, 0XDF, 7); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_WEIGHT_KILOGRAMS, 0X38564A7C, 0XF2F2, 0X49BB, 0X9B, 0X2B, 0XBA, 0X60, 0XF6, 0X6A, 0X58, 0XDF, 8); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_BOOLEAN_SWITCH_ARRAY_STATES, 0X38564A7C, 0XF2F2, 0X49BB, 0X9B, 0X2B, 0XBA, 0X60, 0XF6, 0X6A, 0X58, 0XDF, 10); //[VT_UI4]
//
// Biometric Sensor Data Types
//
// {2299288A-6D9E-4B0B-B7EC-3528F89E40AF}
DEFINE_GUID(SENSOR_DATA_TYPE_BIOMETRIC_GUID, 0X2299288A, 0X6D9E, 0X4B0B, 0XB7, 0XEC, 0X35, 0X28, 0XF8, 0X9E, 0X40, 0XAF);
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_HUMAN_PRESENCE, 0X2299288A, 0X6D9E, 0X4B0B, 0XB7, 0XEC, 0X35, 0X28, 0XF8, 0X9E, 0X40, 0XAF, 2); //[VT_BOOL]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_HUMAN_PROXIMITY_METERS, 0X2299288A, 0X6D9E, 0X4B0B, 0XB7, 0XEC, 0X35, 0X28, 0XF8, 0X9E, 0X40, 0XAF, 3); //[VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_TOUCH_STATE, 0X2299288A, 0X6D9E, 0X4B0B, 0XB7, 0XEC, 0X35, 0X28, 0XF8, 0X9E, 0X40, 0XAF, 4); //[VT_BOOL]
//
// Light Sensor Data Types
//
// {E4C77CE2-DCB7-46E9-8439-4FEC548833A6}
DEFINE_GUID(SENSOR_DATA_TYPE_LIGHT_GUID, 0XE4C77CE2, 0XDCB7, 0X46E9, 0X84, 0X39, 0X4F, 0XEC, 0X54, 0X88, 0X33, 0XA6);
// Ambient light in LUX, Lumens per square meter, the ACPI convention for reporting ambient light values
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_LIGHT_LEVEL_LUX, 0XE4C77CE2, 0XDCB7, 0X46E9, 0X84, 0X39, 0X4F, 0XEC, 0X54, 0X88, 0X33, 0XA6, 2); //[VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_LIGHT_TEMPERATURE_KELVIN, 0XE4C77CE2, 0XDCB7, 0X46E9, 0X84, 0X39, 0X4F, 0XEC, 0X54, 0X88, 0X33, 0XA6, 3); //[VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_LIGHT_CHROMACITY, 0XE4C77CE2, 0XDCB7, 0X46E9, 0X84, 0X39, 0X4F, 0XEC, 0X54, 0X88, 0X33, 0XA6, 4); //[VT_VECTOR|VT_UI1]
//
// Scanner Sensor Data Types
//
// {D7A59A3C-3421-44AB-8D3A-9DE8AB6C4CAE}
DEFINE_GUID(SENSOR_DATA_TYPE_SCANNER_GUID, 0XD7A59A3C, 0X3421, 0X44AB, 0X8D, 0X3A, 0X9D, 0XE8, 0XAB, 0X6C, 0X4C, 0XAE);
// EM4102 RFID protocol uses 40 bit tags, stored in 64 bit value: VT_UI8
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_RFID_TAG_40_BIT, 0XD7A59A3C, 0X3421, 0X44AB, 0X8D, 0X3A, 0X9D, 0XE8, 0XAB, 0X6C, 0X4C, 0XAE, 2); //[VT_UI8]
//
// Electrical Sensor Data Types
//
// {BBB246D1-E242-4780-A2D3-CDED84F35842}
DEFINE_GUID(SENSOR_DATA_TYPE_ELECTRICAL_GUID, 0XBBB246D1, 0XE242, 0X4780, 0XA2, 0XD3, 0XCD, 0XED, 0X84, 0XF3, 0X58, 0X42);
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_VOLTAGE_VOLTS, 0XBBB246D1, 0XE242, 0X4780, 0XA2, 0XD3, 0XCD, 0XED, 0X84, 0XF3, 0X58, 0X42, 2); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CURRENT_AMPS, 0XBBB246D1, 0XE242, 0X4780, 0XA2, 0XD3, 0XCD, 0XED, 0X84, 0XF3, 0X58, 0X42, 3); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CAPACITANCE_FARAD, 0XBBB246D1, 0XE242, 0X4780, 0XA2, 0XD3, 0XCD, 0XED, 0X84, 0XF3, 0X58, 0X42, 4); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_RESISTANCE_OHMS, 0XBBB246D1, 0XE242, 0X4780, 0XA2, 0XD3, 0XCD, 0XED, 0X84, 0XF3, 0X58, 0X42, 5); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_INDUCTANCE_HENRY, 0XBBB246D1, 0XE242, 0X4780, 0XA2, 0XD3, 0XCD, 0XED, 0X84, 0XF3, 0X58, 0X42, 6); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ELECTRICAL_POWER_WATTS, 0XBBB246D1, 0XE242, 0X4780, 0XA2, 0XD3, 0XCD, 0XED, 0X84, 0XF3, 0X58, 0X42, 7); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ELECTRICAL_PERCENT_OF_RANGE, 0XBBB246D1, 0XE242, 0X4780, 0XA2, 0XD3, 0XCD, 0XED, 0X84, 0XF3, 0X58, 0X42, 8); //[VT_R8]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_ELECTRICAL_FREQUENCY_HERTZ, 0XBBB246D1, 0XE242, 0X4780, 0XA2, 0XD3, 0XCD, 0XED, 0X84, 0XF3, 0X58, 0X42, 9); //[VT_R8]
//
// Custom Sensor Data Types (additions to sensors.h)
//
// {B14C764F-07CF-41E8-9D82-EBE3D0776A6F}
DEFINE_GUID(SENSOR_DATA_TYPE_CUSTOM_GUID, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F);
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_USAGE, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 5); //[VT_UI4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_BOOLEAN_ARRAY, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 6); //[VT_UI4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE1, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 7); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE2, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 8); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE3, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 9); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE4, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 10); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE5, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 11); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE6, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 12); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE7, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 13); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE8, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 14); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE9, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 15); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE10, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 16); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE11, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 17); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE12, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 18); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE13, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 19); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE14, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 20); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE15, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 21); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE16, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 22); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE17, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 23); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE18, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 24); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE19, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 25); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE20, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 26); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE21, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 27); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE22, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 28); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE23, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 29); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE24, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 30); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE25, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 31); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE26, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 32); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE27, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 33); //[VT_UI4||VT_R4]
DEFINE_PROPERTYKEY(SENSOR_DATA_TYPE_CUSTOM_VALUE28, 0XB14C764F, 0X7CF, 0X41E8, 0X9D, 0X82, 0XEB, 0XE3, 0XD0, 0X77, 0X6A, 0X6F, 34); //[VT_UI4||VT_R4]
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#endif
https://deluxepixel.com <- My Business website
https://reportcomplete.com <- School end of term reports system
https://reportcomplete.com <- School end of term reports system
Re: Reading sensors...
Good Job, thanks DoubleDutch. 
I'll need to get the Windows 8 SDK and install it on this machine, all thats on here right now is the Windows 7 SDK.

I'll need to get the Windows 8 SDK and install it on this machine, all thats on here right now is the Windows 7 SDK.
The advantage of a 64 bit operating system over a 32 bit operating system comes down to only being twice the headache.
- DoubleDutch
- Addict
- Posts: 3220
- Joined: Thu Aug 07, 2003 7:01 pm
- Location: United Kingdom
- Contact:
Re: Reading sensors...
Here is everything updated, not too sure about the DefGUID and DefPropertyKey stuff, you might want to look it over. Also not done any code to test yet either. A GPS device or some other kind of sensor that Windows 7/8 detects should work with the interface.
I've re-ordered the interfaces to match the order in the .h files so that it's easier to update in the future. It looks a bit scattered in the post, but in the editor everything is neat.
I've re-ordered the interfaces to match the order in the .h files so that it's easier to update in the future. It looks a bit scattered in the post, but in the editor everything is neat.
Code: Select all
; sensorsapi enumerations
Enumeration ; SensorConnectionType
#SENSOR_CONNECTION_TYPE_PC_INTEGRATED
#SENSOR_CONNECTION_TYPE_PC_ATTACHED ; #SENSOR_CONNECTION_TYPE_PC_INTEGRATED + 1
#SENSOR_CONNECTION_TYPE_PC_EXTERNAL ; #SENSOR_CONNECTION_TYPE_PC_ATTACHED + 1
EndEnumeration
Enumeration ; SensorState
#SENSOR_STATE_MIN
#SENSOR_STATE_READY = #SENSOR_STATE_MIN ; #SENSOR_STATE_MIN
#SENSOR_STATE_NOT_AVAILABLE ;#SENSOR_STATE_READY + 1
#SENSOR_STATE_NO_DATA ; #SENSOR_STATE_NOT_AVAILABLE + 1
#SENSOR_STATE_INITIALIZING ; #SENSOR_STATE_NO_DATA + 1
#SENSOR_STATE_ACCESS_DENIED ; #SENSOR_STATE_INITIALIZING + 1
#SENSOR_STATE_ERROR ; #SENSOR_STATE_ACCESS_DENIED + 1
#SENSOR_STATE_MAX = #SENSOR_STATE_ERROR ; #SENSOR_STATE_ERROR
EndEnumeration
Enumeration ;LOCATION_DESIRED_ACCURACY
#LOCATION_DESIRED_ACCURACY_DEFAULT
#LOCATION_DESIRED_ACCURACY_HIGH ; LOCATION_DESIRED_ACCURACY_DEFAULT + 1
EndEnumeration
Enumeration ; SimpleDeviceOrientation
#SIMPLE_DEVICE_ORIENTATION_NOT_ROTATED
#SIMPLE_DEVICE_ORIENTATION_ROTATED_90 ;= ( SIMPLE_DEVICE_ORIENTATION_NOT_ROTATED + 1 ) ,
#SIMPLE_DEVICE_ORIENTATION_ROTATED_180 ;= ( SIMPLE_DEVICE_ORIENTATION_ROTATED_90 + 1 ) ,
#SIMPLE_DEVICE_ORIENTATION_ROTATED_270 ;= ( SIMPLE_DEVICE_ORIENTATION_ROTATED_180 + 1 ) ,
#SIMPLE_DEVICE_ORIENTATION_ROTATED_FACE_UP ;= ( SIMPLE_DEVICE_ORIENTATION_ROTATED_270 + 1 ) ,
#SIMPLE_DEVICE_ORIENTATION_ROTATED_FACE_DOWN ;= ( SIMPLE_DEVICE_ORIENTATION_ROTATED_FACE_UP + 1 )
EndEnumeration
;********************************************************************
; Interface IUnknown ; see http://msdn.microsoft.com/en-us/library/windows/desktop/ms680509(v=vs.85).aspx
; AddRef()
; QueryInterface(riid, *ppvObject)
; Release()
; EndInterface
Interface ILogicalSensorManager Extends IUnknown ; see http://msdn.microsoft.com/en-us/library/windows/desktop/dd318934(v=vs.85).aspx
Connect(logicalID, *pPropertyStore)
Disconnect(logicalID)
Uninstall(logicalID)
EndInterface
; MIDL_INTERFACE("BD77DB67-45A8-42DC-8D00-6DCF15F8377A")
; SensorManager class DECLSPEC_UUID("77A1C827-FCD2-4689-8915-9D613CC5FA3E")
Interface ISensorManager Extends IUnknown ; see http://msdn.microsoft.com/en-us/library/windows/desktop/dd318946(v=vs.85).aspx
GetSensorsByCategory(sensorCategory, *ppSensorsFound)
GetSensorsByType(sensorType, *ppSensorsFound)
GetSensorByID(sensorID, *ppSensor)
SetEventSink(*pEvents)
RequestPermissions(hParent.l, *pSensors, fModal.b)
EndInterface
; MIDL_INTERFACE("D5FB0A7F-E74E-44f5-8E02-4806863A274F")
Interface ILocationPermissions Extends IUnknown; This interface is Windows 8 and greater only - see http://msdn.microsoft.com/en-us/library/windows/desktop/hh802757(v=vs.85).aspx
GetGlobalLocationPermission(*pfEnabled); bool
CheckLocationCapability(dwClientThreadId); dword
EndInterface
; MIDL_INTERFACE("23571E11-E545-4DD8-A337-B89BF44B10DF")
; SensorCollection class DECLSPEC_UUID("79C43ADB-A429-469F-AA39-2F2B74B75937")
Interface ISensorCollection Extends IUnknown; see http://msdn.microsoft.com/en-us/library/windows/desktop/dd318941(v=vs.85).aspx
GetAt(ulIndex.l, *ppSensor)
GetCount(*pCount)
Add(*pSensor)
Remove(*pSensor)
RemoveByID(sensorID)
Clear()
EndInterface
; MIDL_INTERFACE("5FA08F80-2657-458E-AF75-46F73FA6AC5C")
; Sensor class DECLSPEC_UUID("E97CED00-523A-4133-BF6F-D3A2DAE7F6BA")
Interface ISensor Extends IUnknown ;see http://msdn.microsoft.com/en-us/library/windows/desktop/dd318938(v=vs.85).aspx
GetID(*pID)
GetCategory(*pSensorCategory)
GetType(*pSensorType)
GetFriendlyName(*pFriendlyName_BSTR)
GetProperty(key, *pProperty)
GetProperties(*pKeys, *ppProperties)
GetSupportedDataFields(*ppDataFields)
SetProperties(*pProperties, *ppResults)
SupportsDataField(key, *pIsSupported)
GetState(*pState)
GetData(*ppDataReport)
SupportsEvent(eventGuid, *pIsSupported)
GetEventInterest(*ppValues, *pCount)
SetEventInterest(*pValues, count.l)
SetEventSink(*pEvents)
EndInterface
; MIDL_INTERFACE("0AB9DF9B-C4B5-4796-8898-0470706A2E1D")
; SensorDataReport class DECLSPEC_UUID("4EA9D6EF-694B-4218-8816-CCDA8DA74BBA")
Interface ISensorDataReport Extends IUnknown; see http://msdn.microsoft.com/en-us/library/windows/desktop/dd318942(v=vs.85).aspx
GetTimestamp(*pTimeStamp)
GetSensorValue(pKey, *pValue)
GetSensorValues(*pKeys, *ppValues)
EndInterface
; MIDL_INTERFACE("9B3B0B86-266A-4AAD-B21F-FDE5501001B7")
Interface ISensorManagerEvents Extends IUnknown; see http://msdn.microsoft.com/en-us/library/windows/desktop/dd318947(v=vs.85).aspx
OnSensorEnter(*pSensor, state)
EndInterface
; MIDL_INTERFACE("5D8DCC91-4641-47E7-B7C3-B74F48A6C391")
Interface ISensorEvents Extends IUnknown; see http://msdn.microsoft.com/en-us/library/windows/desktop/dd318944(v=vs.85).aspx
OnStateChanged(*pSensor, state)
OnDataUpdated(*pSensor, *pNewData)
OnEvent(*pSensor, eventID, *pEventData)
OnLeave(sensorID)
EndInterface
Macro DefGUID(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11)
Data.l p1
Data.w p2,p3
Data.b p4,p5,p6,p7,p8,p9,p10,p11
EndMacro
Macro DefPropertyKey(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12)
Data.l p1
Data.w p2,p3
Data.b p4,p5,p6,p7,p8,p9,p10,p11,p12
EndMacro
DataSection
GUID_DEVINTERFACE_SENSOR: DefGUID($BA1BB692,$9B7A,$4833,$9A,$1E,$52,$5E,$D1,$34,$E7,$E2)
SENSOR_EVENT_STATE_CHANGED: DefGUID($BFD96016,$6BD7,$4560,$AD,$34,$F2,$F6,$60,$7E,$8F,$81)
SENSOR_EVENT_DATA_UPDATED: DefGUID($2ED0F2A4,$0087,$41D3,$87,$DB,$67,$73,$37,$0B,$3C,$88)
SENSOR_EVENT_PROPERTY_CHANGED: DefGUID($2358F099,$84C9,$4D3D,$90,$DF,$C2,$42,$1E,$2B,$20,$45)
SENSOR_EVENT_ACCELEROMETER_SHAKE: DefGUID($825F5A94,$0F48,$4396,$9C,$A0,$6E,$CB,$5C,$99,$D9,$15)
SENSOR_EVENT_PARAMETER_COMMON_GUID: DefGUID($64346E30,$8728,$4B34,$BD,$F6,$4F,$52,$44,$2C,$5C,$28)
SENSOR_EVENT_PARAMETER_EVENT_ID: DefPropertyKey($64346E30,$8728,$4B34,$BD,$F6,$4F,$52,$44,$2C,$5C,$28,2)
SENSOR_EVENT_PARAMETER_STATE: DefPropertyKey($64346E30,$8728,$4B34,$BD,$F6,$4F,$52,$44,$2C,$5C,$28,3) ; [VT_UI4]
;
SENSOR_ERROR_PARAMETER_COMMON_GUID: DefGUID($77112BCD,$FCE1,$4F43,$B8,$B8,$A8,$82,$56,$AD,$B4,$B3)
; // Sensor Properties
SENSOR_PROPERTY_COMMON_GUID: DefGUID($7F8383EC,$D3EC,$495C,$A8,$CF,$B8,$BB,$E8,$5C,$29,$20)
SENSOR_PROPERTY_TYPE: DefPropertyKey($7F8383EC,$D3EC,$495C,$A8,$CF,$B8,$BB,$E8,$5C,$29,$20,2); //[VT_CLSID]
SENSOR_PROPERTY_STATE: DefPropertyKey($7F8383EC,$D3EC,$495C,$A8,$CF,$B8,$BB,$E8,$5C,$29,$20,3); //[VT_UI4]
SENSOR_PROPERTY_PERSISTENT_UNIQUE_ID: DefPropertyKey($7F8383EC,$D3EC,$495C,$A8,$CF,$B8,$BB,$E8,$5C,$29,$20,5); //[VT_CLSID]
SENSOR_PROPERTY_MANUFACTURER: DefPropertyKey($7F8383EC,$D3EC,$495C,$A8,$CF,$B8,$BB,$E8,$5C,$29,$20,6); //[VT_LPWSTR]
SENSOR_PROPERTY_MODEL: DefPropertyKey($7F8383EC,$D3EC,$495C,$A8,$CF,$B8,$BB,$E8,$5C,$29,$20,7); //[VT_LPWSTR]
SENSOR_PROPERTY_SERIAL_NUMBER: DefPropertyKey($7F8383EC,$D3EC,$495C,$A8,$CF,$B8,$BB,$E8,$5C,$29,$20,8); //[VT_LPWSTR]
SENSOR_PROPERTY_FRIENDLY_NAME: DefPropertyKey($7F8383EC,$D3EC,$495C,$A8,$CF,$B8,$BB,$E8,$5C,$29,$20,9); //[VT_LPWSTR]
SENSOR_PROPERTY_DESCRIPTION: DefPropertyKey($7F8383EC,$D3EC,$495C,$A8,$CF,$B8,$BB,$E8,$5C,$29,$20,10); //[VT_LPWSTR]
SENSOR_PROPERTY_CONNECTION_TYPE: DefPropertyKey($7F8383EC,$D3EC,$495C,$A8,$CF,$B8,$BB,$E8,$5C,$29,$20,11); //[VT_UI4]
SENSOR_PROPERTY_MIN_REPORT_INTERVAL: DefPropertyKey($7F8383EC,$D3EC,$495C,$A8,$CF,$B8,$BB,$E8,$5C,$29,$20,12); //[VT_UI4]
SENSOR_PROPERTY_CURRENT_REPORT_INTERVAL: DefPropertyKey($7F8383EC,$D3EC,$495C,$A8,$CF,$B8,$BB,$E8,$5C,$29,$20,13); //[VT_UI4]
SENSOR_PROPERTY_CHANGE_SENSITIVITY: DefPropertyKey($7F8383EC,$D3EC,$495C,$A8,$CF,$B8,$BB,$E8,$5C,$29,$20,14); //[VT_UNKNOWN], IPortableDeviceValues
SENSOR_PROPERTY_DEVICE_PATH: DefPropertyKey($7F8383EC,$D3EC,$495C,$A8,$CF,$B8,$BB,$E8,$5C,$29,$20,15); //[VT_LPWSTR]
SENSOR_PROPERTY_LIGHT_RESPONSE_CURVE: DefPropertyKey($7F8383EC,$D3EC,$495C,$A8,$CF,$B8,$BB,$E8,$5C,$29,$20,16); //[VT_VECTOR|VT_UI1]
SENSOR_PROPERTY_ACCURACY: DefPropertyKey($7F8383EC,$D3EC,$495C,$A8,$CF,$B8,$BB,$E8,$5C,$29,$20,17); //[VT_UNKNOWN], IPortableDeviceValues
SENSOR_PROPERTY_RESOLUTION: DefPropertyKey($7F8383EC,$D3EC,$495C,$A8,$CF,$B8,$BB,$E8,$5C,$29,$20,18); //[VT_UNKNOWN], IPortableDeviceValues
SENSOR_PROPERTY_LOCATION_DESIRED_ACCURACY: DefPropertyKey($7F8383EC,$D3EC,$495C,$A8,$CF,$B8,$BB,$E8,$5C,$29,$20,19); //[VT_UI4]
SENSOR_PROPERTY_RANGE_MINIMUM: DefPropertyKey($7F8383EC,$D3EC,$495C,$A8,$CF,$B8,$BB,$E8,$5C,$29,$20,20); //[VT_UNKNOWN], IPortableDeviceValues
SENSOR_PROPERTY_RANGE_MAXIMUM: DefPropertyKey($7F8383EC,$D3EC,$495C,$A8,$CF,$B8,$BB,$E8,$5C,$29,$20,21); //[VT_UNKNOWN], IPortableDeviceValues
SENSOR_PROPERTY_HID_USAGE: DefPropertyKey($7F8383EC,$D3EC,$495C,$A8,$CF,$B8,$BB,$E8,$5C,$29,$20,22); //[VT_UI4]
SENSOR_PROPERTY_RADIO_STATE: DefPropertyKey($7F8383EC,$D3EC,$495C,$A8,$CF,$B8,$BB,$E8,$5C,$29,$20,23); //[VT_UI4]
SENSOR_PROPERTY_RADIO_STATE_PREVIOUS: DefPropertyKey($7F8383EC,$D3EC,$495C,$A8,$CF,$B8,$BB,$E8,$5C,$29,$20,24); //[VT_UI4]
; // Sensor Categories
SENSOR_CATEGORY_ALL: DefGUID($C317C286,$C468,$4288,$99,$75,$D4,$C4,$58,$7C,$44,$2C)
SENSOR_CATEGORY_LOCATION: DefGUID($BFA794E4,$F964,$4FDB,$90,$F6,$51,$05,$6B,$FE,$4B,$44)
SENSOR_CATEGORY_ENVIRONMENTAL: DefGUID($323439AA,$7F66,$492B,$BA,$0C,$73,$E9,$AA,$0A,$65,$D5)
SENSOR_CATEGORY_MOTION: DefGUID($CD09DAF1,$3B2E,$4C3D,$B5,$98,$B5,$E5,$FF,$93,$FD,$46)
SENSOR_CATEGORY_ORIENTATION: DefGUID($9E6C04B6,$96FE,$4954,$B7,$26,$68,$68,$2A,$47,$3F,$69)
SENSOR_CATEGORY_MECHANICAL: DefGUID($8D131D68,$8EF7,$4656,$80,$B5,$CC,$CB,$D9,$37,$91,$C5)
SENSOR_CATEGORY_ELECTRICAL: DefGUID($FB73FCD8,$FC4A,$483C,$AC,$58,$27,$B6,$91,$C6,$BE,$FF)
SENSOR_CATEGORY_BIOMETRIC: DefGUID($CA19690F,$A2C7,$477D,$A9,$9E,$99,$EC,$6E,$2B,$56,$48)
SENSOR_CATEGORY_LIGHT: DefGUID($17A665C0,$9063,$4216,$B2,$02,$5C,$7A,$25,$5E,$18,$CE)
SENSOR_CATEGORY_SCANNER: DefGUID($B000E77E,$F5B5,$420F,$81,$5D,$02,$70,$A7,$26,$F2,$70)
SENSOR_CATEGORY_OTHER: DefGUID($2C90E7A9,$F4C9,$4FA2,$AF,$37,$56,$D4,$71,$FE,$5A,$3D)
SENSOR_CATEGORY_UNSUPPORTED: DefGUID($2BEAE7fA,$19B0,$48C5,$A1,$F6,$B5,$48,$0D,$C2,$06,$B0)
; // Sensor Types
; // Location Sensor Types
SENSOR_TYPE_LOCATION_GPS: DefGUID($ED4CA589,$327A,$4FF9,$A5,$60,$91,$DA,$4B,$48,$27,$5E)
SENSOR_TYPE_LOCATION_STATIC: DefGUID($095F8184,$0FA9,$4445,$8E,$6E,$B7,$0F,$32,$0B,$6B,$4C)
SENSOR_TYPE_LOCATION_LOOKUP: DefGUID($3B2EAE4A,$72CE,$436D,$96,$D2,$3C,$5B,$85,$70,$E9,$87)
SENSOR_TYPE_LOCATION_TRIANGULATION: DefGUID($691C341A,$5406,$4FE1,$94,$2F,$22,$46,$CB,$EB,$39,$E0)
SENSOR_TYPE_LOCATION_OTHER: DefGUID($9B2D0566,$0368,$4F71,$B8,$8D,$53,$3F,$13,$20,$31,$DE)
SENSOR_TYPE_LOCATION_BROADCAST: DefGUID($D26988CF,$5162,$4039,$BB,$17,$4C,$58,$B6,$98,$E4,$4A)
SENSOR_TYPE_LOCATION_DEAD_RECKONING: DefGUID($1A37D538,$F28B,$42DA,$9F,$CE,$A9,$D0,$A2,$A6,$D8,$29)
; // Environmental Sensor Types
SENSOR_TYPE_ENVIRONMENTAL_TEMPERATURE: DefGUID($04FD0EC4,$D5DA,$45FA,$95,$A9,$5D,$B3,$8E,$E1,$93,$06)
SENSOR_TYPE_ENVIRONMENTAL_ATMOSPHERIC_PRESSURE: DefGUID($0E903829,$FF8A,$4A93,$97,$DF,$3D,$CB,$DE,$40,$22,$88)
SENSOR_TYPE_ENVIRONMENTAL_HUMIDITY: DefGUID($5C72BF67,$BD7E,$4257,$99,$0B,$98,$A3,$BA,$3B,$40,$0A)
SENSOR_TYPE_ENVIRONMENTAL_WIND_SPEED: DefGUID($DD50607B,$A45F,$42CD,$8E,$FD,$EC,$61,$76,$1C,$42,$26)
SENSOR_TYPE_ENVIRONMENTAL_WIND_DIRECTION: DefGUID($9EF57A35,$9306,$434D,$AF,$09,$37,$FA,$5A,$9C,$00,$BD)
; // Motion Sensor Types
SENSOR_TYPE_ACCELEROMETER_1D: DefGUID($C04D2387,$7340,$4CC2,$99,$1E,$3B,$18,$CB,$8E,$F2,$F4)
SENSOR_TYPE_ACCELEROMETER_2D: DefGUID($B2C517A8,$F6B5,$4BA6,$A4,$23,$5D,$F5,$60,$B4,$CC,$07)
SENSOR_TYPE_ACCELEROMETER_3D: DefGUID($C2FB0F5F,$E2D2,$4C78,$BC,$D0,$35,$2A,$95,$82,$81,$9D)
SENSOR_TYPE_MOTION_DETECTOR: DefGUID($5C7C1A12,$30A5,$43B9,$A4,$B2,$CF,$09,$EC,$5B,$7B,$E8)
SENSOR_TYPE_GYROMETER_1D: DefGUID($FA088734,$F552,$4584,$83,$24,$ED,$FA,$F6,$49,$65,$2C)
SENSOR_TYPE_GYROMETER_2D: DefGUID($31EF4F83,$919B,$48BF,$8D,$E0,$5D,$7A,$9D,$24,$05,$56)
SENSOR_TYPE_GYROMETER_3D: DefGUID($09485F5A,$759E,$42C2,$BD,$4B,$A3,$49,$B7,$5C,$86,$43)
SENSOR_TYPE_SPEEDOMETER: DefGUID($6BD73C1F,$0BB4,$4310,$81,$B2,$DF,$C1,$8A,$52,$BF,$94)
; // Orientation Sensor Types
SENSOR_TYPE_COMPASS_1D: DefGUID($A415F6C5,$CB50,$49D0,$8E,$62,$A8,$27,$0B,$D7,$A2,$6C)
SENSOR_TYPE_COMPASS_2D: DefGUID($15655CC0,$997A,$4D30,$84,$DB,$57,$CA,$BA,$36,$48,$BB)
SENSOR_TYPE_COMPASS_3D: DefGUID($76B5CE0D,$17DD,$414D,$93,$A1,$E1,$27,$F4,$0B,$DF,$6E)
SENSOR_TYPE_INCLINOMETER_1D: DefGUID($B96F98C5,$7A75,$4BA7,$94,$E9,$AC,$86,$8C,$96,$6D,$D8)
SENSOR_TYPE_INCLINOMETER_2D: DefGUID($AB140F6D,$83EB,$4264,$B7,$0B,$B1,$6A,$5B,$25,$6A,$01)
SENSOR_TYPE_INCLINOMETER_3D: DefGUID($B84919FB,$EA85,$4976,$84,$44,$6F,$6F,$5C,$6D,$31,$DB)
SENSOR_TYPE_DISTANCE_1D: DefGUID($5F14AB2F,$1407,$4306,$A9,$3F,$B1,$DB,$AB,$E4,$F9,$C0)
SENSOR_TYPE_DISTANCE_2D: DefGUID($5CF9A46C,$A9A2,$4E55,$B6,$A1,$A0,$4A,$AF,$A9,$5A,$92)
SENSOR_TYPE_DISTANCE_3D: DefGUID($A20CAE31,$0E25,$4772,$9F,$E5,$96,$60,$8A,$13,$54,$B2)
SENSOR_TYPE_AGGREGATED_QUADRANT_ORIENTATION: DefGUID($9F81F1AF,$C4AB,$4307,$99,$04,$C8,$28,$BF,$B9,$08,$29)
SENSOR_TYPE_AGGREGATED_DEVICE_ORIENTATION: DefGUID($CDB5D8F7,$3CFD,$41C8,$85,$42,$CC,$E6,$22,$CF,$5D,$6E)
SENSOR_TYPE_AGGREGATED_SIMPLE_DEVICE_ORIENTATION: DefGUID($86A19291,$0482,$402C,$BF,$4C,$AD,$DA,$C5,$2B,$1C,$39)
; // Electrical Sensor Types
SENSOR_TYPE_VOLTAGE: DefGUID($C5484637,$4FB7,$4953,$98,$B8,$A5,$6D,$8A,$A1,$FB,$1E)
SENSOR_TYPE_CURRENT: DefGUID($5ADC9FCE,$15A0,$4BBE,$A1,$AD,$2D,$38,$A9,$AE,$83,$1C)
SENSOR_TYPE_CAPACITANCE: DefGUID($CA2FFB1C,$2317,$49C0,$A0,$B4,$B6,$3C,$E6,$34,$61,$A0)
SENSOR_TYPE_RESISTANCE: DefGUID($9993D2C8,$C157,$4A52,$A7,$B5,$19,$5C,$76,$03,$72,$31)
SENSOR_TYPE_INDUCTANCE: DefGUID($DC1D933F,$C435,$4C7D,$A2,$FE,$60,$71,$92,$A5,$24,$D3)
SENSOR_TYPE_ELECTRICAL_POWER: DefGUID($212F10F5,$14AB,$4376,$9A,$43,$A7,$79,$40,$98,$C2,$FE)
SENSOR_TYPE_POTENTIOMETER: DefGUID($2B3681A9,$CADC,$45AA,$A6,$FF,$54,$95,$7C,$8B,$B4,$40)
SENSOR_TYPE_FREQUENCY: DefGUID($8CD2CBB6,$73E6,$4640,$A7,$09,$72,$AE,$8F,$B6,$0D,$7F)
; // Mechanical Sensor Types
SENSOR_TYPE_BOOLEAN_SWITCH: DefGUID($9C7E371F,$1041,$460B,$8D,$5C,$71,$E4,$75,$2E,$35,$0C)
SENSOR_TYPE_MULTIVALUE_SWITCH: DefGUID($B3EE4D76,$37A4,$4402,$B2,$5E,$99,$C6,$0A,$77,$5F,$A1)
SENSOR_TYPE_FORCE: DefGUID($C2AB2B02,$1A1C,$4778,$A8,$1B,$95,$4A,$17,$88,$CC,$75)
SENSOR_TYPE_SCALE: DefGUID($C06DD92C,$7FEB,$438E,$9B,$F6,$82,$20,$7F,$FF,$5B,$B8)
SENSOR_TYPE_PRESSURE: DefGUID($26D31F34,$6352,$41CF,$B7,$93,$EA,$07,$13,$D5,$3D,$77)
SENSOR_TYPE_STRAIN: DefGUID($C6D1EC0E,$6803,$4361,$AD,$3D,$85,$BC,$C5,$8C,$6D,$29)
SENSOR_TYPE_BOOLEAN_SWITCH_ARRAY: DefGUID($545C8BA5,$B143,$4545,$86,$8F,$CA,$7F,$D9,$86,$B4,$F6)
; // Biometric Sensor Types
SENSOR_TYPE_HUMAN_PRESENCE: DefGUID($C138C12B,$AD52,$451C,$93,$75,$87,$F5,$18,$FF,$10,$C6)
SENSOR_TYPE_HUMAN_PROXIMITY: DefGUID($5220DAE9,$3179,$4430,$9F,$90,$06,$26,$6D,$2A,$34,$DE)
SENSOR_TYPE_TOUCH: DefGUID($17DB3018,$06C4,$4F7D,$81,$AF,$92,$74,$B7,$59,$9C,$27)
; // Light Sensor Types
SENSOR_TYPE_AMBIENT_LIGHT: DefGUID($97F115C8,$599A,$4153,$88,$94,$D2,$D1,$28,$99,$91,$8A)
; // Scanner Sensor Types
SENSOR_TYPE_RFID_SCANNER: DefGUID($44328EF5,$02DD,$4E8D,$AD,$5D,$92,$49,$83,$2B,$2E,$CA)
SENSOR_TYPE_BARCODE_SCANNER: DefGUID($990B3D8F,$85BB,$45FF,$91,$4D,$99,$8C,$04,$F3,$72,$DF)
; // Custom Sensor Types
SENSOR_TYPE_CUSTOM: DefGUID($E83AF229,$8640,$4D18,$A2,$13,$E2,$26,$75,$EB,$B2,$C3)
; // Unknown Sensor Types
SENSOR_TYPE_UNKNOWN: DefGUID($10BA83E3,$EF4F,$41ED,$98,$85,$A8,$7D,$64,$35,$A8,$E1)
; // Sensor Data Types
; // Common Sensor Data Types
SENSOR_DATA_TYPE_COMMON_GUID: DefGUID($DB5E0CF2,$CF1F,$4C18,$B4,$6C,$D8,$60,$11,$D6,$21,$50)
SENSOR_DATA_TYPE_TIMESTAMP: DefPropertyKey($DB5E0CF2,$CF1F,$4C18,$B4,$6C,$D8,$60,$11,$D6,$21,$50,2); //[VT_FILETIME]
; // Location Sensor Data Types
SENSOR_DATA_TYPE_LOCATION_GUID: DefGUID($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4)
SENSOR_DATA_TYPE_LATITUDE_DEGREES: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,2); //[VT_R8]; // SENSOR_DATA_TYPE_LATITUDE: Degrees latitude where North is positive
SENSOR_DATA_TYPE_LONGITUDE_DEGREES: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,3); //[VT_R8]; // SENSOR_DATA_TYPE_LONGITUDE: Degrees longitude where East is positive
SENSOR_DATA_TYPE_ALTITUDE_SEALEVEL_METERS: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,4); //[VT_R8]; // SENSOR_DATA_TYPE_ALTITUDE_SEALEVEL_METERS: Altitude With regards To sea level, in meters
SENSOR_DATA_TYPE_ALTITUDE_ELLIPSOID_METERS: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,5); //[VT_R8]; // SENSOR_DATA_TYPE_ALTITUDE_ELLIPSOID_METERS: Altitude With regards To ellipsoid, in meters
SENSOR_DATA_TYPE_SPEED_KNOTS: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,6); //[VT_R8]; // SENSOR_DATA_TYPE_SPEED_KNOTS: Speed measured in knots
SENSOR_DATA_TYPE_TRUE_HEADING_DEGREES: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,7); //[VT_R8]; // SENSOR_DATA_TYPE_TRUE_HEADING_DEGREES: Heading relative To true North in degrees
SENSOR_DATA_TYPE_MAGNETIC_HEADING_DEGREES: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,8); //[VT_R8]; // SENSOR_DATA_TYPE_MAGNETIC_HEADING_DEGREES: Heading relative To magnetic North in degrees
SENSOR_DATA_TYPE_MAGNETIC_VARIATION: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,9); //[VT_R8]; // SENSOR_DATA_TYPE_MAGNETIC_VARIATION: Magnetic variation. East is positive
SENSOR_DATA_TYPE_FIX_QUALITY: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,10); //[VT_I4]; // SENSOR_DATA_TYPE_FIX_QUALITY: Quality of fix
SENSOR_DATA_TYPE_FIX_TYPE: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,11); //[VT_I4]; // SENSOR_DATA_TYPE_FIX_TYPE: Fix Type
SENSOR_DATA_TYPE_POSITION_DILUTION_OF_PRECISION: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,12); //[VT_R8]; // SENSOR_DATA_TYPE_POSITION_DILUTION_OF_PRECISION: Position Dilution of Precision
SENSOR_DATA_TYPE_HORIZONAL_DILUTION_OF_PRECISION: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,13); //[VT_R8]; // SENSOR_DATA_TYPE_HORIZONAL_DILUTION_OF_PRECISION: HORIZONTAL Dilution of Precision
SENSOR_DATA_TYPE_VERTICAL_DILUTION_OF_PRECISION: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,14); //[VT_R8]; // SENSOR_DATA_TYPE_VERTICAL_DILUTION_OF_PRECISION: VERTICAL Dilution of Precision
SENSOR_DATA_TYPE_SATELLITES_USED_COUNT: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,15); //[VT_I4]; // SENSOR_DATA_TYPE_SATELLITES_USED_COUNT: Number of satellites used in solution
SENSOR_DATA_TYPE_SATELLITES_USED_PRNS: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,16); //[VT_VECTOR | VT_UI1]; // SENSOR_DATA_TYPE_SATELLITES_USED_PRNS: PRN numbers of satellites used in the solution
SENSOR_DATA_TYPE_SATELLITES_IN_VIEW: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,17); //[VT_I4]; // SENSOR_DATA_TYPE_SATELLITES_IN_VIEW: Number of satellites in view. From 0-GPS_MAX_SATELLITES
SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_PRNS: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,18); //[VT_VECTOR | VT_UI1]; // SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_PRNS: PRN numbers of satellites in view
SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_ELEVATION: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,19); //[VT_VECTOR | VT_UI1]; // SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_ELEVATION: Elevation of each sattellite in view
SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_AZIMUTH: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,20); //[VT_VECTOR | VT_UI1; // SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_AZIMUTH: Azimuth of each satellite in view
SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_STN_RATIO: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,21); //[VT_VECTOR | VT_UI1]; // SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_STN_RATIO: Signal To noise ratio For each satellite in view
SENSOR_DATA_TYPE_ERROR_RADIUS_METERS: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,22); //[VT_R8]; // SENSOR_DATA_TYPE_ERROR_RADIUS_METERS: Accuracy of Latitude And Longitude values
SENSOR_DATA_TYPE_ADDRESS1: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,23); //[VT_LPWSTR]; // SENSOR_DATA_TYPE_ADDRESS1: AddressLine1
SENSOR_DATA_TYPE_ADDRESS2: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,24); //[VT_LPWSTR]; // SENSOR_DATA_TYPE_ADDRESS2: AddressLine2
SENSOR_DATA_TYPE_CITY: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,25); //[VT_LPWSTR]; // SENSOR_DATA_TYPE_CITY: City
SENSOR_DATA_TYPE_STATE_PROVINCE: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,26); //[VT_LPWSTR]; // SENSOR_DATA_TYPE_STATE_PROVINCE: State/Province
SENSOR_DATA_TYPE_POSTALCODE: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,27); //[VT_LPWSTR]; // SENSOR_DATA_TYPE_POSTALCODE: Postal Code (e.g. ZIP)
SENSOR_DATA_TYPE_COUNTRY_REGION: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,28); //[VT_LPWSTR]; // SENSOR_DATA_TYPE_COUNTRY_REGION: Country/Region
SENSOR_DATA_TYPE_ALTITUDE_ELLIPSOID_ERROR_METERS: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,29); //[VT_R8]; // SENSOR_DATA_TYPE_ALTITUDE_ELLIPSOID_ERROR_METERS: Altitude Error With regards To ellipsoid, in meters
SENSOR_DATA_TYPE_ALTITUDE_SEALEVEL_ERROR_METERS: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,30); //[VT_R8]; // SENSOR_DATA_TYPE_ALTITUDE_SEALEVEL_ERROR_METERS: Altitude Error With regards To sea level, in meters
SENSOR_DATA_TYPE_GPS_SELECTION_MODE: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,31); //[VT_I4]; // SENSOR_DATA_TYPE_GPS_SELECTION_MODE:
SENSOR_DATA_TYPE_GPS_OPERATION_MODE: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,32); //[VT_I4]; // SENSOR_DATA_TYPE_GPS_OPERATION_MODE:
SENSOR_DATA_TYPE_GPS_STATUS: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,33); //[VT_I4]; // SENSOR_DATA_TYPE_GPS_STATUS:
SENSOR_DATA_TYPE_GEOIDAL_SEPARATION: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,34); //[VT_R8]; // SENSOR_DATA_TYPE_GEOIDAL_SEPARATION:
SENSOR_DATA_TYPE_DGPS_DATA_AGE: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,35); //[VT_R8]; // SENSOR_DATA_TYPE_DGPS_DATA_AGE:
SENSOR_DATA_TYPE_ALTITUDE_ANTENNA_SEALEVEL_METERS: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,36); //[VT_R8]; // SENSOR_DATA_TYPE_ALTITUDE_ANTENNA_SEALEVEL_METERS:
SENSOR_DATA_TYPE_DIFFERENTIAL_REFERENCE_STATION_ID: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,37); //[VT_I4]; // SENSOR_DATA_TYPE_DIFFERENTIAL_REFERENCE_STATION_ID:
SENSOR_DATA_TYPE_NMEA_SENTENCE: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,38); //[VT_LPWSTR]; // SENSOR_DATA_TYPE_NMEA_SENTENCE:
SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_ID: DefPropertyKey($055C74D8,$CA6F,$47D6,$95,$C6,$1E,$D3,$63,$7A,$0F,$F4,39); //[VT_VECTOR|VT_UI1]; // SENSOR_DATA_TYPE_SATELLITES_IN_VIEW_ID:
; // Environmental Sensor Data Types
SENSOR_DATA_TYPE_ENVIRONMENTAL_GUID: DefGUID($8B0AA2F1,$2D57,$42EE,$8C,$C0,$4D,$27,$62,$2B,$46,$C4)
SENSOR_DATA_TYPE_TEMPERATURE_CELSIUS: DefPropertyKey($8B0AA2F1,$2D57,$42EE,$8C,$C0,$4D,$27,$62,$2B,$46,$C4,2); //[VT_R4]
SENSOR_DATA_TYPE_RELATIVE_HUMIDITY_PERCENT: DefPropertyKey($8B0AA2F1,$2D57,$42EE,$8C,$C0,$4D,$27,$62,$2B,$46,$C4,3); //[VT_R4]
SENSOR_DATA_TYPE_ATMOSPHERIC_PRESSURE_BAR: DefPropertyKey($8B0AA2F1,$2D57,$42EE,$8C,$C0,$4D,$27,$62,$2B,$46,$C4,4); //[VT_R4]
SENSOR_DATA_TYPE_WIND_DIRECTION_DEGREES_ANTICLOCKWISE: DefPropertyKey($8B0AA2F1,$2D57,$42EE,$8C,$C0,$4D,$27,$62,$2B,$46,$C4,5); //[VT_R4]
SENSOR_DATA_TYPE_WIND_SPEED_METERS_PER_SECOND: DefPropertyKey($8B0AA2F1,$2D57,$42EE,$8C,$C0,$4D,$27,$62,$2B,$46,$C4,6); //[VT_R4]
; // Motion Sensor Data Types
SENSOR_DATA_TYPE_MOTION_GUID: DefGUID($3F8A69A2,$7C5,$4E48,$A9,$65,$CD,$79,$7A,$AB,$56,$D5)
; // Accelerometer Data Types
SENSOR_DATA_TYPE_ACCELERATION_X_G: DefPropertyKey($3F8A69A2,$7C5,$4E48,$A9,$65,$CD,$79,$7A,$AB,$56,$D5,2); //[VT_R8]
SENSOR_DATA_TYPE_ACCELERATION_Y_G: DefPropertyKey($3F8A69A2,$7C5,$4E48,$A9,$65,$CD,$79,$7A,$AB,$56,$D5,3); //[VT_R8]
SENSOR_DATA_TYPE_ACCELERATION_Z_G: DefPropertyKey($3F8A69A2,$7C5,$4E48,$A9,$65,$CD,$79,$7A,$AB,$56,$D5,4); //[VT_R8]
; // Gyrometer Data Types
SENSOR_DATA_TYPE_ANGULAR_ACCELERATION_X_DEGREES_PER_SECOND_SQUARED: DefPropertyKey($3F8A69A2,$7C5,$4E48,$A9,$65,$CD,$79,$7A,$AB,$56,$D5,5); //[VT_R8]
SENSOR_DATA_TYPE_ANGULAR_ACCELERATION_Y_DEGREES_PER_SECOND_SQUARED: DefPropertyKey($3F8A69A2,$7C5,$4E48,$A9,$65,$CD,$79,$7A,$AB,$56,$D5,6); //[VT_R8]
SENSOR_DATA_TYPE_ANGULAR_ACCELERATION_Z_DEGREES_PER_SECOND_SQUARED: DefPropertyKey($3F8A69A2,$7C5,$4E48,$A9,$65,$CD,$79,$7A,$AB,$56,$D5,7); //[VT_R8]
SENSOR_DATA_TYPE_SPEED_METERS_PER_SECOND: DefPropertyKey($3F8A69A2,$7C5,$4E48,$A9,$65,$CD,$79,$7A,$AB,$56,$D5,8); //[VT_R8]
SENSOR_DATA_TYPE_MOTION_STATE: DefPropertyKey($3F8A69A2,$7C5,$4E48,$A9,$65,$CD,$79,$7A,$AB,$56,$D5,9); //[VT_BOOL]
; // Additional Motion Data Types
SENSOR_DATA_TYPE_ANGULAR_VELOCITY_X_DEGREES_PER_SECOND: DefPropertyKey($3F8A69A2,$7C5,$4E48,$A9,$65,$CD,$79,$7A,$AB,$56,$D5,10); //[VT_R8]
SENSOR_DATA_TYPE_ANGULAR_VELOCITY_Y_DEGREES_PER_SECOND: DefPropertyKey($3F8A69A2,$7C5,$4E48,$A9,$65,$CD,$79,$7A,$AB,$56,$D5,11); //[VT_R8]
SENSOR_DATA_TYPE_ANGULAR_VELOCITY_Z_DEGREES_PER_SECOND: DefPropertyKey($3F8A69A2,$7C5,$4E48,$A9,$65,$CD,$79,$7A,$AB,$56,$D5,12); //[VT_R8]
; // Orientation Sensor Data Types
SENSOR_DATA_TYPE_ORIENTATION_GUID: DefGUID($1637D8A2,$4248,$4275,$86,$5D,$55,$8D,$E8,$4A,$ED,$FD)
; // Inclinometer Data Types
SENSOR_DATA_TYPE_TILT_X_DEGREES: DefPropertyKey($1637D8A2,$4248,$4275,$86,$5D,$55,$8D,$E8,$4A,$ED,$FD,2); //[VT_R4]
SENSOR_DATA_TYPE_TILT_Y_DEGREES: DefPropertyKey($1637D8A2,$4248,$4275,$86,$5D,$55,$8D,$E8,$4A,$ED,$FD,3); //[VT_R4]
SENSOR_DATA_TYPE_TILT_Z_DEGREES: DefPropertyKey($1637D8A2,$4248,$4275,$86,$5D,$55,$8D,$E8,$4A,$ED,$FD,4); //[VT_R4]
; // Compass Data Types
SENSOR_DATA_TYPE_MAGNETIC_HEADING_X_DEGREES: DefPropertyKey($1637D8A2,$4248,$4275,$86,$5D,$55,$8D,$E8,$4A,$ED,$FD,5); //[VT_R4]
SENSOR_DATA_TYPE_MAGNETIC_HEADING_Y_DEGREES: DefPropertyKey($1637D8A2,$4248,$4275,$86,$5D,$55,$8D,$E8,$4A,$ED,$FD,6); //[VT_R4]
SENSOR_DATA_TYPE_MAGNETIC_HEADING_Z_DEGREES: DefPropertyKey($1637D8A2,$4248,$4275,$86,$5D,$55,$8D,$E8,$4A,$ED,$FD,7); //[VT_R4]
; // Distance Data Types
SENSOR_DATA_TYPE_DISTANCE_X_METERS: DefPropertyKey($1637D8A2,$4248,$4275,$86,$5D,$55,$8D,$E8,$4A,$ED,$FD,8); //[VT_R4]
SENSOR_DATA_TYPE_DISTANCE_Y_METERS: DefPropertyKey($1637D8A2,$4248,$4275,$86,$5D,$55,$8D,$E8,$4A,$ED,$FD,9); //[VT_R4]
SENSOR_DATA_TYPE_DISTANCE_Z_METERS: DefPropertyKey($1637D8A2,$4248,$4275,$86,$5D,$55,$8D,$E8,$4A,$ED,$FD,10); //[VT_R4]
; // Additional Compass Data Types
SENSOR_DATA_TYPE_MAGNETIC_HEADING_COMPENSATED_MAGNETIC_NORTH_DEGREES: DefPropertyKey($1637D8A2,$4248,$4275,$86,$5D,$55,$8D,$E8,$4A,$ED,$FD,11); //[VT_R8]
SENSOR_DATA_TYPE_MAGNETIC_HEADING_COMPENSATED_TRUE_NORTH_DEGREES: DefPropertyKey($1637D8A2,$4248,$4275,$86,$5D,$55,$8D,$E8,$4A,$ED,$FD,12); //[VT_R8]
SENSOR_DATA_TYPE_MAGNETIC_HEADING_MAGNETIC_NORTH_DEGREES: DefPropertyKey($1637D8A2,$4248,$4275,$86,$5D,$55,$8D,$E8,$4A,$ED,$FD,13); //[VT_R8]
SENSOR_DATA_TYPE_MAGNETIC_HEADING_TRUE_NORTH_DEGREES: DefPropertyKey($1637D8A2,$4248,$4275,$86,$5D,$55,$8D,$E8,$4A,$ED,$FD,14); //[VT_R8]
; // Additional Orientation Data Types
SENSOR_DATA_TYPE_QUADRANT_ANGLE_DEGREES: DefPropertyKey($1637D8A2,$4248,$4275,$86,$5D,$55,$8D,$E8,$4A,$ED,$FD,15); //[VT_R8]
SENSOR_DATA_TYPE_ROTATION_MATRIX: DefPropertyKey($1637D8A2,$4248,$4275,$86,$5D,$55,$8D,$E8,$4A,$ED,$FD,16); //[VT_VECTOR|VT_UI1]
SENSOR_DATA_TYPE_QUATERNION: DefPropertyKey($1637D8A2,$4248,$4275,$86,$5D,$55,$8D,$E8,$4A,$ED,$FD,17); //[VT_VECTOR|VT_UI1]
SENSOR_DATA_TYPE_SIMPLE_DEVICE_ORIENTATION: DefPropertyKey($1637D8A2,$4248,$4275,$86,$5D,$55,$8D,$E8,$4A,$ED,$FD,18); //[VT_UI4]
; // Compass (Magnetometer) Data Types
SENSOR_DATA_TYPE_MAGNETIC_FIELD_STRENGTH_X_MILLIGAUSS: DefPropertyKey($1637D8A2,$4248,$4275,$86,$5D,$55,$8D,$E8,$4A,$ED,$FD,19); //[VT_R8]
SENSOR_DATA_TYPE_MAGNETIC_FIELD_STRENGTH_Y_MILLIGAUSS: DefPropertyKey($1637D8A2,$4248,$4275,$86,$5D,$55,$8D,$E8,$4A,$ED,$FD,20); //[VT_R8]
SENSOR_DATA_TYPE_MAGNETIC_FIELD_STRENGTH_Z_MILLIGAUSS: DefPropertyKey($1637D8A2,$4248,$4275,$86,$5D,$55,$8D,$E8,$4A,$ED,$FD,21); //[VT_R8]
; // Mechanical Sensor Data Types
SENSOR_DATA_TYPE_GUID_MECHANICAL_GUID: DefGUID($38564A7C,$F2F2,$49BB,$9B,$2B,$BA,$60,$F6,$6A,$58,$DF)
SENSOR_DATA_TYPE_BOOLEAN_SWITCH_STATE: DefPropertyKey($38564A7C,$F2F2,$49BB,$9B,$2B,$BA,$60,$F6,$6A,$58,$DF,2); //[VT_BOOL]
SENSOR_DATA_TYPE_MULTIVALUE_SWITCH_STATE: DefPropertyKey($38564A7C,$F2F2,$49BB,$9B,$2B,$BA,$60,$F6,$6A,$58,$DF,3); //[VT_R8]
SENSOR_DATA_TYPE_FORCE_NEWTONS: DefPropertyKey($38564A7C,$F2F2,$49BB,$9B,$2B,$BA,$60,$F6,$6A,$58,$DF,4); //[VT_R8]
SENSOR_DATA_TYPE_ABSOLUTE_PRESSURE_PASCAL: DefPropertyKey($38564A7C,$F2F2,$49BB,$9B,$2B,$BA,$60,$F6,$6A,$58,$DF,5); //[VT_R8]
SENSOR_DATA_TYPE_GAUGE_PRESSURE_PASCAL: DefPropertyKey($38564A7C,$F2F2,$49BB,$9B,$2B,$BA,$60,$F6,$6A,$58,$DF,6); //[VT_R8]
SENSOR_DATA_TYPE_STRAIN: DefPropertyKey($38564A7C,$F2F2,$49BB,$9B,$2B,$BA,$60,$F6,$6A,$58,$DF,7); //[VT_R8]
SENSOR_DATA_TYPE_WEIGHT_KILOGRAMS: DefPropertyKey($38564A7C,$F2F2,$49BB,$9B,$2B,$BA,$60,$F6,$6A,$58,$DF,8); //[VT_R8]
SENSOR_DATA_TYPE_BOOLEAN_SWITCH_ARRAY_STATES: DefPropertyKey($38564A7C,$F2F2,$49BB,$9B,$2B,$BA,$60,$F6,$6A,$58,$DF,10); //[VT_UI4]
; // Biometric Sensor Data Types
SENSOR_DATA_TYPE_BIOMETRIC_GUID: DefGUID($2299288A, $6D9E,$4B0B,$B7,$EC,$35,$28,$F8,$9E,$40,$AF)
SENSOR_DATA_TYPE_HUMAN_PRESENCE: DefPropertyKey($2299288A, $6D9E,$4B0B,$B7,$EC,$35,$28,$F8,$9E,$40,$AF,2); //[VT_BOOL]
SENSOR_DATA_TYPE_HUMAN_PROXIMITY_METERS: DefPropertyKey($2299288A, $6D9E,$4B0B,$B7,$EC,$35,$28,$F8,$9E,$40,$AF,3); //[VT_R4]
SENSOR_DATA_TYPE_TOUCH_STATE: DefPropertyKey($2299288A, $6D9E,$4B0B,$B7,$EC,$35,$28,$F8,$9E,$40,$AF,4); //[VT_BOOL]
; // Light Sensor Data Types
SENSOR_DATA_TYPE_LIGHT_GUID: DefGUID($E4C77CE2,$DCB7,$46E9,$84,$39,$4F,$EC,$54,$88,$33,$A6)
SENSOR_DATA_TYPE_LIGHT_LEVEL_LUX: DefPropertyKey($E4C77CE2,$DCB7,$46E9,$84,$39,$4F,$EC,$54,$88,$33,$A6,2); //[VT_R4]; // Ambient light in LUX, Lumens per square meter, the ACPI convention For reporting ambient light values
SENSOR_DATA_TYPE_LIGHT_TEMPERATURE_KELVIN: DefPropertyKey($E4C77CE2,$DCB7,$46E9,$84,$39,$4F,$EC,$54,$88,$33,$A6,3); //[VT_R4]
SENSOR_DATA_TYPE_LIGHT_CHROMACITY: DefPropertyKey($E4C77CE2,$DCB7,$46E9,$84,$39,$4F,$EC,$54,$88,$33,$A6,4); //[VT_VECTOR|VT_UI1]
; // Scanner Sensor Data Types
SENSOR_DATA_TYPE_SCANNER_GUID: DefGUID($D7A59A3C,$3421,$44AB,$8D,$3A,$9D,$E8,$AB,$6C,$4C,$AE)
SENSOR_DATA_TYPE_RFID_TAG_40_BIT: DefPropertyKey($D7A59A3C,$3421,$44AB,$8D,$3A,$9D,$E8,$AB,$6C,$4C,$AE,2); //[VT_UI8]; // EM4102 RFID protocol uses 40 bit tags, stored in 64 bit value: VT_UI8
; // Electrical Sensor Data Types
SENSOR_DATA_TYPE_ELECTRICAL_GUID: DefGUID($BBB246D1,$E242,$4780,$A2,$D3,$CD,$ED,$84,$F3,$58,$42)
SENSOR_DATA_TYPE_VOLTAGE_VOLTS: DefPropertyKey($BBB246D1,$E242,$4780,$A2,$D3,$CD,$ED,$84,$F3,$58,$42,2); //[VT_R8]
SENSOR_DATA_TYPE_CURRENT_AMPS: DefPropertyKey($BBB246D1,$E242,$4780,$A2,$D3,$CD,$ED,$84,$F3,$58,$42,3); //[VT_R8]
SENSOR_DATA_TYPE_CAPACITANCE_FARAD: DefPropertyKey($BBB246D1,$E242,$4780,$A2,$D3,$CD,$ED,$84,$F3,$58,$42,4); //[VT_R8]
SENSOR_DATA_TYPE_RESISTANCE_OHMS: DefPropertyKey($BBB246D1,$E242,$4780,$A2,$D3,$CD,$ED,$84,$F3,$58,$42,5); //[VT_R8]
SENSOR_DATA_TYPE_INDUCTANCE_HENRY: DefPropertyKey($BBB246D1,$E242,$4780,$A2,$D3,$CD,$ED,$84,$F3,$58,$42,6); //[VT_R8]
SENSOR_DATA_TYPE_ELECTRICAL_POWER_WATTS: DefPropertyKey($BBB246D1,$E242,$4780,$A2,$D3,$CD,$ED,$84,$F3,$58,$42,7); //[VT_R8]
SENSOR_DATA_TYPE_ELECTRICAL_PERCENT_OF_RANGE: DefPropertyKey($BBB246D1,$E242,$4780,$A2,$D3,$CD,$ED,$84,$F3,$58,$42,8); //[VT_R8]
SENSOR_DATA_TYPE_ELECTRICAL_FREQUENCY_HERTZ: DefPropertyKey($BBB246D1,$E242,$4780,$A2,$D3,$CD,$ED,$84,$F3,$58,$42,9); //[VT_R8]
; // Custom Sensor Data Types (additions To sensors.h)
SENSOR_DATA_TYPE_CUSTOM_GUID: DefGUID($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F)
SENSOR_DATA_TYPE_CUSTOM_USAGE: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,5); //[VT_UI4]
SENSOR_DATA_TYPE_CUSTOM_BOOLEAN_ARRAY: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,6); //[VT_UI4]
SENSOR_DATA_TYPE_CUSTOM_VALUE1: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,7); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE2: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,8); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE3: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,9); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE4: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,10); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE5: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,11); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE6: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,12); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE7: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,13); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE8: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,14); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE9: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,15); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE10: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,16); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE11: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,17); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE12: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,18); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE13: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,19); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE14: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,20); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE15: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,21); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE16: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,22); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE17: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,23); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE18: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,24); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE19: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,25); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE20: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,26); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE21: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,27); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE22: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,28); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE23: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,29); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE24: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,30); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE25: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,31); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE26: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,32); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE27: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,33); //[VT_UI4||VT_R4]
SENSOR_DATA_TYPE_CUSTOM_VALUE28: DefPropertyKey($B14C764F,$7CF,$41E8,$9D,$82,$EB,$E3,$D0,$77,$6A,$6F,34); //[VT_UI4||VT_R4]
EndDataSection
https://deluxepixel.com <- My Business website
https://reportcomplete.com <- School end of term reports system
https://reportcomplete.com <- School end of term reports system
Re: Reading sensors...
Not so sure about the DefPropertyKey macro or the DefGUID macro (as I have not explored it yet). However, for your DefPropertyKey macro:
From the MSDN at http://msdn.microsoft.com/en-us/library ... s.85).aspx the API DEFINE_PROPERTYKEY macro looks like this:
And... when we look at the SHCOLUMNID structure (http://msdn.microsoft.com/en-us/library ... .85).aspx) we see the definitions of what the PROPERTYKEY structure fmtid property looks like
so..........................................
In PB would your PB DefPropertyKey macro look more like this (concept pseudo code type example - not assumed to be correct - discussional and developmental only) ? :
From the MSDN at http://msdn.microsoft.com/en-us/library ... s.85).aspx the API DEFINE_PROPERTYKEY macro looks like this:
Code: Select all
Used to pack a format identifier (FMTID) and property identifier (PID) into a PROPERTYKEY structure that represents a property key.
void DEFINE_PROPERTYKEY(name, DWORD l, WORD w1, WORD w2, BYTE b1, BYTE b2, BYTE b3, BYTE b4, BYTE b5, BYTE b6, BYTE b7, BYTE b8, DWORD pid);
Parameters:
name - The name of a PROPERTYKEY Structure that represents a property key - assuming this type is a string
l - The value of the Data1 member of the fmtid member of the PROPERTYKEY Structure - Type = DWORD
w1 - The value of the Data2 member of the fmtid member of the PROPERTYKEY Structure - Type = WORD
w2 - The value of the Data3 member of the fmtid member of the PROPERTYKEY Structure - Type = WORD
b1 - The value of the Data4[0] member of the fmtid member of the PROPERTYKEY Structure - Type = BYTE
b2 - The value of the Data4[1] member of the fmtid member of the PROPERTYKEY Structure - Type = BYTE
b3 - The value of the Data4[2] member of the fmtid member of the PROPERTYKEY Structure - Type = BYTE
b4 - The value of the Data4[3] member of the fmtid member of the PROPERTYKEY Structure - Type = BYTE
b5 - The value of the Data4[4] member of the fmtid member of the PROPERTYKEY Structure - Type = BYTE
b6 - The value of the Data4[5] member of the fmtid member of the PROPERTYKEY Structure - Type = BYTE
b7 - The value of the Data4[6] member of the fmtid member of the PROPERTYKEY Structure - Type = BYTE
b8 - The value of the Data4[7] member of the fmtid member of the PROPERTYKEY Structure - Type = BYTE
pid - A property identifier (PID). It is recommended that you set this value To PID_FIRST_USABLE. Any value greater than Or equal To 2 is acceptable - - Type = DWORD
Note Values of 0 And 1 are reserved And should Not be used.
****************************************************
The propertykey structure ([url]http://msdn.microsoft.com/en-us/library/windows/desktop/bb773381(v=vs.85).aspx[/url])
typedef struct {
GUID fmtid;
DWORD pid;
} PROPERTYKEY;
fmtid = Type: GUID - A unique GUID for the property.
pid = Type: DWORD - A property identifier (PID). This parameter is not used as in SHCOLUMNID. It is recommended that you set this value to PID_FIRST_USABLE. Any value greater than or equal to 2 is acceptable.
Note Values of 0 and 1 are reserved and should not be used.
Remarks:
As of Windows Vista, the SHCOLUMNID structure is simply an alias for PROPERTYKEY, as shown in this declaration from Shobjidl.h
SHCOLUMNID can be considered a legacy structure with PROPERTYKEY being the new, preferred form. PROPERTYKEY has a broader purpose than SHCOLUMNID, and the new name is more descriptive of its uses.
so..........................................
In PB would your PB DefPropertyKey macro look more like this (concept pseudo code type example - not assumed to be correct - discussional and developmental only) ? :
Code: Select all
#PID_FIRST_USABLE = 2
; the property key structure - looks same as the SHCOLUMNID structure and there is a SHCOLUMNID structure in PB but the fmtid property in the PROPERTYKEY structure is handled differenty according to the MSDN
Structure PROPERTYKEY
fmtid.GUID
pid.l
EndStructure
SENSOR_PROPERTYTYPE.PROPERTYKEY
Restore SENSOR_PROPERTY_TYPE
Macro DefPropertyKey(name, Data1, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8,pid)
Data.s name
Data.l Data1, pid
Data.w w1, w2
Data.b b1, b2, b3, b4, b5, b6, b7, b8
EndMacro
DataSection
SENSOR_PROPERTY_TYPE:
DefPropertyKey("SENSOR_PROPERTYTYPE",$7F8383EC,$D3EC,$495C,$A8,$CF,$B8,$BB,$E8,$5C,$29,$20, #PID_FIRST_USABLE)
EndDataSection
Last edited by SFSxOI on Sat Sep 01, 2012 2:26 pm, edited 1 time in total.
The advantage of a 64 bit operating system over a 32 bit operating system comes down to only being twice the headache.
- DoubleDutch
- Addict
- Posts: 3220
- Joined: Thu Aug 07, 2003 7:01 pm
- Location: United Kingdom
- Contact:
Re: Reading sensors...
Thanks for the info, I'm without internet at present - typing this on my Mums computer as we are currently moving house. Internet should be back within a couple of weeks (hopefully) - I'll try test things before then, but can't be too sure. 

https://deluxepixel.com <- My Business website
https://reportcomplete.com <- School end of term reports system
https://reportcomplete.com <- School end of term reports system