9 typedef struct _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES
, *PSECURITY_ATTRIBUTES
;
13 #include <drivers/blue/ntddblue.h>
15 #define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE 1
16 #define RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING 2
19 #define KEYBOARD_BUFFER_SIZE 100
32 typedef struct _COMMON_DEVICE_EXTENSION
34 GREEN_DEVICE_TYPE Type
;
35 } COMMON_DEVICE_EXTENSION
, *PCOMMON_DEVICE_EXTENSION
;
37 /* For PassThroughFDO devices */
38 typedef struct _COMMON_FDO_DEVICE_EXTENSION
40 GREEN_DEVICE_TYPE Type
;
41 PDEVICE_OBJECT LowerDevice
;
42 } COMMON_FDO_DEVICE_EXTENSION
, *PCOMMON_FDO_DEVICE_EXTENSION
;
44 /* For KeyboardFDO devices */
45 typedef struct _KEYBOARD_DEVICE_EXTENSION
47 COMMON_FDO_DEVICE_EXTENSION Common
;
50 CONNECT_DATA ClassInformation
;
51 HANDLE WorkerThreadHandle
;
55 ULONG InputDataCount
[2];
56 KEYBOARD_INPUT_DATA KeyboardInputData
[2][KEYBOARD_BUFFER_SIZE
];
57 } KEYBOARD_DEVICE_EXTENSION
, *PKEYBOARD_DEVICE_EXTENSION
;
59 /* For ScreenFDO devices */
60 typedef struct _SCREEN_DEVICE_EXTENSION
62 COMMON_FDO_DEVICE_EXTENSION Common
;
65 PUCHAR VideoMemory
; /* Pointer to video memory */
66 USHORT CharAttribute
; /* Current color attribute */
68 UCHAR ScanLines
; /* Height of a text line */
69 UCHAR Rows
; /* Number of rows */
70 UCHAR Columns
; /* Number of columns */
73 ULONG LogicalOffset
; /* Position of the cursor */
75 UCHAR SendBuffer
[1024];
76 ULONG SendBufferPosition
;
77 PDEVICE_OBJECT PreviousBlue
;
78 } SCREEN_DEVICE_EXTENSION
, *PSCREEN_DEVICE_EXTENSION
;
80 /* For GreenFDO devices */
81 typedef struct _GREEN_DEVICE_EXTENSION
83 COMMON_FDO_DEVICE_EXTENSION Common
;
84 PDEVICE_OBJECT Serial
;
86 SERIAL_LINE_CONTROL LineControl
;
87 SERIAL_TIMEOUTS Timeouts
;
89 PDEVICE_OBJECT KeyboardPdo
;
90 PDEVICE_OBJECT ScreenPdo
;
91 PDEVICE_OBJECT KeyboardFdo
;
92 PDEVICE_OBJECT ScreenFdo
;
93 } GREEN_DEVICE_EXTENSION
, *PGREEN_DEVICE_EXTENSION
;
95 typedef struct _GREEN_DRIVER_EXTENSION
97 UNICODE_STRING RegistryPath
;
99 UNICODE_STRING AttachedDeviceName
;
100 ULONG DeviceReported
;
103 PDEVICE_OBJECT GreenMainDO
;
104 PDEVICE_OBJECT LowerDevice
;
105 } GREEN_DRIVER_EXTENSION
, *PGREEN_DRIVER_EXTENSION
;
107 /************************************ createclose.c */
111 IN PDEVICE_OBJECT DeviceObject
,
116 IN PDEVICE_OBJECT DeviceObject
,
119 /************************************ dispatch.c */
123 IN PDEVICE_OBJECT DeviceObject
,
126 /************************************ keyboard.c */
130 IN PDRIVER_OBJECT DriverObject
,
131 IN PDEVICE_OBJECT Pdo
);
134 KeyboardInternalDeviceControl(
135 IN PDEVICE_OBJECT DeviceObject
,
138 /************************************ misc.c */
141 GreenDeviceIoControl(
142 IN PDEVICE_OBJECT DeviceObject
,
144 IN PVOID InputBuffer OPTIONAL
,
145 IN ULONG InputBufferSize
,
146 IN OUT PVOID OutputBuffer OPTIONAL
,
147 IN OUT PULONG OutputBufferSize
);
151 IN PUNICODE_STRING RegistryPath
,
152 IN PGREEN_DRIVER_EXTENSION DriverExtension
);
154 /************************************ pnp.c */
158 IN PDRIVER_OBJECT DriverObject
,
159 IN PDEVICE_OBJECT Pdo
);
163 IN PDEVICE_OBJECT DeviceObject
,
166 /************************************ power.c */
170 IN PDEVICE_OBJECT DeviceObject
,
173 /************************************ screen.c */
177 IN PDRIVER_OBJECT DriverObject
,
178 IN PDEVICE_OBJECT Pdo
);
182 IN PDEVICE_OBJECT DeviceObject
,
187 IN PDEVICE_OBJECT DeviceObject
,
190 /************************************ green.c */
193 GreenDuplicateUnicodeString(
195 IN PCUNICODE_STRING SourceString
,
196 OUT PUNICODE_STRING DestinationString
);