3 #include <ndk/iotypes.h>
4 #include <ndk/obfuncs.h>
7 typedef struct _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES
, *PSECURITY_ATTRIBUTES
;
11 #include <drivers/blue/ntddblue.h>
13 #define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE 1
14 #define RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING 2
17 #define KEYBOARD_BUFFER_SIZE 100
30 typedef struct _COMMON_DEVICE_EXTENSION
32 GREEN_DEVICE_TYPE Type
;
33 } COMMON_DEVICE_EXTENSION
, *PCOMMON_DEVICE_EXTENSION
;
35 /* For PassThroughFDO devices */
36 typedef struct _COMMON_FDO_DEVICE_EXTENSION
38 GREEN_DEVICE_TYPE Type
;
39 PDEVICE_OBJECT LowerDevice
;
40 } COMMON_FDO_DEVICE_EXTENSION
, *PCOMMON_FDO_DEVICE_EXTENSION
;
42 /* For KeyboardFDO devices */
43 typedef struct _KEYBOARD_DEVICE_EXTENSION
45 COMMON_FDO_DEVICE_EXTENSION Common
;
48 CONNECT_DATA ClassInformation
;
49 HANDLE WorkerThreadHandle
;
53 ULONG InputDataCount
[2];
54 KEYBOARD_INPUT_DATA KeyboardInputData
[2][KEYBOARD_BUFFER_SIZE
];
55 } KEYBOARD_DEVICE_EXTENSION
, *PKEYBOARD_DEVICE_EXTENSION
;
57 /* For ScreenFDO devices */
58 typedef struct _SCREEN_DEVICE_EXTENSION
60 COMMON_FDO_DEVICE_EXTENSION Common
;
63 PUCHAR VideoMemory
; /* Pointer to video memory */
64 USHORT CharAttribute
; /* Current color attribute */
66 UCHAR ScanLines
; /* Height of a text line */
67 UCHAR Rows
; /* Number of rows */
68 UCHAR Columns
; /* Number of columns */
71 ULONG LogicalOffset
; /* Position of the cursor */
73 UCHAR SendBuffer
[1024];
74 ULONG SendBufferPosition
;
75 PDEVICE_OBJECT PreviousBlue
;
76 } SCREEN_DEVICE_EXTENSION
, *PSCREEN_DEVICE_EXTENSION
;
78 /* For GreenFDO devices */
79 typedef struct _GREEN_DEVICE_EXTENSION
81 COMMON_FDO_DEVICE_EXTENSION Common
;
82 PDEVICE_OBJECT Serial
;
84 SERIAL_LINE_CONTROL LineControl
;
85 SERIAL_TIMEOUTS Timeouts
;
87 PDEVICE_OBJECT KeyboardPdo
;
88 PDEVICE_OBJECT ScreenPdo
;
89 PDEVICE_OBJECT KeyboardFdo
;
90 PDEVICE_OBJECT ScreenFdo
;
91 } GREEN_DEVICE_EXTENSION
, *PGREEN_DEVICE_EXTENSION
;
93 typedef struct _GREEN_DRIVER_EXTENSION
95 UNICODE_STRING RegistryPath
;
97 UNICODE_STRING AttachedDeviceName
;
101 PDEVICE_OBJECT GreenMainDO
;
102 PDEVICE_OBJECT LowerDevice
;
103 } GREEN_DRIVER_EXTENSION
, *PGREEN_DRIVER_EXTENSION
;
105 /************************************ createclose.c */
109 IN PDEVICE_OBJECT DeviceObject
,
114 IN PDEVICE_OBJECT DeviceObject
,
117 /************************************ dispatch.c */
121 IN PDEVICE_OBJECT DeviceObject
,
124 /************************************ keyboard.c */
128 IN PDRIVER_OBJECT DriverObject
,
129 IN PDEVICE_OBJECT Pdo
);
132 KeyboardInternalDeviceControl(
133 IN PDEVICE_OBJECT DeviceObject
,
136 /************************************ misc.c */
139 GreenDeviceIoControl(
140 IN PDEVICE_OBJECT DeviceObject
,
142 IN PVOID InputBuffer OPTIONAL
,
143 IN ULONG InputBufferSize
,
144 IN OUT PVOID OutputBuffer OPTIONAL
,
145 IN OUT PULONG OutputBufferSize
);
149 IN PUNICODE_STRING RegistryPath
,
150 IN PGREEN_DRIVER_EXTENSION DriverExtension
);
152 /************************************ pnp.c */
156 IN PDRIVER_OBJECT DriverObject
,
157 IN PDEVICE_OBJECT Pdo
);
161 IN PDEVICE_OBJECT DeviceObject
,
164 /************************************ power.c */
168 IN PDEVICE_OBJECT DeviceObject
,
171 /************************************ screen.c */
175 IN PDRIVER_OBJECT DriverObject
,
176 IN PDEVICE_OBJECT Pdo
);
180 IN PDEVICE_OBJECT DeviceObject
,
185 IN PDEVICE_OBJECT DeviceObject
,
188 /************************************ green.c */
191 GreenDuplicateUnicodeString(
193 IN PCUNICODE_STRING SourceString
,
194 OUT PUNICODE_STRING DestinationString
);