Fix sublanguage IDs in .rc files:
[reactos.git] / reactos / drivers / dd / green / green.h
1 #include <ntddk.h>
2 #include <ntddser.h>
3 #include <kbdmou.h>
4 #include <wincon.h>
5 #include <stdarg.h>
6
7 #if defined(__GNUC__)
8 #include <drivers/blue/ntddblue.h>
9
10 #define INFINITE 0xFFFFFFFF
11
12 NTSTATUS NTAPI
13 ObReferenceObjectByName(PUNICODE_STRING ObjectPath,
14 ULONG Attributes,
15 PACCESS_STATE PassedAccessState,
16 ACCESS_MASK DesiredAccess,
17 POBJECT_TYPE ObjectType,
18 KPROCESSOR_MODE AccessMode,
19 PVOID ParseContext,
20 PVOID* ObjectPtr);
21
22 typedef struct _CLASS_INFORMATION
23 {
24 PDEVICE_OBJECT DeviceObject;
25 PVOID CallBack;
26 } CLASS_INFORMATION, *PCLASS_INFORMATION;
27
28 #define KEYBOARD_BUFFER_SIZE 100
29
30 #elif defined(_MSC_VER)
31 /* Nothing more to do */
32 #else
33 #error Unknown compiler!
34 #endif
35
36 typedef enum
37 {
38 Green,
39 Screen,
40 Keyboard
41 } GREEN_DEVICE_TYPE;
42
43 typedef struct _COMMON_DEVICE_EXTENSION
44 {
45 GREEN_DEVICE_TYPE Type;
46 } COMMON_DEVICE_EXTENSION, *PCOMMON_DEVICE_EXTENSION;
47
48 typedef struct _KEYBOARD_DEVICE_EXTENSION
49 {
50 COMMON_DEVICE_EXTENSION Common;
51 PDEVICE_OBJECT Green;
52
53 CLASS_INFORMATION ClassInformation;
54 HANDLE WorkerThreadHandle;
55 KDPC KeyboardDpc;
56
57 ULONG ActiveQueue;
58 ULONG InputDataCount[2];
59 KEYBOARD_INPUT_DATA KeyboardInputData[2][KEYBOARD_BUFFER_SIZE];
60 } KEYBOARD_DEVICE_EXTENSION, *PKEYBOARD_DEVICE_EXTENSION;
61
62 typedef struct _SCREEN_DEVICE_EXTENSION
63 {
64 COMMON_DEVICE_EXTENSION Common;
65 PDEVICE_OBJECT Green;
66
67 PUCHAR VideoMemory; /* Pointer to video memory */
68 USHORT CharAttribute; /* Current color attribute */
69 ULONG Mode;
70 UCHAR ScanLines; /* Height of a text line */
71 UCHAR Rows; /* Number of rows */
72 UCHAR Columns; /* Number of columns */
73 UCHAR TabWidth;
74
75 ULONG LogicalOffset; /* Position of the cursor */
76
77 UCHAR SendBuffer[1024];
78 ULONG SendBufferPosition;
79 PDEVICE_OBJECT PreviousBlue;
80 } SCREEN_DEVICE_EXTENSION, *PSCREEN_DEVICE_EXTENSION;
81
82 typedef struct _GREEN_DEVICE_EXTENSION
83 {
84 COMMON_DEVICE_EXTENSION Common;
85 PDEVICE_OBJECT Serial;
86
87 PDEVICE_OBJECT LowerDevice;
88 ULONG BaudRate;
89 SERIAL_LINE_CONTROL LineControl;
90 SERIAL_TIMEOUTS Timeouts;
91
92 PDEVICE_OBJECT Keyboard;
93 PDEVICE_OBJECT Screen;
94 } GREEN_DEVICE_EXTENSION, *PGREEN_DEVICE_EXTENSION;
95
96 /************************************ createclose.c */
97
98 NTSTATUS NTAPI
99 GreenCreate(
100 IN PDEVICE_OBJECT DeviceObject,
101 IN PIRP Irp);
102
103 NTSTATUS NTAPI
104 GreenClose(
105 IN PDEVICE_OBJECT DeviceObject,
106 IN PIRP Irp);
107
108 /************************************ dispatch.c */
109
110 NTSTATUS NTAPI
111 GreenDispatch(
112 IN PDEVICE_OBJECT DeviceObject,
113 IN PIRP Irp);
114
115 /************************************ keyboard.c */
116
117 NTSTATUS
118 KeyboardInitialize(
119 IN PDRIVER_OBJECT DriverObject,
120 OUT PDEVICE_OBJECT* KeyboardFdo);
121
122 NTSTATUS
123 KeyboardInternalDeviceControl(
124 IN PDEVICE_OBJECT DeviceObject,
125 IN PIRP Irp);
126
127 /************************************ misc.c */
128
129 NTSTATUS
130 GreenDeviceIoControl(
131 IN PDEVICE_OBJECT DeviceObject,
132 IN ULONG CtlCode,
133 IN PVOID InputBuffer OPTIONAL,
134 IN ULONG InputBufferSize,
135 IN OUT PVOID OutputBuffer OPTIONAL,
136 IN OUT PULONG OutputBufferSize);
137
138 /************************************ pnp.c */
139
140 NTSTATUS NTAPI
141 GreenAddDevice(
142 IN PDRIVER_OBJECT DriverObject,
143 IN PDEVICE_OBJECT Pdo);
144
145 /************************************ screen.c */
146
147 NTSTATUS
148 ScreenInitialize(
149 IN PDRIVER_OBJECT DriverObject,
150 OUT PDEVICE_OBJECT* ScreenFdo);
151
152 NTSTATUS
153 ScreenWrite(
154 IN PDEVICE_OBJECT DeviceObject,
155 IN PIRP Irp);
156
157 NTSTATUS
158 ScreenDeviceControl(
159 IN PDEVICE_OBJECT DeviceObject,
160 IN PIRP Irp);