Standardize comment headers. Patch by Trevor McCort
[reactos.git] / reactos / ntoskrnl / inbv / inbv.c
1 /* $Id$
2 *
3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS kernel
5 * FILE: ntoskrnl/inbv/inbv.c
6 * PURPOSE: Boot video support
7 *
8 * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
9 */
10
11 /* INCLUDES ******************************************************************/
12
13 #include <ntoskrnl.h>
14 #include <ntos/bootvid.h>
15 #include <ddk/ntbootvid.h>
16 #define NDEBUG
17 #include <internal/debug.h>
18
19
20 /* GLOBALS *******************************************************************/
21
22 /* DATA **********************************************************************/
23
24 static HANDLE BootVidDevice = NULL;
25 static BOOL BootVidDriverInstalled = FALSE;
26 static NTBOOTVID_FUNCTION_TABLE BootVidFunctionTable;
27
28 /* FUNCTIONS *****************************************************************/
29
30 NTSTATUS
31 STATIC
32 InbvCheckBootVid(VOID)
33 {
34 IO_STATUS_BLOCK Iosb;
35
36 if (BootVidDevice == NULL)
37 {
38 NTSTATUS Status;
39 OBJECT_ATTRIBUTES ObjectAttributes;
40 UNICODE_STRING BootVidName;
41
42 RtlRosInitUnicodeStringFromLiteral(&BootVidName, L"\\Device\\BootVid");
43 InitializeObjectAttributes(&ObjectAttributes,
44 &BootVidName,
45 0,
46 NULL,
47 NULL);
48 Status = ZwOpenFile(&BootVidDevice,
49 FILE_ALL_ACCESS,
50 &ObjectAttributes,
51 &Iosb,
52 0,
53 0);
54 if (!NT_SUCCESS(Status))
55 {
56 return(Status);
57 }
58 }
59 return(STATUS_SUCCESS);
60 }
61
62 VOID
63 STDCALL
64 InbvAcquireDisplayOwnership(VOID)
65 {
66 }
67
68
69 BOOLEAN
70 STDCALL
71 InbvCheckDisplayOwnership(VOID)
72 {
73 return FALSE;
74 }
75
76
77 BOOLEAN
78 STDCALL
79 InbvDisplayString(IN PCHAR String)
80 {
81 return FALSE;
82 }
83
84 BOOLEAN
85 STDCALL
86 InbvResetDisplayParameters(ULONG SizeX, ULONG SizeY)
87 {
88 return(InbvResetDisplay());
89 }
90
91 VOID
92 STDCALL INIT_FUNCTION
93 InbvEnableBootDriver(IN BOOLEAN Enable)
94 {
95 NTSTATUS Status;
96 IO_STATUS_BLOCK Iosb;
97
98 Status = InbvCheckBootVid();
99 if (!NT_SUCCESS(Status))
100 {
101 return;
102 }
103
104 if (Enable)
105 {
106 /* Notify the hal we will acquire the display. */
107 HalAcquireDisplayOwnership(InbvResetDisplayParameters);
108
109 Status = NtDeviceIoControlFile(BootVidDevice,
110 NULL,
111 NULL,
112 NULL,
113 &Iosb,
114 IOCTL_BOOTVID_INITIALIZE,
115 NULL,
116 0,
117 &BootVidFunctionTable,
118 sizeof(BootVidFunctionTable));
119 if (!NT_SUCCESS(Status))
120 {
121 KEBUGCHECK(0);
122 }
123 BootVidDriverInstalled = TRUE;
124 CHECKPOINT;
125 }
126 else
127 {
128 Status = NtDeviceIoControlFile(BootVidDevice,
129 NULL,
130 NULL,
131 NULL,
132 &Iosb,
133 IOCTL_BOOTVID_CLEANUP,
134 NULL,
135 0,
136 NULL,
137 0);
138 if (!NT_SUCCESS(Status))
139 {
140 KEBUGCHECK(0);
141 }
142 BootVidDriverInstalled = FALSE;
143 /* Notify the hal we have released the display. */
144 HalReleaseDisplayOwnership();
145
146 NtClose(BootVidDevice);
147 BootVidDevice = NULL;
148 }
149 }
150
151 BOOLEAN
152 STDCALL
153 InbvEnableDisplayString(IN BOOLEAN Enable)
154 {
155 return FALSE;
156 }
157
158
159 VOID
160 STDCALL
161 InbvInstallDisplayStringFilter(IN PVOID Unknown)
162 {
163 }
164
165
166 BOOLEAN
167 STDCALL
168 InbvIsBootDriverInstalled(VOID)
169 {
170 return(BootVidDriverInstalled);
171 }
172
173
174 VOID
175 STDCALL
176 InbvNotifyDisplayOwnershipLost(IN PVOID Callback)
177 {
178 }
179
180
181 BOOLEAN
182 STDCALL
183 InbvResetDisplay(VOID)
184 {
185 if (!BootVidDriverInstalled)
186 {
187 return(FALSE);
188 }
189 return(BootVidFunctionTable.ResetDisplay());
190 }
191
192
193 VOID
194 STDCALL
195 InbvSetScrollRegion(IN ULONG Left,
196 IN ULONG Top,
197 IN ULONG Width,
198 IN ULONG Height)
199 {
200 }
201
202
203 VOID
204 STDCALL
205 InbvSetTextColor(IN ULONG Color)
206 {
207 }
208
209
210 VOID
211 STDCALL
212 InbvSolidColorFill(IN ULONG Left,
213 IN ULONG Top,
214 IN ULONG Width,
215 IN ULONG Height,
216 IN ULONG Color)
217 {
218 }
219
220 NTSTATUS
221 STDCALL
222 NtDisplayString(IN PUNICODE_STRING DisplayString)
223 {
224 ANSI_STRING AnsiString;
225
226 RtlUnicodeStringToAnsiString (&AnsiString, DisplayString, TRUE);
227
228 HalDisplayString (AnsiString.Buffer);
229
230 RtlFreeAnsiString (&AnsiString);
231
232 return(STATUS_SUCCESS);
233 }