3 #include <ndk/iotypes.h>
6 typedef struct _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES
, *PSECURITY_ATTRIBUTES
;
10 #include <drivers/blue/ntddblue.h>
15 RtlDuplicateUnicodeString(
17 IN PCUNICODE_STRING SourceString
,
18 OUT PUNICODE_STRING DestinationString
20 #define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE 1
23 #define KEYBOARD_BUFFER_SIZE 100
36 typedef struct _COMMON_DEVICE_EXTENSION
38 GREEN_DEVICE_TYPE Type
;
39 } COMMON_DEVICE_EXTENSION
, *PCOMMON_DEVICE_EXTENSION
;
41 /* For PassThroughFDO devices */
42 typedef struct _COMMON_FDO_DEVICE_EXTENSION
44 GREEN_DEVICE_TYPE Type
;
45 PDEVICE_OBJECT LowerDevice
;
46 } COMMON_FDO_DEVICE_EXTENSION
, *PCOMMON_FDO_DEVICE_EXTENSION
;
48 /* For KeyboardFDO devices */
49 typedef struct _KEYBOARD_DEVICE_EXTENSION
51 COMMON_FDO_DEVICE_EXTENSION Common
;
54 CONNECT_DATA ClassInformation
;
55 HANDLE WorkerThreadHandle
;
59 ULONG InputDataCount
[2];
60 KEYBOARD_INPUT_DATA KeyboardInputData
[2][KEYBOARD_BUFFER_SIZE
];
61 } KEYBOARD_DEVICE_EXTENSION
, *PKEYBOARD_DEVICE_EXTENSION
;
63 /* For ScreenFDO devices */
64 typedef struct _SCREEN_DEVICE_EXTENSION
66 COMMON_FDO_DEVICE_EXTENSION Common
;
69 PUCHAR VideoMemory
; /* Pointer to video memory */
70 USHORT CharAttribute
; /* Current color attribute */
72 UCHAR ScanLines
; /* Height of a text line */
73 UCHAR Rows
; /* Number of rows */
74 UCHAR Columns
; /* Number of columns */
77 ULONG LogicalOffset
; /* Position of the cursor */
79 UCHAR SendBuffer
[1024];
80 ULONG SendBufferPosition
;
81 PDEVICE_OBJECT PreviousBlue
;
82 } SCREEN_DEVICE_EXTENSION
, *PSCREEN_DEVICE_EXTENSION
;
84 /* For GreenFDO devices */
85 typedef struct _GREEN_DEVICE_EXTENSION
87 COMMON_FDO_DEVICE_EXTENSION Common
;
88 PDEVICE_OBJECT Serial
;
90 SERIAL_LINE_CONTROL LineControl
;
91 SERIAL_TIMEOUTS Timeouts
;
93 PDEVICE_OBJECT KeyboardPdo
;
94 PDEVICE_OBJECT ScreenPdo
;
95 PDEVICE_OBJECT KeyboardFdo
;
96 PDEVICE_OBJECT ScreenFdo
;
97 } GREEN_DEVICE_EXTENSION
, *PGREEN_DEVICE_EXTENSION
;
99 typedef struct _GREEN_DRIVER_EXTENSION
101 UNICODE_STRING RegistryPath
;
103 UNICODE_STRING AttachedDeviceName
;
104 ULONG DeviceReported
;
107 PDEVICE_OBJECT GreenMainDO
;
108 } GREEN_DRIVER_EXTENSION
, *PGREEN_DRIVER_EXTENSION
;
110 /************************************ createclose.c */
114 IN PDEVICE_OBJECT DeviceObject
,
119 IN PDEVICE_OBJECT DeviceObject
,
122 /************************************ dispatch.c */
126 IN PDEVICE_OBJECT DeviceObject
,
129 /************************************ keyboard.c */
133 IN PDRIVER_OBJECT DriverObject
,
134 IN PDEVICE_OBJECT Pdo
);
137 KeyboardInternalDeviceControl(
138 IN PDEVICE_OBJECT DeviceObject
,
141 /************************************ misc.c */
144 GreenDeviceIoControl(
145 IN PDEVICE_OBJECT DeviceObject
,
147 IN PVOID InputBuffer OPTIONAL
,
148 IN ULONG InputBufferSize
,
149 IN OUT PVOID OutputBuffer OPTIONAL
,
150 IN OUT PULONG OutputBufferSize
);
154 IN PUNICODE_STRING RegistryPath
,
155 IN PGREEN_DRIVER_EXTENSION DriverExtension
);
157 /************************************ pnp.c */
161 IN PDRIVER_OBJECT DriverObject
,
162 IN PDEVICE_OBJECT Pdo
);
166 IN PDEVICE_OBJECT DeviceObject
,
169 /************************************ power.c */
173 IN PDEVICE_OBJECT DeviceObject
,
176 /************************************ screen.c */
180 IN PDRIVER_OBJECT DriverObject
,
181 IN PDEVICE_OBJECT Pdo
);
185 IN PDEVICE_OBJECT DeviceObject
,
190 IN PDEVICE_OBJECT DeviceObject
,