update for HEAD-2002110401 HEAD-2002110401
authorshort <>
Mon, 4 Nov 2002 22:01:07 +0000 (22:01 +0000)
committershort <>
Mon, 4 Nov 2002 22:01:07 +0000 (22:01 +0000)
38 files changed:
ChangeLog
apps/tests/lpc/lpcclt.c
drivers/input/psaux/mouse.c
drivers/input/psaux/psaux.c
drivers/input/psaux/psaux.h
include/ascii.h
include/csrss/csrss.h
include/lsass/lsass.h
include/napi/dbg.h
include/napi/lpc.h
include/reactos/version.h
include/structs.h
include/unicode.h
lib/advapi32/reg/reg.c
lib/kernel32/misc/console.c
lib/ntdll/csr/lpc.c
lib/ntdll/dbg/debug.c
lib/secur32/lsa.c
loaders/boot/boot.asm
loaders/boot/boot.mak
loaders/boot/bootbk.asm
ntoskrnl/dbg/user.c
ntoskrnl/include/internal/port.h
ntoskrnl/lpc/connect.c
ntoskrnl/lpc/reply.c
ntoskrnl/ps/process.c
subsys/csrss/api/conio.c
subsys/csrss/api/process.c
subsys/csrss/api/user.c
subsys/system/usetup/console.c
subsys/system/usetup/drivesup.c
subsys/system/usetup/drivesup.h
subsys/system/usetup/partlist.c
subsys/system/usetup/partlist.h
subsys/system/usetup/usetup.c
subsys/win32k/eng/mouse.c
subsys/win32k/ntuser/msgqueue.c
subsys/win32k/ntuser/winpos.c

index 87c9dfa..b6b7015 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+2002-11-03  Casper S. Hornstrup  <chorns@users.sourceforge.net>\r
+\r
+       * apps/tests/lpc/lpcclt.c: Change LPC_MESSAGE_HEADER to LPC_MESSAGE.\r
+       * include/csrss/csrss.h: Ditto.\r
+       * include/lsass/lsass.h: Ditto.\r
+       * include/napi/dbg.h: Ditto.\r
+       * include/napi/lpc.h: Ditto.\r
+       * lib/kernel32/misc/console.c: Ditto.\r
+       * lib/ntdll/csr/lpc.c: Ditto.\r
+       * lib/ntdll/dbg/debug.c: Ditto.\r
+       * lib/secur32/lsa.c: Ditto.\r
+       * ntoskrnl/dbg/user.c: Ditto.\r
+       * ntoskrnl/include/internal/port.h: Ditto.\r
+       * ntoskrnl/lpc/connect.c: Ditto.\r
+       * ntoskrnl/lpc/reply.c: Ditto.\r
+       * ntoskrnl/ps/process.c: Ditto.\r
+       * subsys/csrss/api/conio.c: Ditto.\r
+       * subsys/csrss/api/process.c: Ditto.\r
+       * subsys/csrss/api/user.c: Ditto.\r
+\r
 2002-10-26  Casper S. Hornstrup  <chorns@users.sourceforge.net>\r
 \r
        * lib/msvcrt/except/seh.s: Fix end-of-line formatting.\r
index b7e01f6..e5905f4 100644 (file)
@@ -63,7 +63,7 @@ int main(int argc, char* argv[])
    ZeroMemory(& Request, sizeof Request);
    strcpy(Request.Data, GetCommandLineA());
    Request.Header.DataSize = strlen(Request.Data);
