home *** CD-ROM | disk | FTP | other *** search
- /*
- * ntdd8042.h
- *
- * i8042 IOCTL interface.
- *
- * This file is part of the w32api package.
- *
- * Contributors:
- * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
- *
- * THIS SOFTWARE IS NOT COPYRIGHTED
- *
- * This source code is offered for use in the public domain. You may
- * use, modify or distribute it freely.
- *
- * This code is distributed in the hope that it will be useful but
- * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
- * DISCLAIMED. This includes but is not limited to warranties of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
- */
-
- #ifndef __NTDD8042_H
- #define __NTDD8042_H
-
- #if __GNUC__ >=3
- #pragma GCC system_header
- #endif
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- #pragma pack(push,4)
-
- #include "ntddk.h"
- #include "ntddkbd.h"
- #include "ntddmou.h"
-
-
- #define IOCTL_INTERNAL_I8042_CONTROLLER_WRITE_BUFFER \
- CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0FF2, METHOD_NEITHER, FILE_ANY_ACCESS)
-
- #define IOCTL_INTERNAL_I8042_HOOK_KEYBOARD \
- CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0FF0, METHOD_NEITHER, FILE_ANY_ACCESS)
-
- #define IOCTL_INTERNAL_I8042_KEYBOARD_START_INFORMATION \
- CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0FF3, METHOD_NEITHER, FILE_ANY_ACCESS)
-
- #define IOCTL_INTERNAL_I8042_KEYBOARD_WRITE_BUFFER \
- CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0FF1, METHOD_NEITHER, FILE_ANY_ACCESS)
-
- #define IOCTL_INTERNAL_I8042_HOOK_MOUSE \
- CTL_CODE(FILE_DEVICE_MOUSE, 0x0FF0, METHOD_NEITHER, FILE_ANY_ACCESS)
-
- #define IOCTL_INTERNAL_I8042_MOUSE_START_INFORMATION \
- CTL_CODE(FILE_DEVICE_MOUSE, 0x0FF3, METHOD_NEITHER, FILE_ANY_ACCESS)
-
- #define IOCTL_INTERNAL_I8042_MOUSE_WRITE_BUFFER \
- CTL_CODE(FILE_DEVICE_MOUSE, 0x0FF1, METHOD_NEITHER, FILE_ANY_ACCESS)
-
- #define I8042_POWER_SYS_BUTTON 0x0001
- #define I8042_SLEEP_SYS_BUTTON 0x0002
- #define I8042_WAKE_SYS_BUTTON 0x0004
- #define I8042_SYS_BUTTONS (I8042_POWER_SYS_BUTTON | \
- I8042_SLEEP_SYS_BUTTON | \
- I8042_WAKE_SYS_BUTTON)
-
- typedef enum _TRANSMIT_STATE {
- Idle = 0,
- SendingBytes
- } TRANSMIT_STATE;
-
- typedef struct _OUTPUT_PACKET {
- PUCHAR Bytes;
- ULONG CurrentByte;
- ULONG ByteCount;
- TRANSMIT_STATE State;
- } OUTPUT_PACKET, *POUTPUT_PACKET;
-
- typedef enum _KEYBOARD_SCAN_STATE {
- Normal,
- GotE0,
- GotE1
- } KEYBOARD_SCAN_STATE, *PKEYBOARD_SCAN_STATE;
-
- typedef enum _MOUSE_STATE {
- MouseIdle,
- XMovement,
- YMovement,
- ZMovement,
- MouseExpectingACK,
- MouseResetting
- } MOUSE_STATE, *PMOUSE_STATE;
-
- typedef enum _MOUSE_RESET_SUBSTATE {
- ExpectingReset,
- ExpectingResetId,
- ExpectingGetDeviceIdACK,
- ExpectingGetDeviceIdValue,
- ExpectingSetResolutionDefaultACK,
- ExpectingSetResolutionDefaultValueACK,
- ExpectingSetResolutionACK,
- ExpectingSetResolutionValueACK,
- ExpectingSetScaling1to1ACK,
- ExpectingSetScaling1to1ACK2,
- ExpectingSetScaling1to1ACK3,
- ExpectingReadMouseStatusACK,
- ExpectingReadMouseStatusByte1,
- ExpectingReadMouseStatusByte2,
- ExpectingReadMouseStatusByte3,
- StartPnPIdDetection,
- ExpectingLoopSetSamplingRateACK,
- ExpectingLoopSetSamplingRateValueACK,
- ExpectingPnpIdByte1,
- ExpectingPnpIdByte2,
- ExpectingPnpIdByte3,
- ExpectingPnpIdByte4,
- ExpectingPnpIdByte5,
- ExpectingPnpIdByte6,
- ExpectingPnpIdByte7,
- EnableWheel,
- Enable5Buttons,
- ExpectingGetDeviceId2ACK,
- ExpectingGetDeviceId2Value,
- ExpectingSetSamplingRateACK,
- ExpectingSetSamplingRateValueACK,
- ExpectingEnableACK,
- ExpectingFinalResolutionACK,
- ExpectingFinalResolutionValueACK,
- ExpectingGetDeviceIdDetectACK,
- ExpectingGetDeviceIdDetectValue,
- CustomHookStateMinimum = 100,
- CustomHookStateMaximum = 999,
- I8042ReservedMinimum = 1000
- } MOUSE_RESET_SUBSTATE, *PMOUSE_RESET_SUBSTATE;
-
- typedef struct _INTERNAL_I8042_START_INFORMATION {
- ULONG Size;
- PKINTERRUPT InterruptObject;
- ULONG Reserved[8];
- } INTERNAL_I8042_START_INFORMATION, *PINTERNAL_I8042_START_INFORMATION;
-
- typedef VOID DDKAPI
- (*PI8042_ISR_WRITE_PORT)(
- IN PVOID Context,
- IN UCHAR Value);
-
- typedef VOID DDKAPI
- (*PI8042_QUEUE_PACKET)(
- IN PVOID Context);
-
- typedef NTSTATUS DDKAPI
- (*PI8042_SYNCH_READ_PORT) (
- IN PVOID Context,
- OUT PUCHAR Value,
- IN BOOLEAN WaitForACK);
-
- typedef NTSTATUS DDKAPI
- (*PI8042_SYNCH_WRITE_PORT)(
- IN PVOID Context,
- IN UCHAR Value,
- IN BOOLEAN WaitForACK);
-
-
- typedef NTSTATUS DDKAPI
- (*PI8042_KEYBOARD_INITIALIZATION_ROUTINE)(
- IN PVOID InitializationContext,
- IN PVOID SynchFuncContext,
- IN PI8042_SYNCH_READ_PORT ReadPort,
- IN PI8042_SYNCH_WRITE_PORT WritePort,
- OUT PBOOLEAN TurnTranslationOn);
-
- typedef BOOLEAN DDKAPI
- (*PI8042_KEYBOARD_ISR)(
- PVOID IsrContext,
- PKEYBOARD_INPUT_DATA CurrentInput,
- POUTPUT_PACKET CurrentOutput,
- UCHAR StatusByte,
- PUCHAR Byte,
- PBOOLEAN ContinueProcessing,
- PKEYBOARD_SCAN_STATE ScanState);
-
- typedef struct _INTERNAL_I8042_HOOK_KEYBOARD {
- OUT PVOID Context;
- OUT PI8042_KEYBOARD_INITIALIZATION_ROUTINE InitializationRoutine;
- OUT PI8042_KEYBOARD_ISR IsrRoutine;
- IN PI8042_ISR_WRITE_PORT IsrWritePort;
- IN PI8042_QUEUE_PACKET QueueKeyboardPacket;
- IN PVOID CallContext;
- } INTERNAL_I8042_HOOK_KEYBOARD, *PINTERNAL_I8042_HOOK_KEYBOARD;
-
- typedef BOOLEAN DDKAPI
- (*PI8042_MOUSE_ISR)(
- PVOID IsrContext,
- PMOUSE_INPUT_DATA CurrentInput,
- POUTPUT_PACKET CurrentOutput,
- UCHAR StatusByte,
- PUCHAR Byte,
- PBOOLEAN ContinueProcessing,
- PMOUSE_STATE MouseState,
- PMOUSE_RESET_SUBSTATE ResetSubState);
-
- typedef struct _INTERNAL_I8042_HOOK_MOUSE {
- OUT PVOID Context;
- OUT PI8042_MOUSE_ISR IsrRoutine;
- IN PI8042_ISR_WRITE_PORT IsrWritePort;
- IN PI8042_QUEUE_PACKET QueueMousePacket;
- IN PVOID CallContext;
- } INTERNAL_I8042_HOOK_MOUSE, *PINTERNAL_I8042_HOOK_MOUSE;
-
- #pragma pack(pop)
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif /* __NTDD8042_H */
-