From 3cb177993476242cfbcbb987b01baeb3045dc718 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sat, 27 Oct 2012 23:52:28 +0000 Subject: [PATCH] [WIN32SS/USER32] - Use the new subsystems header winmsg.h - Use the new USER_API_MESSAGE structure, and adapt co_CsrNotify in consequence. - Code formatting. [KERNEL32] - Use the new subsystems headers basemsg.h, conmsg.h, winmsg.h, etc... [NTDLL] - Code formatting only. svn path=/branches/ros-csrss/; revision=57628 --- dll/ntdll/csr/connect.c | 2 +- dll/win32/kernel32/k32.h | 4 ++ win32ss/pch.h | 4 +- win32ss/user/ntuser/csr.c | 65 +++++++++++++++------------- win32ss/user/ntuser/csr.h | 3 +- win32ss/user/ntuser/desktop.c | 3 +- win32ss/user/ntuser/simplecall.c | 9 ++-- win32ss/user/user32/include/user32.h | 4 +- win32ss/user/user32/misc/exit.c | 26 +++++------ win32ss/user/user32/misc/misc.c | 4 +- 10 files changed, 68 insertions(+), 56 deletions(-) diff --git a/dll/ntdll/csr/connect.c b/dll/ntdll/csr/connect.c index 90e9614ab48..27fbb743b17 100644 --- a/dll/ntdll/csr/connect.c +++ b/dll/ntdll/csr/connect.c @@ -60,7 +60,7 @@ CsrClientCallServer(IN OUT PCSR_API_MESSAGE ApiMessage, ApiMessage->Header.u2.ZeroInit = 0; ApiMessage->Header.u1.s1.TotalLength = FIELD_OFFSET(CSR_API_MESSAGE, Data) + DataLength; - /* FIELD_OFFSET(CSR_API_MESSAGE, Data) <= sizeof(CSR_API_MESSAGE) - sizeof(ApiMessage->Data) */ + /* FIELD_OFFSET(CSR_API_MESSAGE, Data) <= sizeof(CSR_API_MESSAGE) - sizeof(ApiMessage->Data) */ ApiMessage->Header.u1.s1.DataLength = ApiMessage->Header.u1.s1.TotalLength - sizeof(PORT_MESSAGE); diff --git a/dll/win32/kernel32/k32.h b/dll/win32/kernel32/k32.h index 0a958af2d01..77df40d5507 100644 --- a/dll/win32/kernel32/k32.h +++ b/dll/win32/kernel32/k32.h @@ -37,6 +37,10 @@ /* CSRSS Header */ #include +#include +#include +#include +#include //#include // FIXME: data header. /* C Headers */ diff --git a/win32ss/pch.h b/win32ss/pch.h index 5cbb2735c5f..66a9724e3f5 100644 --- a/win32ss/pch.h +++ b/win32ss/pch.h @@ -71,8 +71,8 @@ typedef struct _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES; #include /* CSRSS Header */ -#include -#include // FIXME: data header. +#include +#include // FIXME: data header. /* Public Win32K headers */ #include diff --git a/win32ss/user/ntuser/csr.c b/win32ss/user/ntuser/csr.c index f807d509088..7f53c5bdffb 100644 --- a/win32ss/user/ntuser/csr.c +++ b/win32ss/user/ntuser/csr.c @@ -46,46 +46,51 @@ CsrInit(void) NTSTATUS FASTCALL -co_CsrNotify(PCSR_API_MESSAGE Request) +co_CsrNotify(IN OUT PCSR_API_MESSAGE ApiMessage, + IN ULONG DataLength) { - NTSTATUS Status; - PEPROCESS OldProcess; + NTSTATUS Status; + PEPROCESS OldProcess; - if (NULL == CsrProcess) - { - return STATUS_INVALID_PORT_HANDLE; - } + if (NULL == CsrProcess) + { + return STATUS_INVALID_PORT_HANDLE; + } - Request->Header.u2.ZeroInit = 0; - Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - sizeof(PORT_MESSAGE); - Request->Header.u1.s1.TotalLength = sizeof(CSR_API_MESSAGE); + /* Fill out the Port Message Header */ + ApiMessage->Header.u2.ZeroInit = 0; + ApiMessage->Header.u1.s1.TotalLength = + FIELD_OFFSET(CSR_API_MESSAGE, Data) + DataLength; + /* FIELD_OFFSET(CSR_API_MESSAGE, Data) <= sizeof(CSR_API_MESSAGE) - sizeof(ApiMessage->Data) */ + ApiMessage->Header.u1.s1.DataLength = + ApiMessage->Header.u1.s1.TotalLength - sizeof(PORT_MESSAGE); - /* Switch to the process in which the WindowsApiPort handle is valid */ - OldProcess = PsGetCurrentProcess(); - if (CsrProcess != OldProcess) - { - KeAttachProcess(&CsrProcess->Pcb); - } + /* Switch to the process in which the WindowsApiPort handle is valid */ + OldProcess = PsGetCurrentProcess(); + if (CsrProcess != OldProcess) + { + KeAttachProcess(&CsrProcess->Pcb); + } - UserLeaveCo(); + UserLeaveCo(); - Status = ZwRequestWaitReplyPort(WindowsApiPort, - &Request->Header, - &Request->Header); + Status = ZwRequestWaitReplyPort(WindowsApiPort, + &ApiMessage->Header, + &ApiMessage->Header); - UserEnterCo(); + UserEnterCo(); - if (CsrProcess != OldProcess) - { - KeDetachProcess(); - } + if (CsrProcess != OldProcess) + { + KeDetachProcess(); + } - if (NT_SUCCESS(Status)) - { - Status = Request->Status; - } + if (NT_SUCCESS(Status)) + { + Status = ApiMessage->Status; + } - return Status; + return Status; } diff --git a/win32ss/user/ntuser/csr.h b/win32ss/user/ntuser/csr.h index 4f5dc8daf53..dd15f22966d 100644 --- a/win32ss/user/ntuser/csr.h +++ b/win32ss/user/ntuser/csr.h @@ -12,7 +12,8 @@ extern PEPROCESS CsrProcess; NTSTATUS FASTCALL CsrInit(void); -NTSTATUS FASTCALL co_CsrNotify(PCSR_API_MESSAGE Request); +NTSTATUS FASTCALL co_CsrNotify(IN OUT PCSR_API_MESSAGE ApiMessage, + IN ULONG DataLength); NTSTATUS FASTCALL CsrCloseHandle(HANDLE Handle); NTSTATUS WINAPI CsrInsertObject(HANDLE ObjectHandle, ACCESS_MASK DesiredAccess, diff --git a/win32ss/user/ntuser/desktop.c b/win32ss/user/ntuser/desktop.c index 8c9b9f334c2..976e6baa138 100644 --- a/win32ss/user/ntuser/desktop.c +++ b/win32ss/user/ntuser/desktop.c @@ -1220,7 +1220,8 @@ NtUserCreateDesktop( RETURN( NULL); } - Status = co_CsrNotify(&Request); + Status = co_CsrNotify((PCSR_API_MESSAGE)&Request, + sizeof(CSR_API_MESSAGE)); if (! NT_SUCCESS(Status)) { CsrCloseHandle(Request.Data.CreateDesktopRequest.DesktopHandle); diff --git a/win32ss/user/ntuser/simplecall.c b/win32ss/user/ntuser/simplecall.c index 91216bed5fc..7b3d77bb134 100644 --- a/win32ss/user/ntuser/simplecall.c +++ b/win32ss/user/ntuser/simplecall.c @@ -17,7 +17,7 @@ co_IntRegisterLogonProcess(HANDLE ProcessId, BOOL Register) { PEPROCESS Process; NTSTATUS Status; - CSR_API_MESSAGE Request; + USER_API_MESSAGE Request; Status = PsLookupProcessByProcessId(ProcessId, &Process); @@ -52,12 +52,13 @@ co_IntRegisterLogonProcess(HANDLE ProcessId, BOOL Register) ObDereferenceObject(Process); - Request.ApiNumber = CSR_CREATE_API_NUMBER(CSR_GUI, REGISTER_LOGON_PROCESS); + Request.ApiNumber = CSR_CREATE_API_NUMBER(USERSRV_SERVERDLL_INDEX, UserpRegisterLogonProcess); Request.Data.RegisterLogonProcessRequest.ProcessId = ProcessId; Request.Data.RegisterLogonProcessRequest.Register = Register; - Status = co_CsrNotify(&Request); - if (! NT_SUCCESS(Status)) + Status = co_CsrNotify((PCSR_API_MESSAGE)&Request, + sizeof(CSRSS_REGISTER_LOGON_PROCESS)); + if (!NT_SUCCESS(Status)) { ERR("Failed to register logon process with CSRSS\n"); return FALSE; diff --git a/win32ss/user/user32/include/user32.h b/win32ss/user/user32/include/user32.h index 0078cab3a9a..8f38227e9a1 100644 --- a/win32ss/user/user32/include/user32.h +++ b/win32ss/user/user32/include/user32.h @@ -30,8 +30,8 @@ #include /* CSRSS Header */ -#include -#include // FIXME: data header. +#include +#include /* Public Win32K Headers */ #include diff --git a/win32ss/user/user32/misc/exit.c b/win32ss/user/user32/misc/exit.c index 0a2ba9898b3..91ed9daacd1 100644 --- a/win32ss/user/user32/misc/exit.c +++ b/win32ss/user/user32/misc/exit.c @@ -67,17 +67,17 @@ BOOL WINAPI ExitWindowsEx(UINT uFlags, DWORD dwReserved) { - CSR_API_MESSAGE Request; + USER_API_MESSAGE ApiMessage; NTSTATUS Status; - Request.Data.ExitReactosRequest.Flags = uFlags; - Request.Data.ExitReactosRequest.Reserved = dwReserved; + ApiMessage.Data.ExitReactosRequest.Flags = uFlags; + ApiMessage.Data.ExitReactosRequest.Reserved = dwReserved; - Status = CsrClientCallServer(&Request, + Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage, NULL, - CSR_CREATE_API_NUMBER(CSR_GUI, EXIT_REACTOS), - sizeof(CSR_API_MESSAGE)); - if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status)) + CSR_CREATE_API_NUMBER(USERSRV_SERVERDLL_INDEX, UserpExitWindowsEx), + sizeof(CSRSS_EXIT_REACTOS)); + if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = ApiMessage.Status)) { SetLastError(RtlNtStatusToDosError(Status)); return FALSE; @@ -93,16 +93,16 @@ ExitWindowsEx(UINT uFlags, BOOL WINAPI RegisterServicesProcess(DWORD ServicesProcessId) { - CSR_API_MESSAGE Request; + USER_API_MESSAGE ApiMessage; NTSTATUS Status; - Request.Data.RegisterServicesProcessRequest.ProcessId = UlongToHandle(ServicesProcessId); + ApiMessage.Data.RegisterServicesProcessRequest.ProcessId = UlongToHandle(ServicesProcessId); - Status = CsrClientCallServer(&Request, + Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage, NULL, - CSR_CREATE_API_NUMBER(CSR_GUI, REGISTER_SERVICES_PROCESS), - sizeof(CSR_API_MESSAGE)); - if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = Request.Status)) + CSR_CREATE_API_NUMBER(USERSRV_SERVERDLL_INDEX, UserpRegisterServicesProcess), + sizeof(CSRSS_REGISTER_SERVICES_PROCESS)); + if (!NT_SUCCESS(Status) || !NT_SUCCESS(Status = ApiMessage.Status)) { SetLastError(RtlNtStatusToDosError(Status)); return FALSE; diff --git a/win32ss/user/user32/misc/misc.c b/win32ss/user/user32/misc/misc.c index cdf91ff1671..5e5230da985 100644 --- a/win32ss/user/user32/misc/misc.c +++ b/win32ss/user/user32/misc/misc.c @@ -42,7 +42,7 @@ BOOL WINAPI RegisterLogonProcess(DWORD dwProcessId, BOOL bRegister) { - return NtUserxRegisterLogonProcess(dwProcessId,bRegister); + return NtUserxRegisterLogonProcess(dwProcessId, bRegister); } /* @@ -50,7 +50,7 @@ RegisterLogonProcess(DWORD dwProcessId, BOOL bRegister) */ BOOL WINAPI -SetLogonNotifyWindow (HWND Wnd, HWINSTA WinSta) +SetLogonNotifyWindow(HWND Wnd, HWINSTA WinSta) { /* Maybe we should call NtUserSetLogonNotifyWindow and let that one inform CSRSS??? */ CSR_API_MESSAGE Request;