[VGAFONTEDIT]
[reactos.git] / rosapps / drivers / green / green.h
1 #ifndef __GREEN_H__
2 #define __GREEN_H__
3
4 #include <ntddk.h>
5 #include <ntifs.h>
6 #include <ntndk.h>
7 #include <windef.h>
8 #define WINBASEAPI
9 typedef struct _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES;
10 #include <ntddser.h>
11 #include <kbdmou.h>
12 #include <wincon.h>
13 #include <drivers/blue/ntddblue.h>
14
15 #define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE 1
16 #define RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING 2
17
18 #define INFINITE -1
19 #define KEYBOARD_BUFFER_SIZE 100
20
21 typedef enum
22 {
23 GreenPDO,
24 ScreenPDO,
25 KeyboardPDO,
26 GreenFDO,
27 ScreenFDO,
28 KeyboardFDO,
29 PassThroughFDO,
30 } GREEN_DEVICE_TYPE;
31
32 typedef struct _COMMON_DEVICE_EXTENSION
33 {
34 GREEN_DEVICE_TYPE Type;
35 } COMMON_DEVICE_EXTENSION, *PCOMMON_DEVICE_EXTENSION;
36
37 /* For PassThroughFDO devices */
38 typedef struct _COMMON_FDO_DEVICE_EXTENSION
39 {
40 GREEN_DEVICE_TYPE Type;
41 PDEVICE_OBJECT LowerDevice;
42 } COMMON_FDO_DEVICE_EXTENSION, *PCOMMON_FDO_DEVICE_EXTENSION;
43
44 /* For KeyboardFDO devices */
45 typedef struct _KEYBOARD_DEVICE_EXTENSION
46 {
47 COMMON_FDO_DEVICE_EXTENSION Common;
48 PDEVICE_OBJECT Green;
49
50 CONNECT_DATA ClassInformation;
51 HANDLE WorkerThreadHandle;
52 KDPC KeyboardDpc;
53
54 ULONG ActiveQueue;
55 ULONG InputDataCount[2];
56 KEYBOARD_INPUT_DATA KeyboardInputData[2][KEYBOARD_BUFFER_SIZE];
57 } KEYBOARD_DEVICE_EXTENSION, *PKEYBOARD_DEVICE_EXTENSION;
58
59 /* For ScreenFDO devices */
60 typedef struct _SCREEN_DEVICE_EXTENSION
61 {
62 COMMON_FDO_DEVICE_EXTENSION Common;
63 PDEVICE_OBJECT Green;
64
65 PUCHAR VideoMemory; /* Pointer to video memory */
66 USHORT CharAttribute; /* Current color attribute */
67 ULONG Mode;
68 UCHAR ScanLines; /* Height of a text line */
69 UCHAR Rows; /* Number of rows */
70 UCHAR Columns; /* Number of columns */
71 UCHAR TabWidth;
72
73 ULONG LogicalOffset; /* Position of the cursor */
74
75 UCHAR SendBuffer[1024];
76 ULONG SendBufferPosition;
77 PDEVICE_OBJECT PreviousBlue;
78 } SCREEN_DEVICE_EXTENSION, *PSCREEN_DEVICE_EXTENSION;
79
80 /* For GreenFDO devices */
81 typedef struct _GREEN_DEVICE_EXTENSION
82 {
83 COMMON_FDO_DEVICE_EXTENSION Common;
84 PDEVICE_OBJECT Serial;
85
86 SERIAL_LINE_CONTROL LineControl;
87 SERIAL_TIMEOUTS Timeouts;
88
89 PDEVICE_OBJECT KeyboardPdo;
90 PDEVICE_OBJECT ScreenPdo;
91 PDEVICE_OBJECT KeyboardFdo;
92 PDEVICE_OBJECT ScreenFdo;
93 } GREEN_DEVICE_EXTENSION, *PGREEN_DEVICE_EXTENSION;
94
95 typedef struct _GREEN_DRIVER_EXTENSION
96 {
97 UNICODE_STRING RegistryPath;
98
99 UNICODE_STRING AttachedDeviceName;
100 ULONG DeviceReported;
101 ULONG SampleRate;
102
103 PDEVICE_OBJECT GreenMainDO;
104 PDEVICE_OBJECT LowerDevice;
105 } GREEN_DRIVER_EXTENSION, *PGREEN_DRIVER_EXTENSION;
106
107 /************************************ createclose.c */
108
109 NTSTATUS
110 GreenCreate(
111 IN PDEVICE_OBJECT DeviceObject,
112 IN PIRP Irp);
113
114 NTSTATUS
115 GreenClose(
116 IN PDEVICE_OBJECT DeviceObject,
117 IN PIRP Irp);
118
119 /************************************ dispatch.c */
120
121 NTSTATUS NTAPI
122 GreenDispatch(
123 IN PDEVICE_OBJECT DeviceObject,
124 IN PIRP Irp);
125
126 /************************************ keyboard.c */
127
128 NTSTATUS
129 KeyboardAddDevice(
130 IN PDRIVER_OBJECT DriverObject,
131 IN PDEVICE_OBJECT Pdo);
132
133 NTSTATUS
134 KeyboardInternalDeviceControl(
135 IN PDEVICE_OBJECT DeviceObject,
136 IN PIRP Irp);
137
138 /************************************ misc.c */
139
140 NTSTATUS
141 GreenDeviceIoControl(
142 IN PDEVICE_OBJECT DeviceObject,
143 IN ULONG CtlCode,
144 IN PVOID InputBuffer OPTIONAL,
145 IN ULONG InputBufferSize,
146 IN OUT PVOID OutputBuffer OPTIONAL,
147 IN OUT PULONG OutputBufferSize);
148
149 NTSTATUS
150 ReadRegistryEntries(
151 IN PUNICODE_STRING RegistryPath,
152 IN PGREEN_DRIVER_EXTENSION DriverExtension);
153
154 /************************************ pnp.c */
155
156 NTSTATUS NTAPI
157 GreenAddDevice(
158 IN PDRIVER_OBJECT DriverObject,
159 IN PDEVICE_OBJECT Pdo);
160
161 NTSTATUS
162 GreenPnp(
163 IN PDEVICE_OBJECT DeviceObject,
164 IN PIRP Irp);
165
166 /************************************ power.c */
167
168 NTSTATUS
169 GreenPower(
170 IN PDEVICE_OBJECT DeviceObject,
171 IN PIRP Irp);
172
173 /************************************ screen.c */
174
175 NTSTATUS
176 ScreenAddDevice(
177 IN PDRIVER_OBJECT DriverObject,
178 IN PDEVICE_OBJECT Pdo);
179
180 NTSTATUS
181 ScreenWrite(
182 IN PDEVICE_OBJECT DeviceObject,
183 IN PIRP Irp);
184
185 NTSTATUS
186 ScreenDeviceControl(
187 IN PDEVICE_OBJECT DeviceObject,
188 IN PIRP Irp);
189
190 /************************************ green.c */
191
192 NTSTATUS
193 GreenDuplicateUnicodeString(
194 IN ULONG Flags,
195 IN PCUNICODE_STRING SourceString,
196 OUT PUNICODE_STRING DestinationString);
197
198 #endif