-   Request.Header.MessageSize = sizeof(LPC_MESSAGE_HEADER) + 
+   Request.Header.MessageSize = sizeof(LPC_MESSAGE) + 
      Request.Header.DataSize;
    
    printf("%s: Sending to port 0x%x message \"%s\"...\n", 
index 47c06ba..6a6fec0 100644 (file)
@@ -19,101 +19,112 @@ int mouse_replies_expected = 0;
 BOOLEAN STDCALL
 ps2_mouse_handler(PKINTERRUPT Interrupt, PVOID ServiceContext)
 {
-  //  char tmpstr[100];
   PDEVICE_OBJECT DeviceObject = (PDEVICE_OBJECT)ServiceContext;
   PDEVICE_EXTENSION DeviceExtension = DeviceObject->DeviceExtension;
-
   int state_dx, state_dy, state_buttons;
   unsigned scancode;
   unsigned status = controller_read_status();
   scancode = controller_read_input();
 
-  // Don't handle the mouse event if we aren't connected to the mouse class driver
-  if(DeviceExtension->ClassInformation.CallBack == NULL) return FALSE;
+  /*
+   * Don't handle the mouse event if we aren't connected to the mouse class 
+   * driver
+   */
+  if (DeviceExtension->ClassInformation.CallBack == NULL) 
+    {
+      return FALSE;
+    }
 
-  if((status & CONTROLLER_STATUS_MOUSE_OUTPUT_BUFFER_FULL) != 0)
-  {
-    // mouse_handle_event(scancode); proceed to handle it
-  }
+  if ((status & CONTROLLER_STATUS_MOUSE_OUTPUT_BUFFER_FULL) != 0)
+    {
+      // mouse_handle_event(scancode); proceed to handle it
+    }
   else
-  {
-    return FALSE; // keyboard_handle_event(scancode);
-  }
+    {
+      return FALSE; // keyboard_handle_event(scancode);
+    }
 
   if (mouse_replies_expected > 0) 
-  {
-    if (scancode == MOUSE_ACK) 
     {
-      mouse_replies_expected--;
-      return;
+      if (scancode == MOUSE_ACK) 
+       {
+         mouse_replies_expected--;
+         return;
+       }
+      
+      mouse_replies_expected = 0;
     }
-
-    mouse_replies_expected = 0;
-  }
   
   /* Add this scancode to the mouse event queue. */
-
   mouse_buffer[mouse_buffer_position] = scancode;
   mouse_buffer_position++;
-
-  // If the buffer is full, parse this event
+  
+  /* If the buffer is full, parse this event */
   if (mouse_buffer_position == 3)
-  {
-    mouse_buffer_position = 0;
-    //    system_call_debug_print_simple ("We got a mouse event");
-
-    state_buttons = (mouse_buffer[0] & 1) * GPM_B_LEFT +
-      (mouse_buffer[0] & 2) * GPM_B_RIGHT +
-      (mouse_buffer[0] & 4) * GPM_B_MIDDLE;
-    
-    /* Some PS/2 mice send reports with negative bit set in data[0] and zero for movement.  I think this is a
-       bug in the mouse, but working around it only causes artifacts when the actual report is -256; they'll
-       be treated as zero. This should be rare if the mouse sampling rate is set to a reasonable value; the
-       default of 100 Hz is plenty.  (Stephen Tell) */
-    
-    if (mouse_buffer[1] == 0)
-    {
-      state_dx = 0;
-    }
-    else
-    {
-      state_dx = (mouse_buffer[0] & 0x10) ?
-        mouse_buffer[1] - 256 :
-        mouse_buffer[1];
-    }
-    
-    if (mouse_buffer[2] == 0)
-    {
-      state_dy = 0;
-    }
-    else
     {
-      state_dy = -((mouse_buffer[0] & 0x20) ?
-                    mouse_buffer[2] - 256 :
-                    mouse_buffer[2]);
-    }
-
+      mouse_buffer_position = 0;
+
+      state_buttons = (mouse_buffer[0] & 1) * GPM_B_LEFT +
+       (mouse_buffer[0] & 2) * GPM_B_RIGHT +
+       (mouse_buffer[0] & 4) * GPM_B_MIDDLE;
+      
+      /* 
+       * Some PS/2 mice send reports with negative bit set in data[0] and zero
+       * for movement.  I think this is a bug in the mouse, but working around
+       * it only causes artifacts when the actual report is -256; they'll
+       * be treated as zero. This should be rare if the mouse sampling rate is
+       * set to a reasonable value; the default of 100 Hz is plenty.  
+       * (Stephen Tell) 
+       */
+      if (mouse_buffer[1] == 0)
+       {
+         state_dx = 0;
+       }
+      else
+       {
+         state_dx = (mouse_buffer[0] & 0x10) ? 
+           mouse_buffer[1] - 256 :
+           mouse_buffer[1];
+       }
+      
+      if (mouse_buffer[2] == 0)
+       {
+         state_dy = 0;
+       }
+      else
+       {
+         state_dy = -((mouse_buffer[0] & 0x20) ?
+                      mouse_buffer[2] - 256 :
+                      mouse_buffer[2]);
+       }
+      
       if (((state_dx!=0) || (state_dy!=0) || (state_buttons!=0)))
-      {
-         // FIXME: Implement button state, see /include/ntddmous.h
-
-         DeviceObject = (PDEVICE_OBJECT)ServiceContext;
-         DeviceExtension = (PDEVICE_EXTENSION)DeviceObject->DeviceExtension;
-
-         if (DeviceExtension->InputDataCount == MOUSE_BUFFER_SIZE)
-         {
-            return TRUE;
-         }
-
-         DeviceExtension->MouseInputData[DeviceExtension->InputDataCount].RawButtons = state_buttons;
-         DeviceExtension->MouseInputData[DeviceExtension->InputDataCount].ButtonData = state_buttons;
-         DeviceExtension->MouseInputData[DeviceExtension->InputDataCount].LastX = state_dx;
-         DeviceExtension->MouseInputData[DeviceExtension->InputDataCount].LastY = state_dy;
-         DeviceExtension->InputDataCount++;
-
-         KeInsertQueueDpc(&DeviceExtension->IsrDpc, DeviceObject->CurrentIrp, NULL);
-
-         return TRUE;
+       {
+         ULONG Queue;
+         PMOUSE_INPUT_DATA Input;
+
+         /* FIXME: Implement button state, see /include/ntddmous.h */
+         
+         DeviceObject = (PDEVICE_OBJECT)ServiceContext;
+         DeviceExtension = (PDEVICE_EXTENSION)DeviceObject->DeviceExtension;
+         Queue = DeviceExtension->ActiveQueue % 2;
+         
+         if (DeviceExtension->InputDataCount[Queue] == MOUSE_BUFFER_SIZE)
+           {
+             return TRUE;
+           }
+
+         Input = &DeviceExtension->MouseInputData[Queue]
+           [DeviceExtension->InputDataCount[Queue]];
+         Input->RawButtons = state_buttons;
+         Input->ButtonData = state_buttons;
+         Input->LastX = state_dx;
+         Input->LastY = state_dy;
+         DeviceExtension->InputDataCount[Queue]++;
+         
+         KeInsertQueueDpc(&DeviceExtension->IsrDpc, DeviceObject->CurrentIrp,
+                          NULL);
+         return TRUE;
       }
    }
 }
@@ -200,8 +211,9 @@ BOOLEAN mouse_init (PDEVICE_OBJECT DeviceObject)
 
   has_mouse = TRUE;
 
-  DeviceExtension->InputDataCount = 0;
-  DeviceExtension->MouseInputData = ExAllocatePool(NonPagedPool, sizeof(MOUSE_INPUT_DATA) * MOUSE_BUFFER_SIZE);
+  DeviceExtension->InputDataCount[0] = 0;
+  DeviceExtension->InputDataCount[1] = 0;
+  DeviceExtension->ActiveQueue = 0;
 
   // Enable the PS/2 mouse port
   controller_write_command_word (CONTROLLER_COMMAND_MOUSE_ENABLE);
index e8bd4b0..a3e7cfc 100644 (file)
@@ -96,11 +96,6 @@ PS2MouseDispatch(PDEVICE_OBJECT DeviceObject, PIRP Irp)
 
 VOID PS2MouseInitializeDataQueue(PVOID Context)
 {
-  ;
-/*   PDEVICE_EXTENSION DeviceExtension = (PDEVICE_EXTENSION)DeviceExtension;
-
-   DeviceExtension->InputDataCount = 0;
-   DeviceExtension->MouseInputData = ExAllocatePool(NonPagedPool, sizeof(MOUSE_INPUT_DATA) * MOUSE_BUFFER_SIZE); */
 }
 
 NTSTATUS STDCALL
@@ -143,14 +138,16 @@ PS2MouseInternalDeviceControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
 VOID PS2MouseIsrDpc(PKDPC Dpc, PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Context)
 {
    PDEVICE_EXTENSION DeviceExtension = DeviceObject->DeviceExtension;
+   ULONG Queue;
 
+   Queue = DeviceExtension->ActiveQueue % 2;
+   InterlockedIncrement(&DeviceExtension->ActiveQueue);
    (*(PSERVICE_CALLBACK_ROUTINE)DeviceExtension->ClassInformation.CallBack)(
                        DeviceExtension->ClassInformation.DeviceObject,
-                       DeviceExtension->MouseInputData,
+                       DeviceExtension->MouseInputData[Queue],
                        NULL,
-                       &DeviceExtension->InputDataCount);
-
-   DeviceExtension->InputDataCount = 0;
+                       &DeviceExtension->InputDataCount[Queue]);
+   DeviceExtension->InputDataCount[Queue] = 0;
 }
 
 NTSTATUS STDCALL
@@ -188,7 +185,6 @@ DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
 
    DeviceExtension = DeviceObject->DeviceExtension;
    KeInitializeDpc(&DeviceExtension->IsrDpc, (PKDEFERRED_ROUTINE)PS2MouseIsrDpc, DeviceObject);
-   KeInitializeDpc(&DeviceExtension->IsrDpcRetry, (PKDEFERRED_ROUTINE)PS2MouseIsrDpc, DeviceObject);
 
    mouse_init(DeviceObject);
 
index 0dfb620..22eb2b2 100644 (file)
@@ -1,12 +1,13 @@
 typedef struct _DEVICE_EXTENSION {
 
-   PDEVICE_OBJECT DeviceObject;
-   ULONG InputDataCount;
-   PMOUSE_INPUT_DATA MouseInputData;
-   CLASS_INFORMATION ClassInformation;
+  PDEVICE_OBJECT DeviceObject;
 
-   PKINTERRUPT MouseInterrupt;
+  ULONG ActiveQueue;
+  ULONG InputDataCount[2];
+  MOUSE_INPUT_DATA MouseInputData[2][MOUSE_BUFFER_SIZE];
+  
+  CLASS_INFORMATION ClassInformation;
+  
+  PKINTERRUPT MouseInterrupt;
    KDPC IsrDpc;
-   KDPC IsrDpcRetry;
-
 } DEVICE_EXTENSION, *PDEVICE_EXTENSION;
index b801316..50b0dc8 100644 (file)
@@ -2200,7 +2200,7 @@ VerFindFileA(
 LONG
 STDCALL
 RegConnectRegistryA (
-    LPSTR lpMachineName,
+    LPCSTR lpMachineName,
     HKEY hKey,
     PHKEY phkResult
     );
@@ -2342,7 +2342,7 @@ LONG
 STDCALL
 RegQueryValueExA (
     HKEY hKey,
-    LPSTR lpValueName,
+    LPCSTR lpValueName,
     LPDWORD lpReserved,
     LPDWORD lpType,
     LPBYTE lpData,
index 9b3efe0..4b1115a 100644 (file)
@@ -315,7 +315,7 @@ typedef struct
 #define CSRSS_MAX_WRITE_CONSOLE_REQUEST       \
       (MAX_MESSAGE_DATA - sizeof(ULONG) - sizeof(CSRSS_WRITE_CONSOLE_REQUEST))
 
-#define CSRSS_MAX_SET_TITLE_REQUEST           (MAX_MESSAGE_DATA - sizeof( HANDLE ) - sizeof( DWORD ) - sizeof( ULONG ) - sizeof( LPC_MESSAGE_HEADER ))
+#define CSRSS_MAX_SET_TITLE_REQUEST           (MAX_MESSAGE_DATA - sizeof( HANDLE ) - sizeof( DWORD ) - sizeof( ULONG ) - sizeof( LPC_MESSAGE ))
 
 #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_CHAR   (MAX_MESSAGE_DATA - sizeof( ULONG ) - sizeof( CSRSS_WRITE_CONSOLE_OUTPUT_CHAR_REQUEST ))
 
@@ -367,11 +367,11 @@ typedef struct
 
 
 /* Keep in sync with definition below. */
-#define CSRSS_REQUEST_HEADER_SIZE (sizeof(LPC_MESSAGE_HEADER) + sizeof(ULONG))
+#define CSRSS_REQUEST_HEADER_SIZE (sizeof(LPC_MESSAGE) + sizeof(ULONG))
 
 typedef struct
 {
-  LPC_MESSAGE_HEADER Header;
+  LPC_MESSAGE Header;
   ULONG Type;
   union
   {
@@ -411,7 +411,7 @@ typedef struct
 
 typedef struct
 {
-  LPC_MESSAGE_HEADER Header;
+  LPC_MESSAGE Header;
   NTSTATUS Status;
   union
   {
index a276837..a01d3a1 100644 (file)
@@ -98,7 +98,7 @@ typedef struct _LSASS_REGISTER_LOGON_PROCESS_REPLY
 
 typedef struct _LSASS_REQUEST
 {
-   LPC_MESSAGE_HEADER Header;
+   LPC_MESSAGE Header;
    ULONG Type;
    union
      {
@@ -114,7 +114,7 @@ typedef struct _LSASS_REQUEST
 
 typedef struct _LSASS_REPLY
 {
-   LPC_MESSAGE_HEADER Header;
+   LPC_MESSAGE Header;
    NTSTATUS Status;
    union
      {
index e2a51a6..8745c55 100644 (file)
@@ -13,7 +13,7 @@
 
 typedef struct _LPC_DBG_MESSAGE
 {
-   LPC_MESSAGE_HEADER Header;
+   LPC_MESSAGE Header;
    ULONG Type;
    ULONG Status;
    union
index 2ee48ce..a99c919 100644 (file)
@@ -50,17 +50,17 @@ typedef struct _LPC_MESSAGE_HEADER
    CLIENT_ID Cid;
    ULONG MessageId;
    ULONG SharedSectionSize;
-} LPC_MESSAGE_HEADER, *PLPC_MESSAGE_HEADER;
+} LPC_MESSAGE, *PLPC_MESSAGE;
 
 typedef struct _LPC_TERMINATION_MESSAGE
 {
-   LPC_MESSAGE_HEADER Header;
+   LPC_MESSAGE Header;
    TIME CreationTime;
 } LPC_TERMINATION_MESSAGE, *PLPC_TERMINATION_MESSAGE;
 
 typedef struct _LPC_DEBUG_MESSAGE
 {
-   LPC_MESSAGE_HEADER Header;
+   LPC_MESSAGE Header;
    ULONG EventCode;
    ULONG Status;
    union {
@@ -103,11 +103,9 @@ typedef struct _LPC_DEBUG_MESSAGE
 #endif
 } LPC_DEBUG_MESSAGE, * PLPC_DEBUG_MESSAGE;
 
-typedef LPC_MESSAGE_HEADER LPC_MESSAGE, *PLPC_MESSAGE;
-
 typedef struct _LPC_MAX_MESSAGE
 {
-   LPC_MESSAGE_HEADER Header;
+   LPC_MESSAGE Header;
    BYTE Data[MAX_MESSAGE_DATA];
 } LPC_MAX_MESSAGE, *PLPC_MAX_MESSAGE;
 
index 6c923d0..246d033 100644 (file)
@@ -19,9 +19,9 @@
 
 #define KERNEL_VERSION_MAJOR           0
 #define KERNEL_VERSION_MINOR           0
-#define KERNEL_VERSION_PATCH_LEVEL     20
+#define KERNEL_VERSION_PATCH_LEVEL     21
 /* Edit each time a new release is out: format is YYYYMMDD (UTC) */
-#define KERNEL_RELEASE_DATE            20020805L
+#define KERNEL_RELEASE_DATE            20021031L
 
 
 #endif
index 7f7587c..56e0947 100644 (file)
@@ -44,7 +44,7 @@
 #include <ntos/ps.h>
 #include <ntos/disk.h>
 #include <ntos/gditypes.h>
-
+/*
 typedef struct _VALENT
 {
    LPTSTR ve_valuename;
@@ -52,6 +52,28 @@ typedef struct _VALENT
    DWORD ve_valueptr;
    DWORD ve_type;
 } VALENT, *PVALENT;
+ */
+typedef struct _VALENT_A {
+   LPSTR ve_valuename;
+   DWORD ve_valuelen;
+   DWORD ve_valueptr;
+   DWORD ve_type;
+} VALENTA, *PVALENTA;
+
+typedef struct _VALENT_W {
+   LPWSTR ve_valuename;
+   DWORD  ve_valuelen;
+   DWORD  ve_valueptr;
+   DWORD  ve_type;
+} VALENTW, *PVALENTW;
+
+#ifdef UNICODE
+typedef VALENTW VALENT;
+typedef PVALENTW PVALENT;
+#else
+typedef VALENTA VALENT;
+typedef PVALENTA PVALENT;
+#endif
 
 #ifndef WIN32_LEAN_AND_MEAN
 
index c3b1fb8..2c92941 100644 (file)
@@ -2293,7 +2293,7 @@ LONG
 STDCALL
 RegQueryMultipleValuesW (
     HKEY hKey,
-    PVALENT val_list,
+    PVALENTW val_list,
     DWORD num_vals,
     LPWSTR lpValueBuf,
     LPDWORD ldwTotsize
@@ -2303,7 +2303,7 @@ LONG
 STDCALL
 RegQueryValueExW (
     HKEY hKey,
-    LPWSTR lpValueName,
+    LPCWSTR lpValueName,
     LPDWORD lpReserved,
     LPDWORD lpType,
     LPBYTE lpData,
@@ -2322,7 +2322,7 @@ RegReplaceKeyW (
 LONG
 STDCALL
 RegConnectRegistryW (
-    LPWSTR lpMachineName,
+    LPCWSTR lpMachineName,
     HKEY hKey,
     PHKEY phkResult
     );
index 8296a41..2010eec 100644 (file)
@@ -286,7 +286,7 @@ RegCloseKey(HKEY hKey)
  *     RegConnectRegistryA
  */
 LONG STDCALL
-RegConnectRegistryA(LPSTR lpMachineName,
+RegConnectRegistryA(LPCSTR lpMachineName,
                    HKEY hKey,
                    PHKEY phkResult)
 {
@@ -299,7 +299,7 @@ RegConnectRegistryA(LPSTR lpMachineName,
  *     RegConnectRegistryW
  */
 LONG STDCALL
-RegConnectRegistryW(LPWSTR lpMachineName,
+RegConnectRegistryW(LPCWSTR lpMachineName,
                    HKEY hKey,
                    PHKEY phkResult)
 {
@@ -495,7 +495,8 @@ RegDeleteKeyA(
        OBJECT_ATTRIBUTES ObjectAttributes;
        UNICODE_STRING SubKeyStringW;
        ANSI_STRING SubKeyStringA;
-       HANDLE ParentKey;
+//     HANDLE ParentKey;
+       HKEY ParentKey;
        HANDLE TargetKey;
        NTSTATUS Status;
        LONG ErrorCode;
@@ -563,7 +564,7 @@ RegDeleteKeyW(
 {
        OBJECT_ATTRIBUTES ObjectAttributes;
        UNICODE_STRING SubKeyString;
-       HANDLE ParentKey;
+       HKEY ParentKey;
        HANDLE TargetKey;
        NTSTATUS Status;
        LONG ErrorCode;
@@ -627,7 +628,7 @@ RegDeleteValueA(
        ANSI_STRING ValueNameA;
        NTSTATUS Status;
        LONG ErrorCode;
-       HANDLE KeyHandle;
+       HKEY KeyHandle;
 
        Status = MapDefaultKey(&KeyHandle,
                               hKey);
@@ -675,7 +676,7 @@ RegDeleteValueW(
        UNICODE_STRING ValueName;
        NTSTATUS Status;
        LONG ErrorCode;
-       HANDLE KeyHandle;
+       HKEY KeyHandle;
 
        Status = MapDefaultKey(&KeyHandle,
                               hKey);
@@ -843,7 +844,7 @@ RegEnumKeyExW(
        DWORD dwError = ERROR_SUCCESS;
        ULONG BufferSize;
        ULONG ResultSize;
-  HANDLE KeyHandle;
+    HKEY KeyHandle;
 
   Status = MapDefaultKey(&KeyHandle, hKey);
        if (!NT_SUCCESS(Status))
@@ -856,7 +857,12 @@ RegEnumKeyExW(
        BufferSize = sizeof (KEY_NODE_INFORMATION) + *lpcbName * sizeof(WCHAR);
        if (lpClass)
                BufferSize += *lpcbClass;
-       KeyInfo = RtlAllocateHeap(RtlGetProcessHeap(), 0, BufferSize);
+
+    //
+    // I think this is a memory leak, always allocated again below ???
+    //
+    // KeyInfo = RtlAllocateHeap(RtlGetProcessHeap(), 0, BufferSize);
+    //
 
   /* We don't know the exact size of the data returned, so call
      NtEnumerateKey() with a buffer size determined from parameters
@@ -1031,7 +1037,7 @@ RegEnumValueW(
        DWORD dwError = ERROR_SUCCESS;
        ULONG BufferSize;
        ULONG ResultSize;
-  HANDLE KeyHandle;
+    HKEY KeyHandle;
 
   Status = MapDefaultKey(&KeyHandle, hKey);
   if (!NT_SUCCESS(Status))
@@ -1103,7 +1109,7 @@ RegEnumValueW(
                if (lpData)
                {
                        memcpy(lpData,
-                               (PVOID)((ULONG_PTR)ValueInfo->Name + ValueInfo->DataOffset),
+                               (PVOID)((ULONG_PTR)ValueInfo + ValueInfo->DataOffset),
                                ValueInfo->DataLength);
                        *lpcbData = (DWORD)ValueInfo->DataLength;
                }
@@ -1124,7 +1130,7 @@ RegEnumValueW(
 LONG STDCALL
 RegFlushKey(HKEY hKey)
 {
-  HANDLE KeyHandle;
+  HKEY KeyHandle;
   NTSTATUS Status;
   LONG ErrorCode;
   
@@ -1235,7 +1241,7 @@ RegOpenKeyA(HKEY hKey,
 {
   OBJECT_ATTRIBUTES ObjectAttributes;
   UNICODE_STRING SubKeyString;
-  HANDLE KeyHandle;
+  HKEY KeyHandle;
   LONG ErrorCode;
   NTSTATUS Status;
 
@@ -1292,7 +1298,7 @@ RegOpenKeyW (
        NTSTATUS                errCode;
        UNICODE_STRING          SubKeyString;
        OBJECT_ATTRIBUTES       ObjectAttributes;
-       HANDLE                  KeyHandle;
+       HKEY                    KeyHandle;
        LONG                    ErrorCode;
 
        errCode = MapDefaultKey(&KeyHandle,
@@ -1342,7 +1348,7 @@ RegOpenKeyExA(HKEY hKey,
 {
   OBJECT_ATTRIBUTES ObjectAttributes;
   UNICODE_STRING SubKeyString;
-  HANDLE KeyHandle;
+  HKEY KeyHandle;
   LONG ErrorCode;
   NTSTATUS Status;
 
@@ -1395,7 +1401,7 @@ RegOpenKeyExW(HKEY hKey,
 {
   OBJECT_ATTRIBUTES ObjectAttributes;
   UNICODE_STRING SubKeyString;
-  HANDLE KeyHandle;
+  HKEY KeyHandle;
   LONG ErrorCode;
   NTSTATUS Status;
 
@@ -1515,7 +1521,7 @@ RegQueryInfoKeyW(
   KEY_FULL_INFORMATION FullInfoBuffer;
   PKEY_FULL_INFORMATION FullInfo;
   ULONG FullInfoSize;
-  HANDLE KeyHandle;
+  HKEY KeyHandle;
   NTSTATUS Status;
   LONG ErrorCode;
   ULONG Length;
@@ -1629,7 +1635,7 @@ LONG
 STDCALL
 RegQueryMultipleValuesA(
        HKEY    hKey,
-       PVALENT val_list,
+       PVALENTA val_list,
        DWORD   num_vals,
        LPSTR   lpValueBuf,
        LPDWORD ldwTotsize
@@ -1648,7 +1654,7 @@ LONG
 STDCALL
 RegQueryMultipleValuesW(
        HKEY    hKey,
-       PVALENT val_list,
+       PVALENTW val_list,
        DWORD   num_vals,
        LPWSTR  lpValueBuf,
        LPDWORD ldwTotsize
@@ -1745,7 +1751,7 @@ LONG
 STDCALL
 RegQueryValueExA(
        HKEY    hKey,
-       LPSTR   lpValueName,
+       LPCSTR  lpValueName,
        LPDWORD lpReserved,
        LPDWORD lpType,
        LPBYTE  lpData,
@@ -1849,7 +1855,7 @@ LONG
 STDCALL
 RegQueryValueExW(
        HKEY    hKey,
-       LPWSTR  lpValueName,
+       LPCWSTR lpValueName,
        LPDWORD lpReserved,
        LPDWORD lpType,
        LPBYTE  lpData,
@@ -1862,7 +1868,7 @@ RegQueryValueExW(
        DWORD dwError = ERROR_SUCCESS;
        ULONG BufferSize;
        ULONG ResultSize;
-  HANDLE KeyHandle;
+    HKEY KeyHandle;
 
   DPRINT("hKey 0x%X  lpValueName %S  lpData 0x%X  lpcbData %d\n",
     hKey, lpValueName, lpData, lpcbData ? *lpcbData : 0);
@@ -1954,7 +1960,7 @@ RegQueryValueW(
        NTSTATUS                errCode;
        UNICODE_STRING          SubKeyString;
        OBJECT_ATTRIBUTES       ObjectAttributes;
-       HANDLE                  KeyHandle;
+       HKEY                    KeyHandle;
   HANDLE                       RealKey;
        LONG                      ErrorCode;
   BOOL        CloseRealKey;
@@ -2120,7 +2126,7 @@ RegSaveKeyW(HKEY hKey,
   UNICODE_STRING NtName;
   IO_STATUS_BLOCK IoStatusBlock;
   HANDLE FileHandle;
-  HANDLE KeyHandle;
+  HKEY KeyHandle;
   NTSTATUS Status;
   LONG ErrorCode;
 
@@ -2353,7 +2359,7 @@ RegSetValueExW(
 {
        UNICODE_STRING ValueName;
   PUNICODE_STRING pValueName;
-  HANDLE KeyHandle;
+    HKEY KeyHandle;
        NTSTATUS Status;
   LONG ErrorCode;
 
@@ -2409,7 +2415,7 @@ RegSetValueW(
        NTSTATUS                errCode;
        UNICODE_STRING          SubKeyString;
        OBJECT_ATTRIBUTES       ObjectAttributes;
-       HANDLE                  KeyHandle;
+       HKEY                    KeyHandle;
   HANDLE                       RealKey;
        LONG                      ErrorCode;
   BOOL        CloseRealKey;
index b9a5025..ab75193 100644 (file)
@@ -2052,7 +2052,7 @@ GetConsoleTitleW(
                        & Re.quest,
                        & Re.ply,
                        (sizeof (CSRSS_GET_TITLE_REQUEST) +
-                       sizeof (LPC_MESSAGE_HEADER) +
+                       sizeof (LPC_MESSAGE) +
                        sizeof (ULONG)),
                        sizeof (CSRSS_API_REPLY)
                        );
@@ -2169,7 +2169,7 @@ SetConsoleTitleW(
                               &Reply,
                               sizeof(CSRSS_SET_TITLE_REQUEST) +
                               c +
-                              sizeof( LPC_MESSAGE_HEADER ) +
+                              sizeof( LPC_MESSAGE ) +
                               sizeof( ULONG ),
                               sizeof(CSRSS_API_REPLY));
   
@@ -2222,7 +2222,7 @@ SetConsoleTitleA(
                               &Reply,
                               sizeof(CSRSS_SET_TITLE_REQUEST) +
                               c +
-                              sizeof( LPC_MESSAGE_HEADER ) +
+                              sizeof( LPC_MESSAGE ) +
                               sizeof( ULONG ),
                               sizeof(CSRSS_API_REPLY));
   
index fea9ea3..d4b8d56 100644 (file)
@@ -97,7 +97,7 @@ CsrClientCallServer(PCSRSS_API_REQUEST Request,
       return (STATUS_UNSUCCESSFUL);
     }
   
-   Request->Header.DataSize = Length - sizeof(LPC_MESSAGE_HEADER);
+   Request->Header.DataSize = Length - sizeof(LPC_MESSAGE);
    Request->Header.MessageSize = Length;
    
    Status = NtRequestWaitReplyPort(WindowsApiPort,
index dc852f9..9604ded 100644 (file)
@@ -24,7 +24,7 @@ static HANDLE DbgSsReplyPort = NULL;
 
 typedef struct _LPC_DBGSS_MESSAGE
 {
-       LPC_MESSAGE_HEADER Header;
+       LPC_MESSAGE Header;
        ULONG Unknown1;
        ULONG Unknown2;
        ULONG Unknown3;
index 470f2de..75e6b26 100644 (file)
@@ -74,9 +74,9 @@ LsaCallAuthenticationPackage(HANDLE LsaHandle,
    Reply = (PLSASS_REPLY)RawReply;
    
    Request->Header.DataSize = sizeof(LSASS_REQUEST) + SubmitBufferLength -
-     sizeof(LPC_MESSAGE_HEADER);
+     sizeof(LPC_MESSAGE);
    Request->Header.MessageSize = 
-     Request->Header.DataSize + sizeof(LPC_MESSAGE_HEADER);
+     Request->Header.DataSize + sizeof(LPC_MESSAGE);
    Request->Type = LSASS_REQUEST_CALL_AUTHENTICATION_PACKAGE;
    Request->d.CallAuthenticationPackageRequest.AuthenticationPackage =
      AuthenticationPackage;
@@ -129,9 +129,9 @@ LsaLookupAuthenticationPackage(HANDLE LsaHandle,
    
    Request = (PLSASS_REQUEST)RawRequest;
    Request->Header.DataSize = sizeof(LSASS_REQUEST) + PackageName->Length -
-     sizeof(LPC_MESSAGE_HEADER);
+     sizeof(LPC_MESSAGE);
    Request->Header.MessageSize = Request->Header.DataSize +
-     sizeof(LPC_MESSAGE_HEADER);
+     sizeof(LPC_MESSAGE);
    Request->Type = LSASS_REQUEST_LOOKUP_AUTHENTICATION_PACKAGE;
    
    Status = NtRequestWaitReplyPort(LsaHandle,
@@ -175,7 +175,7 @@ LsaLogonUser(HANDLE LsaHandle,
    UCHAR RawReply[MAX_MESSAGE_DATA];
    NTSTATUS Status;
    
-   RequestLength = sizeof(LSASS_REQUEST) - sizeof(LPC_MESSAGE_HEADER);
+   RequestLength = sizeof(LSASS_REQUEST) - sizeof(LPC_MESSAGE);
    RequestLength = RequestLength + (OriginName->Length * sizeof(WCHAR));
    RequestLength = RequestLength + AuthenticationInformationLength;
    RequestLength = RequestLength + 
@@ -215,8 +215,8 @@ LsaLogonUser(HANDLE LsaHandle,
    Request->d.LogonUserRequest.SourceContext = *SourceContext;
    
    Request->Type = LSASS_REQUEST_LOGON_USER;
-   Request->Header.DataSize = RequestLength - sizeof(LPC_MESSAGE_HEADER);
-   Request->Header.MessageSize = RequestLength + sizeof(LPC_MESSAGE_HEADER);
+   Request->Header.DataSize = RequestLength - sizeof(LPC_MESSAGE);
+   Request->Header.MessageSize = RequestLength + sizeof(LPC_MESSAGE);
    
    Reply = (PLSASS_REPLY)RawReply;
    
@@ -278,7 +278,7 @@ LsaRegisterLogonProcess(PLSA_STRING LsaLogonProcessName,
    
    Request.Type = LSASS_REQUEST_REGISTER_LOGON_PROCESS;
    Request.Header.DataSize = sizeof(LSASS_REQUEST) - 
-     sizeof(LPC_MESSAGE_HEADER);
+     sizeof(LPC_MESSAGE);
    Request.Header.MessageSize = sizeof(LSASS_REQUEST);
    
    Request.d.RegisterLogonProcessRequest.Length = LsaLogonProcessName->Length;
index ca626a1..17fe2c7 100644 (file)
@@ -30,8 +30,8 @@
 ; $Header$
 ;
 ; $Log$
-; Revision 1.1  2002/10/31 14:31:06  lace
-; :pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
+; Revision 1.2  2002/11/04 22:01:07  short
+; update for HEAD-2002110401
 ;
 ; Revision 1.4  2000/06/25 03:59:14  dwelch
 ;
index ae42623..43dc66a 100644 (file)
@@ -4,8 +4,8 @@
 # $Header$
 #
 # $Log$
-# Revision 1.1  2002/10/31 14:31:06  lace
-# :pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
+# Revision 1.2  2002/11/04 22:01:07  short
+# update for HEAD-2002110401
 #
 # Revision 1.4  2000/06/25 03:59:14  dwelch
 #
index b1edd9f..3e8d8f0 100644 (file)
@@ -30,8 +30,8 @@
 ; $Header$
 ;
 ; $Log$
-; Revision 1.1  2002/10/31 14:31:06  lace
-; :pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
+; Revision 1.2  2002/11/04 22:01:07  short
+; update for HEAD-2002110401
 ;
 ; Revision 1.4  2000/06/25 03:59:14  dwelch
 ;
index 3641fff..0c33105 100644 (file)
@@ -49,7 +49,7 @@ DbgkCreateThread(PVOID StartAddress)
 
   Message.Header.MessageSize = sizeof(LPC_DBG_MESSAGE);
   Message.Header.DataSize = sizeof(LPC_DBG_MESSAGE) - 
-    sizeof(LPC_MESSAGE_HEADER);
+    sizeof(LPC_MESSAGE);
   Message.Type = DBG_EVENT_CREATE_THREAD;
   Message.Status = STATUS_SUCCESS;
   Message.Data.CreateThread.Reserved = 0;
@@ -85,7 +85,7 @@ DbgkForwardException(EXCEPTION_RECORD Er, ULONG FirstChance)
 
   Message.Header.MessageSize = sizeof(LPC_DBG_MESSAGE);
   Message.Header.DataSize = sizeof(LPC_DBG_MESSAGE) - 
-    sizeof(LPC_MESSAGE_HEADER);
+    sizeof(LPC_MESSAGE);
   Message.Type = DBG_EVENT_EXCEPTION;
   Message.Status = STATUS_SUCCESS;
   Message.Data.Exception.ExceptionRecord = Er;
index b987c3b..f73af61 100644 (file)
@@ -43,7 +43,7 @@ typedef struct _EPORT_TERMINATION_REQUEST
 
 typedef struct _EPORT_CONNECT_REQUEST_MESSAGE
 {
-  LPC_MESSAGE_HEADER MessageHeader;
+  LPC_MESSAGE MessageHeader;
   PEPROCESS ConnectingProcess;
   struct _SECTION_OBJECT* SendSectionObject;
   LARGE_INTEGER SendSectionOffset;
@@ -54,7 +54,7 @@ typedef struct _EPORT_CONNECT_REQUEST_MESSAGE
 
 typedef struct _EPORT_CONNECT_REPLY_MESSAGE
 {
-  LPC_MESSAGE_HEADER MessageHeader;
+  LPC_MESSAGE MessageHeader;
   PVOID SendServerViewBase;
   ULONG ReceiveClientViewSize;
   PVOID ReceiveClientViewBase;
index 4d02d3d..460e36a 100644 (file)
@@ -90,7 +90,7 @@ EiConnectPort(IN PEPORT* ConnectedPort,
    */
   RequestMessage->MessageHeader.DataSize = 
     sizeof(EPORT_CONNECT_REQUEST_MESSAGE) + RequestConnectDataLength -
-    sizeof(LPC_MESSAGE_HEADER);
+    sizeof(LPC_MESSAGE);
   RequestMessage->MessageHeader.MessageSize = 
     sizeof(EPORT_CONNECT_REQUEST_MESSAGE) + RequestConnectDataLength;
   DPRINT("RequestMessageSize %d\n",
@@ -568,20 +568,20 @@ NtAcceptConnectPort (PHANDLE                      ServerPortHandle,
    */
   if (LpcMessage != NULL)
     {
-      memcpy(&CReply->MessageHeader, LpcMessage, sizeof(LPC_MESSAGE_HEADER));
+      memcpy(&CReply->MessageHeader, LpcMessage, sizeof(LPC_MESSAGE));
       memcpy(&CReply->ConnectData, (PVOID)(LpcMessage + 1), 
             LpcMessage->DataSize);
       CReply->MessageHeader.MessageSize =
        sizeof(EPORT_CONNECT_REPLY_MESSAGE) + LpcMessage->DataSize;
       CReply->MessageHeader.DataSize = CReply->MessageHeader.MessageSize -
-       sizeof(LPC_MESSAGE_HEADER);
+       sizeof(LPC_MESSAGE);
       CReply->ConnectDataLength = LpcMessage->DataSize;
     }
   else
     {
       CReply->MessageHeader.MessageSize = sizeof(EPORT_CONNECT_REPLY_MESSAGE);
       CReply->MessageHeader.DataSize = sizeof(EPORT_CONNECT_REPLY_MESSAGE) -
-       sizeof(LPC_MESSAGE_HEADER);
+       sizeof(LPC_MESSAGE);
       CReply->ConnectDataLength = 0;
     }
   if (AcceptIt != 1)
index 04f850e..9bae7e0 100644 (file)
@@ -233,13 +233,13 @@ NtReplyWaitReceivePortEx(IN  HANDLE               PortHandle,
    
    if (Request->Message.MessageType == LPC_CONNECTION_REQUEST)
      {
-       LPC_MESSAGE_HEADER Header;
+       LPC_MESSAGE Header;
        PEPORT_CONNECT_REQUEST_MESSAGE CRequest;
 
        CRequest = (PEPORT_CONNECT_REQUEST_MESSAGE)&Request->Message;
-       memcpy(&Header, &Request->Message, sizeof(LPC_MESSAGE_HEADER));
+       memcpy(&Header, &Request->Message, sizeof(LPC_MESSAGE));
        Header.DataSize = CRequest->ConnectDataLength;
-       Header.MessageSize = Header.DataSize + sizeof(LPC_MESSAGE_HEADER);
+       Header.MessageSize = Header.DataSize + sizeof(LPC_MESSAGE);
        Status = MmCopyToCaller(LpcMessage, &Header, sizeof(LPC_MESSAGE));
        if (!NT_SUCCESS(Status))
         {
index c0b094c..0e9c285 100644 (file)
@@ -694,7 +694,7 @@ NtCreateProcess(OUT PHANDLE ProcessHandle,
        
        Message.Header.MessageSize = sizeof(LPC_DBG_MESSAGE);
        Message.Header.DataSize = sizeof(LPC_DBG_MESSAGE) -
-         sizeof(LPC_MESSAGE_HEADER);
+         sizeof(LPC_MESSAGE);
        Message.Type = DBG_EVENT_CREATE_PROCESS;
        Message.Data.CreateProcess.FileHandle = FileHandle;
        Message.Data.CreateProcess.Base = ImageBase;
index adeb5bd..74f5647 100644 (file)
@@ -45,7 +45,7 @@ CSR_API(CsrAllocConsole)
 
    Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
    Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) -
-     sizeof(LPC_MESSAGE_HEADER);
+     sizeof(LPC_MESSAGE);
    if( ProcessData->Console )
       {
         Reply->Status = STATUS_INVALID_PARAMETER;
@@ -114,7 +114,7 @@ CSR_API(CsrFreeConsole)
 {
    Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
    Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) -
-     sizeof(LPC_MESSAGE_HEADER);
+     sizeof(LPC_MESSAGE);
 
    Reply->Status = STATUS_NOT_IMPLEMENTED;
    
@@ -135,7 +135,7 @@ CSR_API(CsrReadConsole)
    nNumberOfCharsToRead = Request->Data.ReadConsoleRequest.NrCharactersToRead > CSRSS_MAX_READ_CONSOLE_REQUEST ? CSRSS_MAX_READ_CONSOLE_REQUEST : Request->Data.ReadConsoleRequest.NrCharactersToRead;
    Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
    Reply->Header.DataSize = Reply->Header.MessageSize -
-     sizeof(LPC_MESSAGE_HEADER);
+     sizeof(LPC_MESSAGE);
    Buffer = Reply->Data.ReadConsoleReply.Buffer;
    Reply->Data.ReadConsoleReply.EventHandle = ProcessData->ConsoleEvent;
    LOCK;   
@@ -614,7 +614,7 @@ CSR_API(CsrWriteConsole)
    
    Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
    Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) -
-     sizeof(LPC_MESSAGE_HEADER);
+     sizeof(LPC_MESSAGE);
 
    LOCK;
    if( !NT_SUCCESS( CsrGetObject( ProcessData, Request->Data.WriteConsoleRequest.ConsoleHandle,
@@ -1116,7 +1116,7 @@ CSR_API(CsrGetScreenBufferInfo)
    
    Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
    Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) -
-     sizeof(LPC_MESSAGE_HEADER);
+     sizeof(LPC_MESSAGE);
 
    LOCK;
    if( !NT_SUCCESS( CsrGetObject( ProcessData, Request->Data.ScreenBufferInfoRequest.ConsoleHandle,
@@ -1159,7 +1159,7 @@ CSR_API(CsrSetCursor)
    
    Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
    Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) -
-     sizeof(LPC_MESSAGE_HEADER);
+     sizeof(LPC_MESSAGE);
 
    LOCK;
    if( !NT_SUCCESS( CsrGetObject( ProcessData, Request->Data.SetCursorRequest.ConsoleHandle,
@@ -1194,7 +1194,7 @@ CSR_API(CsrWriteConsoleOutputChar)
    
    Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
    Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) -
-     sizeof(LPC_MESSAGE_HEADER);
+     sizeof(LPC_MESSAGE);
    LOCK;
    if( !NT_SUCCESS( CsrGetObject( ProcessData, Request->Data.WriteConsoleOutputCharRequest.ConsoleHandle, (Object_t **)&Buff ) ) || Buff->Header.Type != CSRSS_SCREEN_BUFFER_MAGIC )
       {
@@ -1237,7 +1237,7 @@ CSR_API(CsrFillOutputChar)
    
    Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
    Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) -
-     sizeof(LPC_MESSAGE_HEADER);
+     sizeof(LPC_MESSAGE);
 
    LOCK;
    if( !NT_SUCCESS( CsrGetObject( ProcessData, Request->Data.FillOutputRequest.ConsoleHandle, (Object_t **)&Buff ) ) || Buff->Header.Type != CSRSS_SCREEN_BUFFER_MAGIC )
@@ -1273,7 +1273,7 @@ CSR_API(CsrReadInputEvent)
    
    Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
    Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) -
-      sizeof(LPC_MESSAGE_HEADER);
+      sizeof(LPC_MESSAGE);
    Reply->Data.ReadInputReply.Event = ProcessData->ConsoleEvent;
    
    LOCK;
@@ -1323,7 +1323,7 @@ CSR_API(CsrWriteConsoleOutputAttrib)
    
    Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
    Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) -
-      sizeof(LPC_MESSAGE_HEADER);
+      sizeof(LPC_MESSAGE);
    LOCK;
    Status = CsrGetObject( ProcessData, Request->Data.WriteConsoleOutputAttribRequest.ConsoleHandle, (Object_t **)&Buff );
    if( !NT_SUCCESS( Status ) || (Status = Buff->Header.Type == CSRSS_SCREEN_BUFFER_MAGIC ? 0 : STATUS_INVALID_HANDLE ))
@@ -1381,7 +1381,7 @@ CSR_API(CsrFillOutputAttrib)
    
    Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
    Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) -
-      sizeof(LPC_MESSAGE_HEADER);
+      sizeof(LPC_MESSAGE);
    LOCK;
    Status = CsrGetObject( ProcessData, Request->Data.FillOutputAttribRequest.ConsoleHandle, (Object_t **)&Buff );
    if( !NT_SUCCESS( Status ) || (Status = Buff->Header.Type == CSRSS_SCREEN_BUFFER_MAGIC ? 0 : STATUS_INVALID_HANDLE ))
@@ -1436,7 +1436,7 @@ CSR_API(CsrGetCursorInfo)
    
    Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
    Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) -
-      sizeof(LPC_MESSAGE_HEADER);
+      sizeof(LPC_MESSAGE);
    LOCK;
    Status = CsrGetObject( ProcessData, Request->Data.GetCursorInfoRequest.ConsoleHandle, (Object_t **)&Buff );
    if( !NT_SUCCESS( Status ) || (Status = Buff->Header.Type == CSRSS_SCREEN_BUFFER_MAGIC ? 0 : STATUS_INVALID_HANDLE ))
@@ -1458,7 +1458,7 @@ CSR_API(CsrSetCursorInfo)
    
    Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
    Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) -
-      sizeof(LPC_MESSAGE_HEADER);
+      sizeof(LPC_MESSAGE);
    LOCK;
    Status = CsrGetObject( ProcessData,
      Request->Data.SetCursorInfoRequest.ConsoleHandle, (Object_t **)&Buff );
@@ -1492,7 +1492,7 @@ CSR_API(CsrSetTextAttrib)
    
    Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
    Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) -
-      sizeof(LPC_MESSAGE_HEADER);
+      sizeof(LPC_MESSAGE);
    LOCK;
    Status = CsrGetObject( ProcessData, Request->Data.SetAttribRequest.ConsoleHandle, (Object_t **)&Buff );
    if( !NT_SUCCESS( Status ) || (Status = Buff->Header.Type == CSRSS_SCREEN_BUFFER_MAGIC ? 0 : STATUS_INVALID_HANDLE ))
@@ -1526,7 +1526,7 @@ CSR_API(CsrSetConsoleMode)
    PCSRSS_SCREEN_BUFFER Buff;
 
    Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
-   Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) - sizeof(LPC_MESSAGE_HEADER);
+   Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) - sizeof(LPC_MESSAGE);
    LOCK;
    Status = CsrGetObject( ProcessData,
      Request->Data.SetConsoleModeRequest.ConsoleHandle,
@@ -1560,7 +1560,7 @@ CSR_API(CsrGetConsoleMode)
    PCSRSS_SCREEN_BUFFER Buff;   /* gee, I really wish I could use an anonymous union here */
 
    Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
-   Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) - sizeof(LPC_MESSAGE_HEADER);
+   Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) - sizeof(LPC_MESSAGE);
    LOCK;
    Status = CsrGetObject( ProcessData,
      Request->Data.GetConsoleModeRequest.ConsoleHandle,
@@ -1588,7 +1588,7 @@ CSR_API(CsrCreateScreenBuffer)
    NTSTATUS Status;
    
    Reply->Header.MessageSize = sizeof( CSRSS_API_REPLY );
-   Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) - sizeof(LPC_MESSAGE_HEADER);
+   Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) - sizeof(LPC_MESSAGE);
    if( !Buff )
       Reply->Status = STATUS_INSUFFICIENT_RESOURCES;
    LOCK;
@@ -1611,7 +1611,7 @@ CSR_API(CsrSetScreenBuffer)
    PCSRSS_SCREEN_BUFFER Buff;
    
    Reply->Header.MessageSize = sizeof( CSRSS_API_REPLY );
-   Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) - sizeof(LPC_MESSAGE_HEADER);
+   Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) - sizeof(LPC_MESSAGE);
    LOCK;
    Status = CsrGetObject( ProcessData, Request->Data.SetActiveScreenBufferRequest.OutputHandle, (Object_t **)&Buff );
    if( !NT_SUCCESS( Status ) )
@@ -1639,7 +1639,7 @@ CSR_API(CsrSetTitle)
   PCSRSS_CONSOLE Console;
   
   Reply->Header.MessageSize = sizeof( CSRSS_API_REPLY );
-  Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) - sizeof(LPC_MESSAGE_HEADER);
+  Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) - sizeof(LPC_MESSAGE);
   LOCK;
   Status = CsrGetObject( ProcessData, Request->Data.SetTitleRequest.Console, (Object_t **)&Console );
   if( !NT_SUCCESS( Status ) )
@@ -1662,7 +1662,7 @@ CSR_API(CsrGetTitle)
        Reply->Header.MessageSize = sizeof (CSRSS_API_REPLY);
        Reply->Header.DataSize =
                sizeof (CSRSS_API_REPLY)
-               - sizeof(LPC_MESSAGE_HEADER);
+               - sizeof(LPC_MESSAGE);
        LOCK;
        Status = CsrGetObject (
                        ProcessData,
@@ -1706,7 +1706,7 @@ CSR_API(CsrWriteConsoleOutput)
    DWORD PSize;
 
    Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
-   Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) - sizeof(LPC_MESSAGE_HEADER);
+   Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) - sizeof(LPC_MESSAGE);
    LOCK;
    Status = CsrGetObject( ProcessData, Request->Data.WriteConsoleOutputRequest.ConsoleHandle, (Object_t **)&Buff );
    if( !NT_SUCCESS( Status ) || (Status = Buff->Header.Type == CSRSS_SCREEN_BUFFER_MAGIC ? STATUS_SUCCESS : STATUS_INVALID_HANDLE ))
@@ -1776,7 +1776,7 @@ CSR_API(CsrFlushInputBuffer)
   NTSTATUS Status;
 
   Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
-  Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) - sizeof(LPC_MESSAGE_HEADER);
+  Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) - sizeof(LPC_MESSAGE);
   LOCK;
   Status = CsrGetObject( ProcessData, Request->Data.FlushInputBufferRequest.ConsoleInput, (Object_t **)&Console );
   if( !NT_SUCCESS( Status ) || (Status = Console->Header.Type == CSRSS_CONSOLE_MAGIC ? STATUS_SUCCESS : STATUS_INVALID_HANDLE ))
@@ -1825,7 +1825,7 @@ CSR_API(CsrScrollConsoleScreenBuffer)
   ALIAS(Fill,Request->Data.ScrollConsoleScreenBufferRequest.Fill);
 
   Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
-  Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) - sizeof(LPC_MESSAGE_HEADER);
+  Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) - sizeof(LPC_MESSAGE);
   LOCK;
   Status = CsrGetObject( ProcessData, ConsoleHandle, (Object_t **)&Buff );
   if( !NT_SUCCESS( Status ) || (Status = Buff->Header.Type == CSRSS_SCREEN_BUFFER_MAGIC ? STATUS_SUCCESS : STATUS_INVALID_HANDLE ))
@@ -1911,7 +1911,7 @@ CSR_API(CsrReadConsoleOutputChar)
   DWORD i;
 
   Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
-  Reply->Header.DataSize = Reply->Header.MessageSize - sizeof(LPC_MESSAGE_HEADER);
+  Reply->Header.DataSize = Reply->Header.MessageSize - sizeof(LPC_MESSAGE);
   ReadBuffer = Reply->Data.ReadConsoleOutputCharReply.String;
 
   LOCK;
@@ -1974,7 +1974,7 @@ CSR_API(CsrReadConsoleOutputAttrib)
   DWORD i;
 
   Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
-  Reply->Header.DataSize = Reply->Header.MessageSize - sizeof(LPC_MESSAGE_HEADER);
+  Reply->Header.DataSize = Reply->Header.MessageSize - sizeof(LPC_MESSAGE);
   ReadBuffer = Reply->Data.ReadConsoleOutputAttribReply.String;
 
   LOCK;
@@ -2036,7 +2036,7 @@ CSR_API(CsrGetNumberOfConsoleInputEvents)
   DWORD NumEvents;
   
   Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
-  Reply->Header.DataSize = Reply->Header.MessageSize - sizeof(LPC_MESSAGE_HEADER);
+  Reply->Header.DataSize = Reply->Header.MessageSize - sizeof(LPC_MESSAGE);
 
   LOCK;
 
@@ -2090,7 +2090,7 @@ CSR_API(CsrPeekConsoleInput)
    UINT NumItems;
    
    Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
-   Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) - sizeof(LPC_MESSAGE_HEADER);
+   Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) - sizeof(LPC_MESSAGE);
    
    LOCK;
    
index 0165d1a..9cc6b34 100644 (file)
@@ -124,7 +124,7 @@ CSR_API(CsrCreateProcess)
    HANDLE Process;
 
    Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) -
-     sizeof(LPC_MESSAGE_HEADER);
+     sizeof(LPC_MESSAGE);
    Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
 
    NewProcessData = CsrGetProcessData(Request->Data.CreateProcessRequest.NewProcessId);
@@ -209,7 +209,7 @@ CSR_API(CsrTerminateProcess)
    NTSTATUS Status;
 
    Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY)
-      - sizeof(LPC_MESSAGE_HEADER);
+      - sizeof(LPC_MESSAGE);
    Reply->Header.DataSize = sizeof(CSRSS_API_REPLY);
 
    Status = CsrFreeProcessData(ProcessData->ProcessId);
@@ -222,7 +222,7 @@ CSR_API(CsrConnectProcess)
 {
    Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
    Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) -
-     sizeof(LPC_MESSAGE_HEADER);
+     sizeof(LPC_MESSAGE);
 
    Reply->Status = STATUS_SUCCESS;
 
@@ -233,7 +233,7 @@ CSR_API(CsrGetShutdownParameters)
 {
   Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
   Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) -
-    sizeof(LPC_MESSAGE_HEADER);
+    sizeof(LPC_MESSAGE);
 
   Reply->Data.GetShutdownParametersReply.Level = ProcessData->ShutdownLevel;
   Reply->Data.GetShutdownParametersReply.Flags = ProcessData->ShutdownFlags;
@@ -247,7 +247,7 @@ CSR_API(CsrSetShutdownParameters)
 {
   Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
   Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) -
-    sizeof(LPC_MESSAGE_HEADER);
+    sizeof(LPC_MESSAGE);
 
   ProcessData->ShutdownLevel = Request->Data.SetShutdownParametersRequest.Level;
   ProcessData->ShutdownFlags = Request->Data.SetShutdownParametersRequest.Flags;
index cf3dcb6..daa0918 100644 (file)
@@ -33,7 +33,7 @@ CSR_API(CsrRegisterServicesProcess)
 
   Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
   Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) -
-    sizeof(LPC_MESSAGE_HEADER);
+    sizeof(LPC_MESSAGE);
 
   if (ServicesProcessIdValid == TRUE)
     {
@@ -57,7 +57,7 @@ CSR_API(CsrExitReactos)
 {
   Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
   Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) -
-    sizeof(LPC_MESSAGE_HEADER);
+    sizeof(LPC_MESSAGE);
 
 
 
index e9fbc2b..1655d4c 100644 (file)
@@ -1006,13 +1006,9 @@ PrintTextXY(SHORT x, SHORT y, char* fmt,...)
   va_list ap;
   COORD coPos;
 
-CHECKPOINT1;
   va_start(ap, fmt);
   vsprintf(buffer, fmt, ap);
   va_end(ap);
-CHECKPOINT1;
-DPRINT1("%s\n", buffer);
-CHECKPOINT1;
 
   coPos.X = x;
   coPos.Y = y;
index c87f74e..30f5820 100644 (file)
@@ -16,7 +16,7 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
-/*
+/* $Id$
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS text-mode setup
  * FILE:            subsys/system/usetup/drivesup.c
@@ -94,23 +94,22 @@ GetSourcePaths(PUNICODE_STRING SourcePath,
 }
 
 
-#if 0
 CHAR
-GetDriveLetter(IN ULONG DriveNumber,
-              IN ULONG PartitionNumber)
+GetDriveLetter(ULONG DriveNumber,
+              ULONG PartitionNumber)
 {
   OBJECT_ATTRIBUTES ObjectAttributes;
   UNICODE_STRING LinkName;
   WCHAR LinkBuffer[8];
-  WCHAR Letter;
+  CHAR Letter;
   HANDLE LinkHandle;
   UNICODE_STRING TargetName;
-  WCHAR TargetBuffer[MAX_PATH];
-//  WCHAR DeviceBuffer[MAX_PATH];
+  PWCHAR TargetBuffer;
+  PWCHAR DeviceBuffer;
   ULONG Length;
+  NTSTATUS Status;
 
-  wcscpy(LinkBuffer,
-        L"\\??\\A:");
+  wcscpy(LinkBuffer, L"\\??\\A:");
 
   RtlInitUnicodeString(&LinkName,
                       LinkBuffer);
@@ -121,13 +120,21 @@ GetDriveLetter(IN ULONG DriveNumber,
                             NULL,
                             NULL);
 
+  TargetBuffer = RtlAllocateHeap(ProcessHeap, 0, MAX_PATH * sizeof(WCHAR));
+  DeviceBuffer = RtlAllocateHeap(ProcessHeap, 0, MAX_PATH * sizeof(WCHAR));
+
   TargetName.Length = 0;
   TargetName.MaximumLength = MAX_PATH * sizeof(WCHAR);
   TargetName.Buffer = TargetBuffer;
 
-  for (Letter = L'C'; Letter <= L'Z'; Letter++)
+  swprintf(DeviceBuffer,
+          L"\\Device\\Harddisk%lu\\Partition%lu",
+          DriveNumber,
+          PartitionNumber);
+
+  for (Letter = 'C'; Letter <= 'Z'; Letter++)
     {
-      LinkBuffer[4] = Letter;
+      LinkBuffer[4] = (WCHAR)Letter;
       TargetName.Length = 0;
 
       Status = NtOpenSymbolicLinkObject(&LinkHandle,
@@ -138,26 +145,23 @@ GetDriveLetter(IN ULONG DriveNumber,
          Status = NtQuerySymbolicLinkObject(LinkHandle,
                                             &TargetName,
                                             &Length);
+         NtClose(LinkHandle);
          if (NT_SUCCESS(Status))
            {
-
-
-
+             if (_wcsicmp(DeviceBuffer, TargetBuffer) == 0)
+               {
+                 RtlFreeHeap(ProcessHeap, 0, DeviceBuffer);
+                 RtlFreeHeap(ProcessHeap, 0, TargetBuffer);
+                 return(Letter);
+               }
            }
-         NtClose(LinkHandle);
        }
     }
 
-  return((CHAR)0);
-}
-#endif
-
-#if 0
-STATUS
-GetFileSystem()
-{
+  RtlFreeHeap(ProcessHeap, 0, DeviceBuffer);
+  RtlFreeHeap(ProcessHeap, 0, TargetBuffer);
 
+  return((CHAR)0);
 }
-#endif
 
 /* EOF */
index f2ef4de..86e5d0e 100644 (file)
@@ -16,7 +16,7 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
-/*
+/* $Id$
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS text-mode setup
  * FILE:            subsys/system/usetup/drivesup.h
@@ -31,6 +31,10 @@ NTSTATUS
 GetSourcePaths(PUNICODE_STRING SourcePath,
               PUNICODE_STRING SourceRootPath);
 
+CHAR
+GetDriveLetter(ULONG DriveNumber,
+              ULONG PartitionNumber);
+
 
 #endif /* __DRIVESUP_H__ */
 
index d00867f..8969cd3 100644 (file)
@@ -16,7 +16,7 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
-/*
+/* $Id$
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS text-mode setup
  * FILE:            subsys/system/usetup/partlist.c
@@ -34,6 +34,7 @@
 #include "usetup.h"
 #include "console.h"
 #include "partlist.h"
+#include "drivesup.h"
 
 
 /* FUNCTIONS ****************************************************************/
@@ -184,6 +185,10 @@ CreatePartitionList(SHORT Left,
                              List->DiskArray[DiskCount].PartArray[i].PartSize = LayoutBuffer->PartitionEntry[i].PartitionLength.QuadPart;
                              List->DiskArray[DiskCount].PartArray[i].PartNumber = LayoutBuffer->PartitionEntry[i].PartitionNumber,
                              List->DiskArray[DiskCount].PartArray[i].PartType = LayoutBuffer->PartitionEntry[i].PartitionType;
+
+                             List->DiskArray[DiskCount].PartArray[i].DriveLetter = GetDriveLetter(DiskCount,
+                                                                                                  LayoutBuffer->PartitionEntry[i].PartitionNumber);
+
                              List->DiskArray[DiskCount].PartArray[i].Used = TRUE;
                            }
                          else
@@ -368,15 +373,29 @@ PrintPartitionData(PPARTLIST List,
       Unit = "kB";
     }
 
-  sprintf(LineBuffer,
-         "%d: nr: %d type: %x (%s)  %I64u %s",
-         PartIndex,
-         PartEntry->PartNumber,
-         PartEntry->PartType,
-         PartType,
-         PartSize,
-         Unit);
-
+  if (PartEntry->DriveLetter != (CHAR)0)
+    {
+      sprintf(LineBuffer,
+             "%c:  %d: nr: %d type: %x (%s)  %I64u %s",
+             PartEntry->DriveLetter,
+             PartIndex,
+             PartEntry->PartNumber,
+             PartEntry->PartType,
+             PartType,
+             PartSize,
+             Unit);
+    }
+  else
+    {
+      sprintf(LineBuffer,
+             "    %d: nr: %d type: %x (%s)  %I64u %s",
+             PartIndex,
+             PartEntry->PartNumber,
+             PartEntry->PartType,
+             PartType,
+             PartSize,
+             Unit);
+    }
 
   Attribute = (List->CurrentDisk == DiskIndex &&
               List->CurrentPartition == PartIndex) ? 0x71 : 0x17;
@@ -687,6 +706,8 @@ GetPartitionData(PPARTLIST List,
   Data->PartNumber = List->DiskArray[List->CurrentDisk].PartArray[List->CurrentPartition].PartNumber;
   Data->PartType = List->DiskArray[List->CurrentDisk].PartArray[List->CurrentPartition].PartType;
 
+  Data->DriveLetter = List->DiskArray[List->CurrentDisk].PartArray[List->CurrentPartition].DriveLetter;
+
   return(TRUE);
 }
 
index 28bf5c1..96decfa 100644 (file)
@@ -16,7 +16,7 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
-/*
+/* $Id$
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS text-mode setup
  * FILE:            subsys/system/usetup/partlist.h
@@ -34,9 +34,12 @@ typedef struct _PARTDATA
   USHORT Port;
   USHORT Bus;
   USHORT Id;
+
   ULONGLONG PartSize;
   ULONG PartNumber;
   ULONG PartType;
+
+  CHAR DriveLetter;
 } PARTDATA, *PPARTDATA;
 
 
@@ -45,6 +48,7 @@ typedef struct _PARTENTRY
   ULONGLONG PartSize;
   ULONG PartNumber;
   ULONG PartType;
+
   CHAR DriveLetter;
   BOOL Used;
 } PARTENTRY, *PPARTENTRY;
@@ -106,7 +110,8 @@ VOID
 ScrollUpPartitionList(PPARTLIST List);
 
 BOOL
-GetPartitionData(PPARTLIST List, PPARTDATA Data);
+GetPartitionData(PPARTLIST List,
+                PPARTDATA Data);
 
 #endif /* __PARTLIST_H__ */
 
index 1704d6e..87d28fa 100644 (file)
@@ -203,10 +203,9 @@ CHECKPOINT1;
 
 
 /*
- * First setup page
+ * Start page
  * RETURNS
- *     TRUE: setup/repair completed successfully
- *     FALSE: setup/repair terminated by user
+ *     Number of the next page.
  */
 static ULONG
 StartPage(PINPUT_RECORD Ir)
@@ -269,12 +268,12 @@ RepairIntroPage(PINPUT_RECORD Ir)
     {
       ConInKey(Ir);
 
-      if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D)          /* ENTER */
+      if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D) /* ENTER */
        {
          return(REBOOT_PAGE);
        }
       else if ((Ir->Event.KeyEvent.uChar.AsciiChar == 0x00) &&
-              (Ir->Event.KeyEvent.wVirtualKeyCode == VK_ESCAPE))       /* ESC */
+              (Ir->Event.KeyEvent.wVirtualKeyCode == VK_ESCAPE)) /* ESC */
        {
          return(INTRO_PAGE);
        }
@@ -300,9 +299,11 @@ IntroPage(PINPUT_RECORD Ir)
 
   SetTextXY(8, 15, "\xf9  Press ENTER to install ReactOS.");
 
-  SetTextXY(8, 17, "\xf9  Press R to repair ReactOS.");
+  SetTextXY(8, 17, "\xf9  Press E to start the emergency repair console.");
+
+  SetTextXY(8, 19, "\xf9  Press R to repair ReactOS.");
 
-  SetTextXY(8, 19, "\xf9  Press F3 to quit without installing ReactOS.");
+  SetTextXY(8, 21, "\xf9  Press F3 to quit without installing ReactOS.");
 
 
   SetStatusText("   ENTER = Continue   F3 = Quit");
@@ -312,17 +313,23 @@ IntroPage(PINPUT_RECORD Ir)
       ConInKey(Ir);
 
       if ((Ir->Event.KeyEvent.uChar.AsciiChar == 0x00) &&
-         (Ir->Event.KeyEvent.wVirtualKeyCode == VK_F3))        /* F3 */
+         (Ir->Event.KeyEvent.wVirtualKeyCode == VK_F3)) /* F3 */
        {
          if (ConfirmQuit(Ir) == TRUE)
            return(QUIT_PAGE);
          break;
        }
-      else if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D)     /* ENTER */
+      else if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D) /* ENTER */
        {
          return(INSTALL_INTRO_PAGE);
        }
-      else if (toupper(Ir->Event.KeyEvent.uChar.AsciiChar) == 'R')     /* R */
+#if 0
+      else if (toupper(Ir->Event.KeyEvent.uChar.AsciiChar) == 'E') /* E */
+       {
+         return(RepairConsole());
+       }
+#endif
+      else if (toupper(Ir->Event.KeyEvent.uChar.AsciiChar) == 'R') /* R */
        {
          return(REPAIR_INTRO_PAGE);
        }
@@ -359,13 +366,13 @@ InstallIntroPage(PINPUT_RECORD Ir)
       ConInKey(Ir);
 
       if ((Ir->Event.KeyEvent.uChar.AsciiChar == 0x00) &&
-         (Ir->Event.KeyEvent.wVirtualKeyCode == VK_F3))
+         (Ir->Event.KeyEvent.wVirtualKeyCode == VK_F3)) /* F3 */
        {
          if (ConfirmQuit(Ir) == TRUE)
            return(QUIT_PAGE);
          break;
        }
-      else if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D)
+      else if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D) /* ENTER */
        {
          return(SELECT_PARTITION_PAGE);
        }
@@ -408,7 +415,7 @@ SelectPartitionPage(PINPUT_RECORD Ir)
       ConInKey(Ir);
 
       if ((Ir->Event.KeyEvent.uChar.AsciiChar == 0x00) &&
-         (Ir->Event.KeyEvent.wVirtualKeyCode == VK_F3))
+         (Ir->Event.KeyEvent.wVirtualKeyCode == VK_F3)) /* F3 */
        {
          if (ConfirmQuit(Ir) == TRUE)
            {
@@ -418,16 +425,16 @@ SelectPartitionPage(PINPUT_RECORD Ir)
          break;
        }
       else if ((Ir->Event.KeyEvent.uChar.AsciiChar == 0x00) &&
-              (Ir->Event.KeyEvent.wVirtualKeyCode == VK_DOWN))
+              (Ir->Event.KeyEvent.wVirtualKeyCode == VK_DOWN)) /* DOWN */
        {
          ScrollDownPartitionList(PartList);
        }
       else if ((Ir->Event.KeyEvent.uChar.AsciiChar == 0x00) &&
-              (Ir->Event.KeyEvent.wVirtualKeyCode == VK_UP))
+              (Ir->Event.KeyEvent.wVirtualKeyCode == VK_UP)) /* UP */
        {
          ScrollUpPartitionList(PartList);
        }
-      else if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D)
+      else if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D) /* ENTER */
        {
          PartDataValid = GetPartitionData(PartList, &PartData);
          DestroyPartitionList(PartList);
@@ -538,18 +545,18 @@ SelectFileSystemPage(PINPUT_RECORD Ir)
       ConInKey(Ir);
 
       if ((Ir->Event.KeyEvent.uChar.AsciiChar == 0x00) &&
-         (Ir->Event.KeyEvent.wVirtualKeyCode == VK_F3))
+         (Ir->Event.KeyEvent.wVirtualKeyCode == VK_F3)) /* F3 */
        {
          if (ConfirmQuit(Ir) == TRUE)
            return(QUIT_PAGE);
          break;
        }
       else if ((Ir->Event.KeyEvent.uChar.AsciiChar == 0x00) &&
-              (Ir->Event.KeyEvent.wVirtualKeyCode == VK_ESCAPE))       /* ESC */
+              (Ir->Event.KeyEvent.wVirtualKeyCode == VK_ESCAPE)) /* ESC */
        {
          return(SELECT_PARTITION_PAGE);
        }
-      else if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D)     /* ENTER */
+      else if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D) /* ENTER */
        {
          return(CHECK_FILE_SYSTEM_PAGE);
        }
