6 typedef struct _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES
, *PSECURITY_ATTRIBUTES
;
10 #include <drivers/blue/ntddblue.h>
12 #define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE 1
13 #define RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING 2
16 #define KEYBOARD_BUFFER_SIZE 100
29 typedef struct _COMMON_DEVICE_EXTENSION
31 GREEN_DEVICE_TYPE Type
;
32 } COMMON_DEVICE_EXTENSION
, *PCOMMON_DEVICE_EXTENSION
;
34 /* For PassThroughFDO devices */
35 typedef struct _COMMON_FDO_DEVICE_EXTENSION
37 GREEN_DEVICE_TYPE Type
;
38 PDEVICE_OBJECT LowerDevice
;
39 } COMMON_FDO_DEVICE_EXTENSION
, *PCOMMON_FDO_DEVICE_EXTENSION
;
41 /* For KeyboardFDO devices */
42 typedef struct _KEYBOARD_DEVICE_EXTENSION
44 COMMON_FDO_DEVICE_EXTENSION Common
;
47 CONNECT_DATA ClassInformation
;
48 HANDLE WorkerThreadHandle
;
52 ULONG InputDataCount
[2];
53 KEYBOARD_INPUT_DATA KeyboardInputData
[2][KEYBOARD_BUFFER_SIZE
];
54 } KEYBOARD_DEVICE_EXTENSION
, *PKEYBOARD_DEVICE_EXTENSION
;
56 /* For ScreenFDO devices */
57 typedef struct _SCREEN_DEVICE_EXTENSION
59 COMMON_FDO_DEVICE_EXTENSION Common
;
62 PUCHAR VideoMemory
; /* Pointer to video memory */
63 USHORT CharAttribute
; /* Current color attribute */
65 UCHAR ScanLines
; /* Height of a text line */
66 UCHAR Rows
; /* Number of rows */
67 UCHAR Columns
; /* Number of columns */
70 ULONG LogicalOffset
; /* Position of the cursor */
72 UCHAR SendBuffer
[1024];
73 ULONG SendBufferPosition
;
74 PDEVICE_OBJECT PreviousBlue
;
75 } SCREEN_DEVICE_EXTENSION
, *PSCREEN_DEVICE_EXTENSION
;
77 /* For GreenFDO devices */
78 typedef struct _GREEN_DEVICE_EXTENSION
80 COMMON_FDO_DEVICE_EXTENSION Common
;
81 PDEVICE_OBJECT Serial
;
83 SERIAL_LINE_CONTROL LineControl
;
84 SERIAL_TIMEOUTS Timeouts
;
86 PDEVICE_OBJECT KeyboardPdo
;
87 PDEVICE_OBJECT ScreenPdo
;
88 PDEVICE_OBJECT KeyboardFdo
;
89 PDEVICE_OBJECT ScreenFdo
;
90 } GREEN_DEVICE_EXTENSION
, *PGREEN_DEVICE_EXTENSION
;
92 typedef struct _GREEN_DRIVER_EXTENSION
94 UNICODE_STRING RegistryPath
;
96 UNICODE_STRING AttachedDeviceName
;
100 PDEVICE_OBJECT GreenMainDO
;
101 PDEVICE_OBJECT LowerDevice
;
102 } GREEN_DRIVER_EXTENSION
, *PGREEN_DRIVER_EXTENSION
;
104 /************************************ createclose.c */
108 IN PDEVICE_OBJECT DeviceObject
,
113 IN PDEVICE_OBJECT DeviceObject
,
116 /************************************ dispatch.c */
120 IN PDEVICE_OBJECT DeviceObject
,
123 /************************************ keyboard.c */
127 IN PDRIVER_OBJECT DriverObject
,
128 IN PDEVICE_OBJECT Pdo
);
131 KeyboardInternalDeviceControl(
132 IN PDEVICE_OBJECT DeviceObject
,
135 /************************************ misc.c */
138 GreenDeviceIoControl(
139 IN PDEVICE_OBJECT DeviceObject
,
141 IN PVOID InputBuffer OPTIONAL
,
142 IN ULONG InputBufferSize
,
143 IN OUT PVOID OutputBuffer OPTIONAL
,
144 IN OUT PULONG OutputBufferSize
);
148 IN PUNICODE_STRING RegistryPath
,
149 IN PGREEN_DRIVER_EXTENSION DriverExtension
);
151 /************************************ pnp.c */
155 IN PDRIVER_OBJECT DriverObject
,
156 IN PDEVICE_OBJECT Pdo
);
160 IN PDEVICE_OBJECT DeviceObject
,
163 /************************************ power.c */
167 IN PDEVICE_OBJECT DeviceObject
,
170 /************************************ screen.c */
174 IN PDRIVER_OBJECT DriverObject
,
175 IN PDEVICE_OBJECT Pdo
);
179 IN PDEVICE_OBJECT DeviceObject
,
184 IN PDEVICE_OBJECT DeviceObject
,
187 /************************************ green.c */
190 GreenDuplicateUnicodeString(
192 IN PCUNICODE_STRING SourceString
,
193 OUT PUNICODE_STRING DestinationString
);