8 #include <drivers/blue/ntddblue.h>
10 #define INFINITE 0xFFFFFFFF
13 ObReferenceObjectByName(PUNICODE_STRING ObjectPath
,
15 PACCESS_STATE PassedAccessState
,
16 ACCESS_MASK DesiredAccess
,
17 POBJECT_TYPE ObjectType
,
18 KPROCESSOR_MODE AccessMode
,
22 typedef struct _CLASS_INFORMATION
24 PDEVICE_OBJECT DeviceObject
;
26 } CLASS_INFORMATION
, *PCLASS_INFORMATION
;
28 #define KEYBOARD_BUFFER_SIZE 100
30 #elif defined(_MSC_VER)
31 /* Nothing more to do */
33 #error Unknown compiler!
43 typedef struct _COMMON_DEVICE_EXTENSION
45 GREEN_DEVICE_TYPE Type
;
46 } COMMON_DEVICE_EXTENSION
, *PCOMMON_DEVICE_EXTENSION
;
48 typedef struct _KEYBOARD_DEVICE_EXTENSION
50 COMMON_DEVICE_EXTENSION Common
;
53 CLASS_INFORMATION ClassInformation
;
54 HANDLE WorkerThreadHandle
;
58 ULONG InputDataCount
[2];
59 KEYBOARD_INPUT_DATA KeyboardInputData
[2][KEYBOARD_BUFFER_SIZE
];
60 } KEYBOARD_DEVICE_EXTENSION
, *PKEYBOARD_DEVICE_EXTENSION
;
62 typedef struct _SCREEN_DEVICE_EXTENSION
64 COMMON_DEVICE_EXTENSION Common
;
67 PUCHAR VideoMemory
; /* Pointer to video memory */
68 USHORT CharAttribute
; /* Current color attribute */
70 UCHAR ScanLines
; /* Height of a text line */
71 UCHAR Rows
; /* Number of rows */
72 UCHAR Columns
; /* Number of columns */
75 ULONG LogicalOffset
; /* Position of the cursor */
77 UCHAR SendBuffer
[1024];
78 ULONG SendBufferPosition
;
79 PDEVICE_OBJECT PreviousBlue
;
80 } SCREEN_DEVICE_EXTENSION
, *PSCREEN_DEVICE_EXTENSION
;
82 typedef struct _GREEN_DEVICE_EXTENSION
84 COMMON_DEVICE_EXTENSION Common
;
85 PDEVICE_OBJECT Serial
;
87 PDEVICE_OBJECT LowerDevice
;
89 SERIAL_LINE_CONTROL LineControl
;
90 SERIAL_TIMEOUTS Timeouts
;
92 PDEVICE_OBJECT Keyboard
;
93 PDEVICE_OBJECT Screen
;
94 } GREEN_DEVICE_EXTENSION
, *PGREEN_DEVICE_EXTENSION
;
96 /************************************ createclose.c */
100 IN PDEVICE_OBJECT DeviceObject
,
105 IN PDEVICE_OBJECT DeviceObject
,
108 /************************************ dispatch.c */
112 IN PDEVICE_OBJECT DeviceObject
,
115 /************************************ keyboard.c */
119 IN PDRIVER_OBJECT DriverObject
,
120 OUT PDEVICE_OBJECT
* KeyboardFdo
);
123 KeyboardInternalDeviceControl(
124 IN PDEVICE_OBJECT DeviceObject
,
127 /************************************ misc.c */
130 GreenDeviceIoControl(
131 IN PDEVICE_OBJECT DeviceObject
,
133 IN PVOID InputBuffer OPTIONAL
,
134 IN ULONG InputBufferSize
,
135 IN OUT PVOID OutputBuffer OPTIONAL
,
136 IN OUT PULONG OutputBufferSize
);
138 /************************************ pnp.c */
142 IN PDRIVER_OBJECT DriverObject
,
143 IN PDEVICE_OBJECT Pdo
);
145 /************************************ screen.c */
149 IN PDRIVER_OBJECT DriverObject
,
150 OUT PDEVICE_OBJECT
* ScreenFdo
);
154 IN PDEVICE_OBJECT DeviceObject
,
159 IN PDEVICE_OBJECT DeviceObject
,