@@ -576,7 +583,7 @@ CheckFileSystemPage(PINPUT_RECORD Ir)
       ConInKey(Ir);
 
       if ((Ir->Event.KeyEvent.uChar.AsciiChar == 0x00) &&
-         (Ir->Event.KeyEvent.wVirtualKeyCode == VK_F3))
+         (Ir->Event.KeyEvent.wVirtualKeyCode == VK_F3)) /* F3 */
        {
          if (ConfirmQuit(Ir) == TRUE)
            return(QUIT_PAGE);
@@ -617,7 +624,7 @@ InstallDirectoryPage(PINPUT_RECORD Ir)
       ConInKey(Ir);
 
       if ((Ir->Event.KeyEvent.uChar.AsciiChar == 0x00) &&
-         (Ir->Event.KeyEvent.wVirtualKeyCode == VK_F3))
+         (Ir->Event.KeyEvent.wVirtualKeyCode == VK_F3)) /* F3 */
        {
          if (ConfirmQuit(Ir) == TRUE)
            return(QUIT_PAGE);
@@ -818,7 +825,7 @@ PrepareCopyPage(PINPUT_RECORD Ir)
            return(QUIT_PAGE);
          break;
        }
-      else if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D)
+      else if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D) /* ENTER */
        {
          return(FILE_COPY_PAGE);
        }
