00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef HID_H
00021 #define HID_H
00022
00023 #include "hidsdi.h"
00024 #include "setupapi.h"
00025
00026 typedef struct _SP_FNCLASS_DEVICE_DATA {
00027 DWORD cbSize;
00028 GUID FunctionClassGuid;
00029 TCHAR DevicePath [ANYSIZE_ARRAY];
00030 } SP_FNCLASS_DEVICE_DATA, *PSP_FNCLASS_DEVICE_DATA;
00031
00032 BOOLEAN
00033 SetupDiGetFunctionClassDeviceInfo (
00034 IN HDEVINFO DeviceInfoSet,
00035 IN PSP_DEVINFO_DATA DeviceInfoData,
00036 OUT PSP_FNCLASS_DEVICE_DATA FunctionClassDeviceData,
00037 IN DWORD FunctionClassDeviceDataSize,
00038 OUT PDWORD RequiredSize
00039 );
00040
00041 #define ASSERT(x)
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051 typedef struct _HID_DATA {
00052 BOOLEAN IsButtonData;
00053 UCHAR Reserved;
00054 USAGE UsagePage;
00055 ULONG Status;
00056
00057 ULONG ReportID;
00058 BOOLEAN IsDataSet;
00059
00060
00061 union {
00062 struct {
00063 ULONG UsageMin;
00064 ULONG UsageMax;
00065 ULONG MaxUsageLength;
00066 PUSAGE Usages;
00067
00068 } ButtonData;
00069 struct {
00070 USAGE Usage;
00071 USHORT Reserved;
00072
00073 ULONG Value;
00074 LONG ScaledValue;
00075 } ValueData;
00076 };
00077 } HID_DATA, *PHID_DATA;
00078
00079 typedef struct _HID_DEVICE {
00080 PCHAR DevicePath;
00081 HANDLE HidDevice;
00082 BOOL OpenedForRead;
00083 BOOL OpenedForWrite;
00084 BOOL OpenedOverlapped;
00085 BOOL OpenedExclusive;
00086
00087 PHIDP_PREPARSED_DATA Ppd;
00088 HIDP_CAPS Caps;
00089 HIDD_ATTRIBUTES Attributes;
00090
00091 PCHAR InputReportBuffer;
00092 PHID_DATA InputData;
00093 ULONG InputDataLength;
00094 PHIDP_BUTTON_CAPS InputButtonCaps;
00095 PHIDP_VALUE_CAPS InputValueCaps;
00096
00097 PCHAR OutputReportBuffer;
00098 PHID_DATA OutputData;
00099 ULONG OutputDataLength;
00100 PHIDP_BUTTON_CAPS OutputButtonCaps;
00101 PHIDP_VALUE_CAPS OutputValueCaps;
00102
00103 PCHAR FeatureReportBuffer;
00104 PHID_DATA FeatureData;
00105 ULONG FeatureDataLength;
00106 PHIDP_BUTTON_CAPS FeatureButtonCaps;
00107 PHIDP_VALUE_CAPS FeatureValueCaps;
00108 } HID_DEVICE, *PHID_DEVICE;
00109
00110
00111 BOOLEAN
00112 OpenHidDevice (
00113 IN PCHAR DevicePath,
00114 IN BOOL HasReadAccess,
00115 IN BOOL HasWriteAccess,
00116 IN BOOL IsOverlapped,
00117 IN BOOL IsExclusive,
00118 IN OUT PHID_DEVICE HidDevice
00119 );
00120
00121 BOOLEAN
00122 FindKnownHidDevices (
00123 OUT PHID_DEVICE * HidDevices,
00124 OUT PULONG NumberDevices
00125 );
00126
00127 BOOLEAN
00128 FillDeviceInfo(
00129 IN PHID_DEVICE HidDevice
00130 );
00131
00132 VOID
00133 CloseHidDevices (
00134 OUT PHID_DEVICE HidDevices,
00135 OUT ULONG NumberDevices
00136 );
00137
00138 VOID
00139 CloseHidDevice (
00140 IN PHID_DEVICE HidDevice
00141 );
00142
00143
00144 BOOLEAN
00145 Read (
00146 PHID_DEVICE HidDevice
00147 );
00148
00149 BOOLEAN
00150 ReadOverlapped (
00151 PHID_DEVICE HidDevice,
00152 HANDLE CompletionEvent
00153 );
00154
00155 BOOLEAN
00156 Write (
00157 PHID_DEVICE HidDevice
00158 );
00159
00160 BOOLEAN
00161 UnpackReport (
00162 IN PCHAR ReportBuffer,
00163 IN USHORT ReportBufferLength,
00164 IN HIDP_REPORT_TYPE ReportType,
00165 IN OUT PHID_DATA Data,
00166 IN ULONG DataLength,
00167 IN PHIDP_PREPARSED_DATA Ppd
00168 );
00169
00170 BOOLEAN
00171 SetFeature (
00172 PHID_DEVICE HidDevice
00173 );
00174
00175 BOOLEAN
00176 GetFeature (
00177 PHID_DEVICE HidDevice
00178 );
00179
00180 #endif
00181