| 1 | /* | 
 
 
 
 
 | 2 | * kbdmou.h | 
 
 
 
 
 | 3 | * | 
 
 
 
 
 | 4 | * Structures and definitions for Keyboard/Mouse class and port drivers. | 
 
 
 
 
 | 5 | * | 
 
 
 
 
 | 6 | * This file is part of the w32api package. | 
 
 
 
 
 | 7 | * | 
 
 
 
 
 | 8 | * Contributors: | 
 
 
 
 
 | 9 | *   Created by Filip Navara <xnavara@volny.cz> | 
 
 
 
 
 | 10 | * | 
 
 
 
 
 | 11 | * THIS SOFTWARE IS NOT COPYRIGHTED | 
 
 
 
 
 | 12 | * | 
 
 
 
 
 | 13 | * This source code is offered for use in the public domain. You may | 
 
 
 
 
 | 14 | * use, modify or distribute it freely. | 
 
 
 
 
 | 15 | * | 
 
 
 
 
 | 16 | * This code is distributed in the hope that it will be useful but | 
 
 
 
 
 | 17 | * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY | 
 
 
 
 
 | 18 | * DISCLAIMED. This includes but is not limited to warranties of | 
 
 
 
 
 | 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 
 
 
 
 
 | 20 | * | 
 
 
 
 
 | 21 | */ | 
 
 
 
 
 | 22 |  | 
 
 
 
 
 | 23 | #pragma once | 
 
 
 
 
 | 24 |  | 
 
 
 
 
 | 25 | #define _KBDMOU_ | 
 
 
 
 
 | 26 |  | 
 
 
 
 
 | 27 | #include <ntddkbd.h> | 
 
 
 
 
 | 28 | #include <ntddmou.h> | 
 
 
 
 
 | 29 |  | 
 
 
 
 
 | 30 | #define DD_KEYBOARD_PORT_DEVICE_NAME      "\\Device\\KeyboardPort" | 
 
 
 
 
 | 31 | #define DD_KEYBOARD_PORT_DEVICE_NAME_U    L"\\Device\\KeyboardPort" | 
 
 
 
 
 | 32 | #define DD_KEYBOARD_PORT_BASE_NAME_U      L"KeyboardPort" | 
 
 
 
 
 | 33 | #define DD_POINTER_PORT_DEVICE_NAME       "\\Device\\PointerPort" | 
 
 
 
 
 | 34 | #define DD_POINTER_PORT_DEVICE_NAME_U     L"\\Device\\PointerPort" | 
 
 
 
 
 | 35 | #define DD_POINTER_PORT_BASE_NAME_U       L"PointerPort" | 
 
 
 
 
 | 36 |  | 
 
 
 
 
 | 37 | #define DD_KEYBOARD_CLASS_BASE_NAME_U     L"KeyboardClass" | 
 
 
 
 
 | 38 | #define DD_POINTER_CLASS_BASE_NAME_U      L"PointerClass" | 
 
 
 
 
 | 39 |  | 
 
 
 
 
 | 40 | #define DD_KEYBOARD_RESOURCE_CLASS_NAME_U             L"Keyboard" | 
 
 
 
 
 | 41 | #define DD_POINTER_RESOURCE_CLASS_NAME_U              L"Pointer" | 
 
 
 
 
 | 42 | #define DD_KEYBOARD_MOUSE_COMBO_RESOURCE_CLASS_NAME_U L"Keyboard/Pointer" | 
 
 
 
 
 | 43 |  | 
 
 
 
 
 | 44 | #define POINTER_PORTS_MAXIMUM             8 | 
 
 
 
 
 | 45 | #define KEYBOARD_PORTS_MAXIMUM            8 | 
 
 
 
 
 | 46 |  | 
 
 
 
 
 | 47 | #define KBDMOU_COULD_NOT_SEND_COMMAND     0x0000 | 
 
 
 
 
 | 48 | #define KBDMOU_COULD_NOT_SEND_PARAM       0x0001 | 
 
 
 
 
 | 49 | #define KBDMOU_NO_RESPONSE                0x0002 | 
 
 
 
 
 | 50 | #define KBDMOU_INCORRECT_RESPONSE         0x0004 | 
 
 
 
 
 | 51 |  | 
 
 
 
 
 | 52 | #define I8042_ERROR_VALUE_BASE            1000 | 
 
 
 
 
 | 53 | #define INPORT_ERROR_VALUE_BASE           2000 | 
 
 
 
 
 | 54 | #define SERIAL_MOUSE_ERROR_VALUE_BASE     3000 | 
 
 
 
 
 | 55 |  | 
 
 
 
 
 | 56 | #define IOCTL_INTERNAL_KEYBOARD_CONNECT \ | 
 
 
 
 
 | 57 | CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0080, METHOD_NEITHER, FILE_ANY_ACCESS) | 
 
 
 
 
 | 58 |  | 
 
 
 
 
 | 59 | #define IOCTL_INTERNAL_KEYBOARD_DISCONNECT \ | 
 
 
 
 
 | 60 | CTL_CODE(FILE_DEVICE_KEYBOARD,0x0100, METHOD_NEITHER, FILE_ANY_ACCESS) | 
 
 
 
 
 | 61 |  | 
 
 
 
 
 | 62 | #define IOCTL_INTERNAL_KEYBOARD_ENABLE \ | 
 
 
 
 
 | 63 | CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0200, METHOD_NEITHER, FILE_ANY_ACCESS) | 
 
 
 
 
 | 64 |  | 
 
 
 
 
 | 65 | #define IOCTL_INTERNAL_KEYBOARD_DISABLE \ | 
 
 
 
 
 | 66 | CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0400, METHOD_NEITHER, FILE_ANY_ACCESS) | 
 
 
 
 
 | 67 |  | 
 
 
 
 
 | 68 | #define IOCTL_INTERNAL_MOUSE_CONNECT \ | 
 
 
 
 
 | 69 | CTL_CODE(FILE_DEVICE_MOUSE, 0x0080, METHOD_NEITHER, FILE_ANY_ACCESS) | 
 
 
 
 
 | 70 |  | 
 
 
 
 
 | 71 | #define IOCTL_INTERNAL_MOUSE_DISCONNECT \ | 
 
 
 
 
 | 72 | CTL_CODE(FILE_DEVICE_MOUSE, 0x0100, METHOD_NEITHER, FILE_ANY_ACCESS) | 
 
 
 
 
 | 73 |  | 
 
 
 
 
 | 74 | #define IOCTL_INTERNAL_MOUSE_ENABLE \ | 
 
 
 
 
 | 75 | CTL_CODE(FILE_DEVICE_MOUSE, 0x0200, METHOD_NEITHER, FILE_ANY_ACCESS) | 
 
 
 
 
 | 76 |  | 
 
 
 
 
 | 77 | #define IOCTL_INTERNAL_MOUSE_DISABLE \ | 
 
 
 
 
 | 78 | CTL_CODE(FILE_DEVICE_MOUSE, 0x0400, METHOD_NEITHER, FILE_ANY_ACCESS) | 
 
 
 
 
 | 79 |  | 
 
 
 
 
 | 80 | typedef struct _CONNECT_DATA { | 
 
 
 
 
 | 81 | PDEVICE_OBJECT ClassDeviceObject; | 
 
 
 
 
 | 82 | PVOID ClassService; | 
 
 
 
 
 | 83 | } CONNECT_DATA, *PCONNECT_DATA; | 
 
 
 
 
 | 84 |  | 
 
 
 
 
 | 85 | typedef VOID | 
 
 
 
 
 | 86 | (STDAPICALLTYPE *PSERVICE_CALLBACK_ROUTINE)( | 
 
 
 
 
 | 87 | IN PVOID NormalContext, | 
 
 
 
 
 | 88 | IN PVOID SystemArgument1, | 
 
 
 
 
 | 89 | IN PVOID SystemArgument2, | 
 
 
 
 
 | 90 | IN OUT PVOID SystemArgument3); | 
 
 
 
 
 | 91 |  | 
 
 
 
 
 | 92 | #include <wmidata.h> |