This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/WATCOM/h/nt/ddk/ntdd8042.h

169 lines
6.5 KiB
C

/*
* ntdd8042.h I8042 device I/O control codes
*
* =========================================================================
*
* Open Watcom Project
*
* Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved.
*
* This file is automatically generated. Do not edit directly.
*
* =========================================================================
*/
#ifndef _NTDD8042_
#define _NTDD8042_
#ifndef _ENABLE_AUTODEPEND
#pragma read_only_file;
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* I8042 internal device I/O control codes */
#define IOCTL_INTERNAL_I8042_HOOK_KEYBOARD \
CTL_CODE( FILE_DEVICE_KEYBOARD, 0x0FF0, 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_KEYBOARD_WRITE_BUFFER \
CTL_CODE( FILE_DEVICE_KEYBOARD, 0x0FF1, METHOD_NEITHER, FILE_ANY_ACCESS )
#define IOCTL_INTERNAL_I8042_MOUSE_WRITE_BUFFER \
CTL_CODE( FILE_DEVICE_MOUSE, 0x0FF1, METHOD_NEITHER, FILE_ANY_ACCESS )
#define IOCTL_INTERNAL_I8042_CONTROLLER_WRITE_BUFFER \
CTL_CODE( FILE_DEVICE_KEYBOARD, 0x0FF2, 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_MOUSE_START_INFORMATION \
CTL_CODE( FILE_DEVICE_MOUSE, 0x0FF3, METHOD_NEITHER, FILE_ANY_ACCESS )
/* I8042 power capability flags */
#define I8042_POWER_SYS_BUTTON 0x00000001L
#define I8042_SLEEP_SYS_BUTTON 0x00000002L
#define I8042_WAKE_SYS_BUTTON 0x00000004L
#define I8042_SYS_BUTTONS \
(I8042_POWER_SYS_BUTTON | I8042_SLEEP_SYS_BUTTON | I8042_WAKE_SYS_BUTTON)
/* Transmit states */
typedef enum _TRANSMIT_STATE {
Idle = 0,
SendingBytes = 1
} TRANSMIT_STATE;
/* Output packet */
typedef struct _OUTPUT_PACKET {
PUCHAR Bytes;
ULONG CurrentByte;
ULONG ByteCount;
TRANSMIT_STATE State;
} OUTPUT_PACKET;
typedef OUTPUT_PACKET *POUTPUT_PACKET;
/* Mouse states */
typedef enum _MOUSE_STATE {
MouseIdle = 0,
XMovement = 1,
YMovement = 2,
ZMovement = 3,
MouseExpectingACK = 4,
MouseResetting = 5
} MOUSE_STATE;
typedef MOUSE_STATE *PMOUSE_STATE;
/* Mouse reset substates */
typedef enum _MOUSE_RESET_SUBSTATE {
ExpectingReset = 0,
ExpectingResetId = 1,
ExpectingGetDeviceIdACK = 2,
ExpectingGetDeviceIdValue = 3,
ExpectingSetResolutionDefaultACK = 4,
ExpectingSetResolutionDefaultValueACK = 5,
ExpectingSetResolutionACK = 6,
ExpectingSetResolutionValueACK = 7,
ExpectingSetScaling1to1ACK = 8,
ExpectingSetScaling1to1ACK2 = 9,
ExpectingSetScaling1to1ACK3 = 10,
ExpectingReadMouseStatusACK = 11,
ExpectingReadMouseStatusByte1 = 12,
ExpectingReadMouseStatusByte2 = 13,
ExpectingReadMouseStatusByte3 = 14,
StartPnPIdDetection = 15,
ExpectingLoopSetSamplingRateACK = 16,
ExpectingLoopSetSamplingRateValueACK = 17,
ExpectingPnpIdByte1 = 18,
ExpectingPnpIdByte2 = 19,
ExpectingPnpIdByte3 = 20,
ExpectingPnpIdByte4 = 21,
ExpectingPnpIdByte5 = 22,
ExpectingPnpIdByte6 = 23,
ExpectingPnpIdByte7 = 24,
EnableWheel = 25,
Enable5Buttons = 26,
ExpectingGetDeviceId2ACK = 27,
ExpectingGetDeviceId2Value = 28,
ExpectingSetSamplingRateACK = 29,
ExpectingSetSamplingRateValueACK = 30,
ExpectingEnableACK = 31,
ExpectingFinalResolutionACK = 32,
ExpectingFinalResolutionValueACK = 33,
ExpectingGetDeviceIdDetectACK = 34,
ExpectingGetDeviceIdDetectValue = 35,
CustomHookStateMinimum = 100,
CustomHookStateMaximum = 999
} MOUSE_RESET_SUBSTATE;
typedef MOUSE_RESET_SUBSTATE *PMOUSE_RESET_SUBSTATE;
/* Keyboard scan states */
typedef enum _KEYBOARD_SCAN_STATE {
Normal = 0,
GotE0 = 1,
GotE1 = 2
} KEYBOARD_SCAN_STATE;
typedef KEYBOARD_SCAN_STATE *PKEYBOARD_SCAN_STATE;
/* I8042 callbacks */
typedef NTSTATUS (NTAPI *PI8042_SYNCH_READ_PORT)( PVOID, PUCHAR, BOOLEAN );
typedef NTSTATUS (NTAPI *PI8042_SYNCH_WRITE_PORT)( PVOID, UCHAR, BOOLEAN );
typedef VOID (NTAPI *PI8042_ISR_WRITE_PORT)( PVOID, UCHAR );
typedef VOID (NTAPI *PI8042_QUEUE_PACKET)( PVOID );
typedef BOOLEAN (NTAPI *PI8042_MOUSE_ISR)( PVOID, PMOUSE_INPUT_DATA, POUTPUT_PACKET, UCHAR, PUCHAR, PBOOLEAN, PMOUSE_STATE, PMOUSE_RESET_SUBSTATE );
typedef NTSTATUS (NTAPI *PI8042_KEYBOARD_INITIALIZATION_ROUTINE)( PVOID, PVOID, PI8042_SYNCH_READ_PORT, PI8042_SYNCH_WRITE_PORT, PBOOLEAN );
typedef BOOLEAN (NTAPI *PI8042_KEYBOARD_ISR)( PVOID, PKEYBOARD_INPUT_DATA, POUTPUT_PACKET, UCHAR, PUCHAR, PBOOLEAN, PKEYBOARD_SCAN_STATE );
/* Internal I8042 hook mouse */
typedef struct _INTERNAL_I8042_HOOK_MOUSE {
PVOID Context;
PI8042_MOUSE_ISR IsrRoutine;
PI8042_ISR_WRITE_PORT IsrWritePort;
PI8042_QUEUE_PACKET QueueMousePacket;
PVOID CallContext;
} INTERNAL_I8042_HOOK_MOUSE;
typedef INTERNAL_I8042_HOOK_MOUSE *PINTERNAL_I8042_HOOK_MOUSE;
/* Internal I8042 hook keyboard */
typedef struct _INTERNAL_I8042_HOOK_KEYBOARD {
PVOID Context;
PI8042_KEYBOARD_INITIALIZATION_ROUTINE InitializationRoutine;
PI8042_KEYBOARD_ISR IsrRoutine;
PI8042_ISR_WRITE_PORT IsrWritePort;
PI8042_QUEUE_PACKET QueueKeyboardPacket;
PVOID CallContext;
} INTERNAL_I8042_HOOK_KEYBOARD;
typedef INTERNAL_I8042_HOOK_KEYBOARD *PINTERNAL_I8042_HOOK_KEYBOARD;
/* Internal I8042 start information */
typedef struct _INTERNAL_I8042_START_INFORMATION {
ULONG Size;
PKINTERRUPT InterruptObject;
ULONG Reserved[8];
} INTERNAL_I8042_START_INFORMATION;
typedef INTERNAL_I8042_START_INFORMATION *PINTERNAL_I8042_START_INFORMATION;
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* _NTDD8042_ */