/*++ * * Component: hidserv.dll * File: hid.h * Purpose: header to support hid client capability. * * Copyright (C) Microsoft Corporation 1997,1998. All rights reserved. * * WGJ --*/ #ifndef HIDEXE_H #define HIDEXE_H #include #include #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ // // A structure to hold the steady state data received from the hid device. // Each time a read packet is received we fill in this structure. // Each time we wish to write to a hid device we fill in this structure. // This structure is here only for convenience. Most real applications will // have a more efficient way of moving the hid data to the read, write, and // feature routines. // typedef struct _HID_DATA { BOOLEAN IsButtonData; UCHAR Reserved; USAGE UsagePage; // The usage page for which we are looking. USHORT LinkCollection; // hidparse internal index USAGE LinkUsage; // the actual logical collection usage ULONG Status; // The last status returned from the accessor function // when updating this field. union { struct { ULONG MaxUsageLength; // Usages buffer length. PUSAGE_AND_PAGE Usages; // list of usages (buttons ``down'' on the device. PUSAGE_AND_PAGE PrevUsages; // list of usages previously ``down'' on the device. } ButtonData; struct { USAGE Usage; // The usage describing this value; USHORT Reserved; ULONG Value; LONG ScaledValue; ULONG LogicalRange; } ValueData; }; } HID_DATA, *PHID_DATA; typedef struct _HID_DEVICE { struct _HID_DEVICE * pNext; HANDLE HidDevice; // A file handle to the hid device. PHIDP_PREPARSED_DATA Ppd; // The opaque parser info describing this device HIDP_CAPS Caps; // The Capabilities of this hid device. HIDD_ATTRIBUTES Attributes; // PnP info DWORD DevInst; // the devnode BOOL Active; // Dead or alive? HDEVNOTIFY hNotify; // Device notification handle OVERLAPPED Overlap; // used for overlapped read. HANDLE ReadEvent; // when io pending occurs HANDLE CompletionEvent; // signals read completion. BOOL fThreadEnabled; DWORD ThreadId; HANDLE ThreadHandle; PCHAR InputReportBuffer; PHID_DATA InputData; // array of hid data structures ULONG InputDataLength; // Num elements in this array. BOOLEAN Speakers; } HID_DEVICE, *PHID_DEVICE; // pnp.c BOOL RebuildHidDeviceList (void); BOOL StartHidDevice( PHID_DEVICE pHidDevice); BOOL StopHidDevice( PHID_DEVICE pHidDevice); BOOL DestroyHidDeviceList( void); BOOL DestroyDeviceByHandle( HANDLE hDevice ); // report.c BOOL Read ( PHID_DEVICE HidDevice ); BOOL ParseReadReport ( PHID_DEVICE HidDevice ); BOOL Write ( PHID_DEVICE HidDevice ); BOOL SetFeature ( PHID_DEVICE HidDevice ); BOOL GetFeature ( PHID_DEVICE HidDevice ); #ifdef __cplusplus } #endif /* __cplusplus */ #endif