| 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> |