@@ -848,7 +855,7 @@ FileCopyPage(PINPUT_RECORD Ir)
            return(QUIT_PAGE);
          break;
        }
-      else if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D)
+      else if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D) /* ENTER */
        {
          return(INIT_SYSTEM_PAGE);
        }
@@ -974,13 +981,13 @@ InitSystemPage(PINPUT_RECORD Ir)
       ConInKey(Ir);
 
       if ((Ir->Event.KeyEvent.uChar.AsciiChar == 0x00) &&
-         (Ir->Event.KeyEvent.wVirtualKeyCode == VK_F3))
+         (Ir->Event.KeyEvent.wVirtualKeyCode == VK_F3)) /* F3 */
        {
          if (ConfirmQuit(Ir) == TRUE)
            return(QUIT_PAGE);
          break;
        }
-      else if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D)
+      else if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D) /* ENTER */
        {
          return(SUCCESS_PAGE);
        }
@@ -1006,7 +1013,7 @@ QuitPage(PINPUT_RECORD Ir)
     {
       ConInKey(Ir);
 
-      if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D)
+      if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D) /* ENTER */
        {
          return(REBOOT_PAGE);
        }
@@ -1030,7 +1037,7 @@ SuccessPage(PINPUT_RECORD Ir)
     {
       ConInKey(Ir);
 
-      if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D)
+      if (Ir->Event.KeyEvent.uChar.AsciiChar == 0x0D) /* ENTER */
        {
          return(REBOOT_PAGE);
        }
