Really fix the build, but make bootcd does not work yet.
[reactos.git] / reactos / ntoskrnl / inbv / inbv.c
index 9e7588e..815b546 100755 (executable)
@@ -1,22 +1,24 @@
-/* $Id: inbv.c,v 1.8 2004/08/15 16:39:03 chorns Exp $
+/* $Id$
  *
  * COPYRIGHT:      See COPYING in the top level directory
  * PROJECT:        ReactOS kernel
  * FILE:           ntoskrnl/inbv/inbv.c
  * PURPOSE:        Boot video support
- * PROGRAMMER:     Casper S. Hornstrup (chorns@users.sourceforge.net)
- * UPDATE HISTORY:
- *  12-07-2003 CSH Created
+ *
+ * PROGRAMMERS:    Casper S. Hornstrup (chorns@users.sourceforge.net)
  */
 
 /* INCLUDES ******************************************************************/
 
 #include <ntoskrnl.h>
-#include <ntos/bootvid.h>
-#include <ddk/ntbootvid.h>
+#include "../../drivers/base/bootvid/ntbootvid.h"
 #define NDEBUG
 #include <internal/debug.h>
 
+#if defined (ALLOC_PRAGMA)
+#pragma alloc_text(INIT, InbvEnableBootDriver)
+#endif
+
 
 /* GLOBALS *******************************************************************/
 
@@ -38,9 +40,8 @@ InbvCheckBootVid(VOID)
     {
       NTSTATUS Status;
       OBJECT_ATTRIBUTES ObjectAttributes;
-      UNICODE_STRING BootVidName;
+      UNICODE_STRING BootVidName = RTL_CONSTANT_STRING(L"\\Device\\BootVid");
 
-      RtlRosInitUnicodeStringFromLiteral(&BootVidName, L"\\Device\\BootVid");
       InitializeObjectAttributes(&ObjectAttributes,
                                 &BootVidName,
                                 0,
@@ -60,13 +61,13 @@ InbvCheckBootVid(VOID)
   return(STATUS_SUCCESS);
 }
 
+
 VOID
 STDCALL
 InbvAcquireDisplayOwnership(VOID)
 {
 }
 
-
 BOOLEAN
 STDCALL
 InbvCheckDisplayOwnership(VOID)
@@ -74,12 +75,22 @@ InbvCheckDisplayOwnership(VOID)
   return FALSE;
 }
 
-
 BOOLEAN
 STDCALL
 InbvDisplayString(IN PCHAR String)
 {
-  return FALSE;
+    /* Call Bootvid (we don't support bootvid for now) 
+     * vidDisplayString(String);
+     * so instead, we'll fall-back to HAL
+     */
+     HalDisplayString(String);
+     
+     /* Call Headless (We don't support headless for now) 
+     HeadlessDispatch(DISPLAY_STRING);
+     */
+     
+     /* Return success */
+     return TRUE;
 }
 
 BOOLEAN
@@ -89,6 +100,7 @@ InbvResetDisplayParameters(ULONG SizeX, ULONG SizeY)
   return(InbvResetDisplay());
 }
 
+
 VOID
 STDCALL INIT_FUNCTION
 InbvEnableBootDriver(IN BOOLEAN Enable)
@@ -107,7 +119,7 @@ InbvEnableBootDriver(IN BOOLEAN Enable)
       /* Notify the hal we will acquire the display. */
       HalAcquireDisplayOwnership(InbvResetDisplayParameters);
 
-      Status = NtDeviceIoControlFile(BootVidDevice,
+      Status = ZwDeviceIoControlFile(BootVidDevice,
                                     NULL,
                                     NULL,
                                     NULL,
@@ -126,7 +138,7 @@ InbvEnableBootDriver(IN BOOLEAN Enable)
     }
   else
     {
-      Status = NtDeviceIoControlFile(BootVidDevice,
+      Status = ZwDeviceIoControlFile(BootVidDevice,
                                     NULL,
                                     NULL,
                                     NULL,
@@ -143,12 +155,13 @@ InbvEnableBootDriver(IN BOOLEAN Enable)
       BootVidDriverInstalled = FALSE;
       /* Notify the hal we have released the display. */
       HalReleaseDisplayOwnership();
-
-      NtClose(BootVidDevice);
-      BootVidDevice = NULL;
     }
+
+  ZwClose(BootVidDevice);
+  BootVidDevice = NULL;
 }
 
+
 BOOLEAN
 STDCALL
 InbvEnableDisplayString(IN BOOLEAN Enable)
@@ -217,3 +230,16 @@ InbvSolidColorFill(IN ULONG Left,
   IN ULONG Color)
 {
 }
+
+NTSTATUS
+STDCALL
+NtDisplayString(IN PUNICODE_STRING DisplayString)
+{
+  OEM_STRING OemString;
+
+  RtlUnicodeStringToOemString(&OemString, DisplayString, TRUE);
+  HalDisplayString(OemString.Buffer);
+  RtlFreeOemString(&OemString);
+
+  return STATUS_SUCCESS;
+}