xref: /reactos/sdk/include/ddk/hidport.h (revision 34593d93)
1 #pragma once
2 
3 #include <hidclass.h>
4 
5 typedef struct _HID_MINIDRIVER_REGISTRATION
6 {
7     ULONG           Revision;
8     PDRIVER_OBJECT  DriverObject;
9     PUNICODE_STRING RegistryPath;
10     ULONG           DeviceExtensionSize;
11     BOOLEAN         DevicesArePolled;
12     UCHAR           Reserved[3];
13 }HID_MINIDRIVER_REGISTRATION, *PHID_MINIDRIVER_REGISTRATION;
14 
15 typedef struct _HID_DEVICE_EXTENSION
16 {
17     PDEVICE_OBJECT  PhysicalDeviceObject;
18     PDEVICE_OBJECT  NextDeviceObject;
19     PVOID           MiniDeviceExtension;
20 }HID_DEVICE_EXTENSION, *PHID_DEVICE_EXTENSION;
21 
22 typedef struct _HID_DEVICE_ATTRIBUTES
23 {
24     ULONG           Size;
25     USHORT          VendorID;
26     USHORT          ProductID;
27     USHORT          VersionNumber;
28     USHORT          Reserved[11];
29 }HID_DEVICE_ATTRIBUTES, * PHID_DEVICE_ATTRIBUTES;
30 
31 #include <pshpack1.h>
32 
33 typedef struct _HID_DESCRIPTOR
34 {
35     UCHAR   bLength;
36     UCHAR   bDescriptorType;
37     USHORT  bcdHID;
38     UCHAR   bCountry;
39     UCHAR   bNumDescriptors;
40 
41     struct _HID_DESCRIPTOR_DESC_LIST
42     {
43         UCHAR    bReportType;
44         USHORT   wReportLength;
45     }DescriptorList [1];
46 }HID_DESCRIPTOR, * PHID_DESCRIPTOR;
47 
48 #include <poppack.h>
49 
50 #define HID_HID_DESCRIPTOR_TYPE             0x21
51 #define HID_REPORT_DESCRIPTOR_TYPE          0x22
52 #define HID_PHYSICAL_DESCRIPTOR_TYPE        0x23
53 
54 
55 
56 typedef
57 VOID
58 (NTAPI *HID_SEND_IDLE_CALLBACK)(
59     IN PVOID Context
60 );
61 
62 typedef struct _HID_SUBMIT_IDLE_NOTIFICATION_CALLBACK_INFO
63 {
64     HID_SEND_IDLE_CALLBACK IdleCallback;
65     PVOID IdleContext;
66 }HID_SUBMIT_IDLE_NOTIFICATION_CALLBACK_INFO, *PHID_SUBMIT_IDLE_NOTIFICATION_CALLBACK_INFO;
67 
68 NTSTATUS
69 NTAPI
70 HidRegisterMinidriver(
71     IN PHID_MINIDRIVER_REGISTRATION  MinidriverRegistration
72 );
73 
74 #if(NTDDI_VERSION>=NTDDI_WINXPSP1)
75 
76 NTSTATUS
77 HidNotifyPresence(
78     IN PDEVICE_OBJECT DeviceObject,
79     IN BOOLEAN IsPresent
80 );
81 
82 #endif
83 
84 #define IOCTL_HID_GET_DEVICE_DESCRIPTOR             HID_CTL_CODE(0)
85 #define IOCTL_HID_GET_REPORT_DESCRIPTOR             HID_CTL_CODE(1)
86 #define IOCTL_HID_READ_REPORT                       HID_CTL_CODE(2)
87 #define IOCTL_HID_WRITE_REPORT                      HID_CTL_CODE(3)
88 #define IOCTL_HID_GET_STRING                        HID_CTL_CODE(4)
89 #define IOCTL_HID_ACTIVATE_DEVICE                   HID_CTL_CODE(7)
90 #define IOCTL_HID_DEACTIVATE_DEVICE                 HID_CTL_CODE(8)
91 #define IOCTL_HID_GET_DEVICE_ATTRIBUTES             HID_CTL_CODE(9)
92 #define IOCTL_HID_SEND_IDLE_NOTIFICATION_REQUEST    HID_CTL_CODE(10)
93 
94 #define HID_HID_DESCRIPTOR_TYPE             0x21
95 #define HID_REPORT_DESCRIPTOR_TYPE          0x22
96 #define HID_PHYSICAL_DESCRIPTOR_TYPE        0x23
97 
98 #define HID_STRING_ID_IMANUFACTURER     14
99 #define HID_STRING_ID_IPRODUCT          15
100 #define HID_STRING_ID_ISERIALNUMBER     16
101