3 #include <ddk/ntddser.h>
4 #include <ntos/halfuncs.h>
5 #include <ddk/ntddblue.h>
6 #include <ddk/ntddkbd.h> /* should be in kbdmou.h */
10 /* FIXME: should be in kbdmou.h */
11 typedef struct _CONNECT_DATA
{
12 PDEVICE_OBJECT ClassDeviceObject
;
14 } CONNECT_DATA
, *PCONNECT_DATA
;
16 /* FIXME: should be in kbdmou.h */
17 #define IOCTL_INTERNAL_KEYBOARD_CONNECT \
18 CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0080, METHOD_NEITHER, FILE_ANY_ACCESS)
21 ObReferenceObjectByName(PUNICODE_STRING ObjectPath
,
23 PACCESS_STATE PassedAccessState
,
24 ACCESS_MASK DesiredAccess
,
25 POBJECT_TYPE ObjectType
,
26 KPROCESSOR_MODE AccessMode
,
30 /* FIXME: should be in kbdmou.h */
31 typedef VOID (*PSERVICE_CALLBACK_ROUTINE
)(PDEVICE_OBJECT
, PKEYBOARD_INPUT_DATA
, PKEYBOARD_INPUT_DATA
, PULONG
);
33 typedef struct _CLASS_INFORMATION
35 PDEVICE_OBJECT DeviceObject
;
37 } CLASS_INFORMATION
, *PCLASS_INFORMATION
;
39 #define KEYBOARD_BUFFER_SIZE 100
41 #elif defined(_MSC_VER)
48 #define DPRINT1 DbgPrint("(%s:%d) ", __FILE__, __LINE__), DbgPrint
49 #define CHECKPOINT1 DbgPrint("(%s:%d)\n", __FILE__, __LINE__)
50 #define DPRINT DPRINT1
51 #define CHECKPOINT CHECKPOINT1
53 #error Unknown compiler!
63 typedef struct _COMMON_DEVICE_EXTENSION
65 GREEN_DEVICE_TYPE Type
;
66 } COMMON_DEVICE_EXTENSION
, *PCOMMON_DEVICE_EXTENSION
;
68 typedef struct _KEYBOARD_DEVICE_EXTENSION
70 COMMON_DEVICE_EXTENSION Common
;
73 CLASS_INFORMATION ClassInformation
;
74 HANDLE WorkerThreadHandle
;
78 ULONG InputDataCount
[2];
79 KEYBOARD_INPUT_DATA KeyboardInputData
[2][KEYBOARD_BUFFER_SIZE
];
80 } KEYBOARD_DEVICE_EXTENSION
, *PKEYBOARD_DEVICE_EXTENSION
;
82 typedef struct _SCREEN_DEVICE_EXTENSION
84 COMMON_DEVICE_EXTENSION Common
;
87 PUCHAR VideoMemory
; /* Pointer to video memory */
88 USHORT CharAttribute
; /* Current color attribute */
90 UCHAR ScanLines
; /* Height of a text line */
91 UCHAR Rows
; /* Number of rows */
92 UCHAR Columns
; /* Number of columns */
95 ULONG LogicalOffset
; /* Position of the cursor */
97 UCHAR SendBuffer
[1024];
98 ULONG SendBufferPosition
;
99 } SCREEN_DEVICE_EXTENSION
, *PSCREEN_DEVICE_EXTENSION
;
101 typedef struct _GREEN_DEVICE_EXTENSION
103 COMMON_DEVICE_EXTENSION Common
;
104 PDEVICE_OBJECT Serial
;
106 PDEVICE_OBJECT LowerDevice
;
108 SERIAL_LINE_CONTROL LineControl
;
109 SERIAL_TIMEOUTS Timeouts
;
111 PDEVICE_OBJECT Keyboard
;
112 PDEVICE_OBJECT Screen
;
113 } GREEN_DEVICE_EXTENSION
, *PGREEN_DEVICE_EXTENSION
;
115 /************************************ createclose.c */
119 IN PDEVICE_OBJECT DeviceObject
,
124 IN PDEVICE_OBJECT DeviceObject
,
127 /************************************ dispatch.c */
131 IN PDEVICE_OBJECT DeviceObject
,
134 /************************************ keyboard.c */
138 IN PDRIVER_OBJECT DriverObject
,
139 OUT PDEVICE_OBJECT
* KeyboardFdo
);
142 KeyboardInternalDeviceControl(
143 IN PDEVICE_OBJECT DeviceObject
,
146 /************************************ misc.c */
149 GreenDeviceIoControl(
150 IN PDEVICE_OBJECT DeviceObject
,
152 IN PVOID InputBuffer OPTIONAL
,
153 IN ULONG InputBufferSize
,
154 IN OUT PVOID OutputBuffer OPTIONAL
,
155 IN OUT PULONG OutputBufferSize
);
157 /************************************ pnp.c */
161 IN PDRIVER_OBJECT DriverObject
,
162 IN PDEVICE_OBJECT Pdo
);
164 /************************************ screen.c */
168 IN PDRIVER_OBJECT DriverObject
,
169 OUT PDEVICE_OBJECT
* ScreenFdo
);
173 IN PDEVICE_OBJECT DeviceObject
,
178 IN PDEVICE_OBJECT DeviceObject
,