From a4f1ab830f1a18c3a31174cd6974d65119c58189 Mon Sep 17 00:00:00 2001 From: short <> Date: Mon, 4 Nov 2002 22:06:55 +0000 Subject: [PATCH] branch update for HEAD-2002110401 --- ChangeLog | 20 +++++ apps/tests/lpc/lpcclt.c | 2 +- drivers/input/psaux/mouse.c | 166 +++++++++++++++++++++------------------ drivers/input/psaux/psaux.c | 16 ++-- drivers/input/psaux/psaux.h | 15 ++-- include/ascii.h | 4 +- include/csrss/csrss.h | 8 +- include/lsass/lsass.h | 4 +- include/napi/dbg.h | 2 +- include/napi/lpc.h | 10 +-- include/reactos/version.h | 4 +- include/structs.h | 24 +++++- include/unicode.h | 6 +- lib/advapi32/reg/reg.c | 56 +++++++------ lib/kernel32/misc/console.c | 6 +- lib/ntdll/csr/lpc.c | 2 +- lib/ntdll/dbg/debug.c | 2 +- lib/secur32/lsa.c | 16 ++-- loaders/boot/boot.asm | 7 +- loaders/boot/boot.mak | 7 +- loaders/boot/bootbk.asm | 7 +- ntoskrnl/dbg/user.c | 4 +- ntoskrnl/include/internal/port.h | 4 +- ntoskrnl/lpc/connect.c | 8 +- ntoskrnl/lpc/reply.c | 6 +- ntoskrnl/ps/process.c | 2 +- subsys/csrss/api/conio.c | 54 ++++++------- subsys/csrss/api/process.c | 10 +-- subsys/csrss/api/user.c | 4 +- subsys/system/usetup/console.c | 4 - subsys/system/usetup/drivesup.c | 52 ++++++------ subsys/system/usetup/drivesup.h | 6 +- subsys/system/usetup/partlist.c | 41 +++++++--- subsys/system/usetup/partlist.h | 9 ++- subsys/system/usetup/usetup.c | 61 +++++++------- subsys/win32k/eng/mouse.c | 4 +- subsys/win32k/ntuser/msgqueue.c | 5 ++ subsys/win32k/ntuser/winpos.c | 4 + 38 files changed, 386 insertions(+), 276 deletions(-) diff --git a/ChangeLog b/ChangeLog index 87c9dfa..b6b7015 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,23 @@ +2002-11-03 Casper S. Hornstrup + + * apps/tests/lpc/lpcclt.c: Change LPC_MESSAGE_HEADER to LPC_MESSAGE. + * include/csrss/csrss.h: Ditto. + * include/lsass/lsass.h: Ditto. + * include/napi/dbg.h: Ditto. + * include/napi/lpc.h: Ditto. + * lib/kernel32/misc/console.c: Ditto. + * lib/ntdll/csr/lpc.c: Ditto. + * lib/ntdll/dbg/debug.c: Ditto. + * lib/secur32/lsa.c: Ditto. + * ntoskrnl/dbg/user.c: Ditto. + * ntoskrnl/include/internal/port.h: Ditto. + * ntoskrnl/lpc/connect.c: Ditto. + * ntoskrnl/lpc/reply.c: Ditto. + * ntoskrnl/ps/process.c: Ditto. + * subsys/csrss/api/conio.c: Ditto. + * subsys/csrss/api/process.c: Ditto. + * subsys/csrss/api/user.c: Ditto. + 2002-10-26 Casper S. Hornstrup * lib/msvcrt/except/seh.s: Fix end-of-line formatting. diff --git a/apps/tests/lpc/lpcclt.c b/apps/tests/lpc/lpcclt.c index b7e01f6..e5905f4 100644 --- a/apps/tests/lpc/lpcclt.c +++ b/apps/tests/lpc/lpcclt.c @@ -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", diff --git a/drivers/input/psaux/mouse.c b/drivers/input/psaux/mouse.c index 47c06ba..6a6fec0 100644 --- a/drivers/input/psaux/mouse.c +++ b/drivers/input/psaux/mouse.c @@ -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); diff --git a/drivers/input/psaux/psaux.c b/drivers/input/psaux/psaux.c index e8bd4b0..a3e7cfc 100644 --- a/drivers/input/psaux/psaux.c +++ b/drivers/input/psaux/psaux.c @@ -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); diff --git a/drivers/input/psaux/psaux.h b/drivers/input/psaux/psaux.h index 0dfb620..22eb2b2 100644 --- a/drivers/input/psaux/psaux.h +++ b/drivers/input/psaux/psaux.h @@ -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; diff --git a/include/ascii.h b/include/ascii.h index b801316..50b0dc8 100644 --- a/include/ascii.h +++ b/include/ascii.h @@ -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, diff --git a/include/csrss/csrss.h b/include/csrss/csrss.h index 9b3efe0..4b1115a 100644 --- a/include/csrss/csrss.h +++ b/include/csrss/csrss.h @@ -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 { diff --git a/include/lsass/lsass.h b/include/lsass/lsass.h index a276837..a01d3a1 100644 --- a/include/lsass/lsass.h +++ b/include/lsass/lsass.h @@ -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 { diff --git a/include/napi/dbg.h b/include/napi/dbg.h index e2a51a6..8745c55 100644 --- a/include/napi/dbg.h +++ b/include/napi/dbg.h @@ -13,7 +13,7 @@ typedef struct _LPC_DBG_MESSAGE { - LPC_MESSAGE_HEADER Header; + LPC_MESSAGE Header; ULONG Type; ULONG Status; union diff --git a/include/napi/lpc.h b/include/napi/lpc.h index 2ee48ce..a99c919 100644 --- a/include/napi/lpc.h +++ b/include/napi/lpc.h @@ -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; diff --git a/include/reactos/version.h b/include/reactos/version.h index 6c923d0..246d033 100644 --- a/include/reactos/version.h +++ b/include/reactos/version.h @@ -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 diff --git a/include/structs.h b/include/structs.h index 7f7587c..56e0947 100644 --- a/include/structs.h +++ b/include/structs.h @@ -44,7 +44,7 @@ #include #include #include - +/* 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 diff --git a/include/unicode.h b/include/unicode.h index c3b1fb8..2c92941 100644 --- a/include/unicode.h +++ b/include/unicode.h @@ -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 ); diff --git a/lib/advapi32/reg/reg.c b/lib/advapi32/reg/reg.c index 8296a41..2010eec 100644 --- a/lib/advapi32/reg/reg.c +++ b/lib/advapi32/reg/reg.c @@ -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; diff --git a/lib/kernel32/misc/console.c b/lib/kernel32/misc/console.c index b9a5025..ab75193 100644 --- a/lib/kernel32/misc/console.c +++ b/lib/kernel32/misc/console.c @@ -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)); diff --git a/lib/ntdll/csr/lpc.c b/lib/ntdll/csr/lpc.c index fea9ea3..d4b8d56 100644 --- a/lib/ntdll/csr/lpc.c +++ b/lib/ntdll/csr/lpc.c @@ -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, diff --git a/lib/ntdll/dbg/debug.c b/lib/ntdll/dbg/debug.c index dc852f9..9604ded 100644 --- a/lib/ntdll/dbg/debug.c +++ b/lib/ntdll/dbg/debug.c @@ -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; diff --git a/lib/secur32/lsa.c b/lib/secur32/lsa.c index 470f2de..75e6b26 100644 --- a/lib/secur32/lsa.c +++ b/lib/secur32/lsa.c @@ -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; diff --git a/loaders/boot/boot.asm b/loaders/boot/boot.asm index ca626a1..a28136e 100644 --- a/loaders/boot/boot.asm +++ b/loaders/boot/boot.asm @@ -30,8 +30,11 @@ ; $Header$ ; ; $Log$ -; Revision 1.1 2002/10/31 14:31:06 lace -; :pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos +; Revision 1.1.2.1 2002/11/04 22:06:55 short +; branch update for HEAD-2002110401 +; +; Revision 1.2 2002/11/04 22:01:07 short +; update for HEAD-2002110401 ; ; Revision 1.4 2000/06/25 03:59:14 dwelch ; diff --git a/loaders/boot/boot.mak b/loaders/boot/boot.mak index ae42623..425b236 100644 --- a/loaders/boot/boot.mak +++ b/loaders/boot/boot.mak @@ -4,8 +4,11 @@ # $Header$ # # $Log$ -# Revision 1.1 2002/10/31 14:31:06 lace -# :pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos +# Revision 1.1.2.1 2002/11/04 22:06:55 short +# branch update for HEAD-2002110401 +# +# Revision 1.2 2002/11/04 22:01:07 short +# update for HEAD-2002110401 # # Revision 1.4 2000/06/25 03:59:14 dwelch # diff --git a/loaders/boot/bootbk.asm b/loaders/boot/bootbk.asm index b1edd9f..86d3a3a 100644 --- a/loaders/boot/bootbk.asm +++ b/loaders/boot/bootbk.asm @@ -30,8 +30,11 @@ ; $Header$ ; ; $Log$ -; Revision 1.1 2002/10/31 14:31:06 lace -; :pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos +; Revision 1.1.2.1 2002/11/04 22:06:55 short +; branch update for HEAD-2002110401 +; +; Revision 1.2 2002/11/04 22:01:07 short +; update for HEAD-2002110401 ; ; Revision 1.4 2000/06/25 03:59:14 dwelch ; diff --git a/ntoskrnl/dbg/user.c b/ntoskrnl/dbg/user.c index 3641fff..0c33105 100644 --- a/ntoskrnl/dbg/user.c +++ b/ntoskrnl/dbg/user.c @@ -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; diff --git a/ntoskrnl/include/internal/port.h b/ntoskrnl/include/internal/port.h index b987c3b..f73af61 100644 --- a/ntoskrnl/include/internal/port.h +++ b/ntoskrnl/include/internal/port.h @@ -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; diff --git a/ntoskrnl/lpc/connect.c b/ntoskrnl/lpc/connect.c index 4d02d3d..460e36a 100644 --- a/ntoskrnl/lpc/connect.c +++ b/ntoskrnl/lpc/connect.c @@ -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) diff --git a/ntoskrnl/lpc/reply.c b/ntoskrnl/lpc/reply.c index 04f850e..9bae7e0 100644 --- a/ntoskrnl/lpc/reply.c +++ b/ntoskrnl/lpc/reply.c @@ -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)) { diff --git a/ntoskrnl/ps/process.c b/ntoskrnl/ps/process.c index 751e534..cac4e82 100644 --- a/ntoskrnl/ps/process.c +++ b/ntoskrnl/ps/process.c @@ -720,7 +720,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; diff --git a/subsys/csrss/api/conio.c b/subsys/csrss/api/conio.c index adeb5bd..74f5647 100644 --- a/subsys/csrss/api/conio.c +++ b/subsys/csrss/api/conio.c @@ -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; diff --git a/subsys/csrss/api/process.c b/subsys/csrss/api/process.c index 0165d1a..9cc6b34 100644 --- a/subsys/csrss/api/process.c +++ b/subsys/csrss/api/process.c @@ -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; diff --git a/subsys/csrss/api/user.c b/subsys/csrss/api/user.c index cf3dcb6..daa0918 100644 --- a/subsys/csrss/api/user.c +++ b/subsys/csrss/api/user.c @@ -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); diff --git a/subsys/system/usetup/console.c b/subsys/system/usetup/console.c index e9fbc2b..1655d4c 100644 --- a/subsys/system/usetup/console.c +++ b/subsys/system/usetup/console.c @@ -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; diff --git a/subsys/system/usetup/drivesup.c b/subsys/system/usetup/drivesup.c index c87f74e..30f5820 100644 --- a/subsys/system/usetup/drivesup.c +++ b/subsys/system/usetup/drivesup.c @@ -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 */ diff --git a/subsys/system/usetup/drivesup.h b/subsys/system/usetup/drivesup.h index f2ef4de..86e5d0e 100644 --- a/subsys/system/usetup/drivesup.h +++ b/subsys/system/usetup/drivesup.h @@ -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__ */ diff --git a/subsys/system/usetup/partlist.c b/subsys/system/usetup/partlist.c index d00867f..8969cd3 100644 --- a/subsys/system/usetup/partlist.c +++ b/subsys/system/usetup/partlist.c @@ -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); } diff --git a/subsys/system/usetup/partlist.h b/subsys/system/usetup/partlist.h index 28bf5c1..96decfa 100644 --- a/subsys/system/usetup/partlist.h +++ b/subsys/system/usetup/partlist.h @@ -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__ */ diff --git a/subsys/system/usetup/usetup.c b/subsys/system/usetup/usetup.c index 1704d6e..87d28fa 100644 --- a/subsys/system/usetup/usetup.c +++ b/subsys/system/usetup/usetup.c @@ -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); } diff --git a/subsys/win32k/eng/mouse.c b/subsys/win32k/eng/mouse.c index baecf52..a865521 100644 --- a/subsys/win32k/eng/mouse.c +++ b/subsys/win32k/eng/mouse.c @@ -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; diff --git a/subsys/win32k/ntuser/msgqueue.c b/subsys/win32k/ntuser/msgqueue.c index f86146c..664e347 100644 --- a/subsys/win32k/ntuser/msgqueue.c +++ b/subsys/win32k/ntuser/msgqueue.c @@ -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); diff --git a/subsys/win32k/ntuser/winpos.c b/subsys/win32k/ntuser/winpos.c index 973be6b..d7b6a67 100644 --- a/subsys/win32k/ntuser/winpos.c +++ b/subsys/win32k/ntuser/winpos.c @@ -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, -- 1.8.3.1