index baecf52..a865521 100644 (file)
@@ -141,8 +141,8 @@ MouseSafetyOnDrawStart(PSURFOBJ SurfObj, PSURFGDI SurfGDI, LONG HazardX1,
       tmp = HazardY2; HazardY2 = HazardY1; HazardY1 = tmp; 
     }
 
-  if ((mouse_x + mouse_width >= HazardX1)  && (mouse_x <= HazardX2) &&
-      (mouse_y + mouse_height >= HazardY1) && (mouse_y <= HazardY2))
+  if (((mouse_x + mouse_width) >= HazardX1)  && (mouse_x <= HazardX2) &&
+      ((mouse_y + mouse_height) >= HazardY1) && (mouse_y <= HazardY2))
     {
       SurfGDI->MovePointer(SurfObj, -1, -1, &MouseRect);
       SafetySwitch = TRUE;
index f86146c..664e347 100644 (file)
@@ -112,6 +112,11 @@ MsqTranslateMouseMessage(HWND hWnd, UINT FilterLow, UINT FilterHigh,
 
   *HitTest = WinPosWindowFromPoint(ScopeWin, Message->Msg.pt, &Window);
   
+  if (Window == NULL)
+    {
+      ExFreePool(Message);
+      return(FALSE);
+    }
   if (Window->MessageQueue != PsGetWin32Thread()->MessageQueue)
     {      
       ExAcquireFastMutex(&Window->MessageQueue->Lock);
index 973be6b..d7b6a67 100644 (file)
@@ -813,6 +813,10 @@ WinPosWindowFromPoint(PWINDOW_OBJECT ScopeWin, POINT WinPoint,
       return(HitTest);
     }
 
+  if ((*Window) == NULL)
+    {
+      return(HTNOWHERE);
+    }
   if ((*Window)->MessageQueue == PsGetWin32Thread()->MessageQueue)
     {
       HitTest = W32kSendMessage((*Window)->Self, WM_NCHITTEST, 0,