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