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