winapi_ui_automation/shared/
hidclass.rs

1// Licensed under the Apache License, Version 2.0
2// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4// All files in the project carrying such notice may not be copied, modified, or distributed
5// except according to those terms.
6use shared::guiddef::GUID;
7use shared::minwindef::{DWORD, PUCHAR, UCHAR, ULONG, USHORT};
8use um::winioctl::{
9    FILE_ANY_ACCESS, FILE_DEVICE_KEYBOARD, METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_NEITHER,
10    METHOD_OUT_DIRECT,
11};
12use um::winnt::BOOLEAN;
13DEFINE_GUID!{GUID_DEVINTERFACE_HID,
14    0x4D1E55B2, 0xF16F, 0x11CF, 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30}
15pub const GUID_CLASS_INPUT: GUID = GUID_DEVINTERFACE_HID;
16DEFINE_GUID!{GUID_HID_INTERFACE_NOTIFY,
17    0x2c4e2e88, 0x25e6, 0x4c33, 0x88, 0x2f, 0x3d, 0x82, 0xe6, 0x07, 0x36, 0x81}
18DEFINE_GUID!{GUID_HID_INTERFACE_HIDPARSE,
19    0xf5c315a5, 0x69ac, 0x4bc2, 0x92, 0x79, 0xd0, 0xb6, 0x45, 0x76, 0xf4, 0x4b}
20// FIXME devpropkey stuff
21pub const HID_REVISION: DWORD = 0x00000001;
22pub const IOCTL_HID_GET_DRIVER_CONFIG: DWORD = HID_BUFFER_CTL_CODE!(100);
23pub const IOCTL_HID_SET_DRIVER_CONFIG: DWORD = HID_BUFFER_CTL_CODE!(101);
24pub const IOCTL_HID_GET_POLL_FREQUENCY_MSEC: DWORD = HID_BUFFER_CTL_CODE!(102);
25pub const IOCTL_HID_SET_POLL_FREQUENCY_MSEC: DWORD = HID_BUFFER_CTL_CODE!(103);
26pub const IOCTL_GET_NUM_DEVICE_INPUT_BUFFERS: DWORD = HID_BUFFER_CTL_CODE!(104);
27pub const IOCTL_SET_NUM_DEVICE_INPUT_BUFFERS: DWORD = HID_BUFFER_CTL_CODE!(105);
28pub const IOCTL_HID_GET_COLLECTION_INFORMATION: DWORD = HID_BUFFER_CTL_CODE!(106);
29pub const IOCTL_HID_ENABLE_WAKE_ON_SX: DWORD = HID_BUFFER_CTL_CODE!(107);
30pub const IOCTL_HID_SET_S0_IDLE_TIMEOUT: DWORD = HID_BUFFER_CTL_CODE!(108);
31pub const IOCTL_HID_GET_COLLECTION_DESCRIPTOR: DWORD = HID_CTL_CODE!(100);
32pub const IOCTL_HID_FLUSH_QUEUE: DWORD = HID_CTL_CODE!(101);
33pub const IOCTL_HID_SET_FEATURE: DWORD = HID_IN_CTL_CODE!(100);
34pub const IOCTL_HID_SET_OUTPUT_REPORT: DWORD = HID_IN_CTL_CODE!(101);
35pub const IOCTL_HID_GET_FEATURE: DWORD = HID_OUT_CTL_CODE!(100);
36pub const IOCTL_GET_PHYSICAL_DESCRIPTOR: DWORD = HID_OUT_CTL_CODE!(102);
37pub const IOCTL_HID_GET_HARDWARE_ID: DWORD = HID_OUT_CTL_CODE!(103);
38pub const IOCTL_HID_GET_INPUT_REPORT: DWORD = HID_OUT_CTL_CODE!(104);
39pub const IOCTL_HID_GET_OUTPUT_REPORT: DWORD = HID_OUT_CTL_CODE!(105);
40pub const IOCTL_HID_GET_MANUFACTURER_STRING: DWORD = HID_OUT_CTL_CODE!(110);
41pub const IOCTL_HID_GET_PRODUCT_STRING: DWORD = HID_OUT_CTL_CODE!(111);
42pub const IOCTL_HID_GET_SERIALNUMBER_STRING: DWORD = HID_OUT_CTL_CODE!(112);
43pub const IOCTL_HID_GET_INDEXED_STRING: DWORD = HID_OUT_CTL_CODE!(120);
44pub const IOCTL_HID_GET_MS_GENRE_DESCRIPTOR: DWORD = HID_OUT_CTL_CODE!(121);
45pub const IOCTL_HID_ENABLE_SECURE_READ: DWORD = HID_CTL_CODE!(130);
46pub const IOCTL_HID_DISABLE_SECURE_READ: DWORD = HID_CTL_CODE!(131);
47pub const IOCTL_HID_DEVICERESET_NOTIFICATION: DWORD = HID_CTL_CODE!(140);
48STRUCT!{struct HID_XFER_PACKET {
49    reportBuffer: PUCHAR,
50    reportBufferLen: ULONG,
51    reportId: UCHAR,
52}}
53pub type PHID_XFER_PACKET = *mut HID_XFER_PACKET;
54//FIXME Stuff for NT_INCLUDED
55STRUCT!{struct HID_COLLECTION_INFORMATION {
56    DescriptorSize: ULONG,
57    Polled: BOOLEAN,
58    Reserved1: [UCHAR; 1],
59    VendorID: USHORT,
60    ProductID: USHORT,
61    VersionNumber: USHORT,
62}}
63pub type PHID_COLLECTION_INFORMATION = *mut HID_COLLECTION_INFORMATION;
64STRUCT!{struct HID_DRIVER_CONFIG {
65    Size: ULONG,
66    RingBufferSize: ULONG,
67}}
68pub type PHID_DRIVER_CONFIG = *mut HID_DRIVER_CONFIG;