Code reorganization only: put public server apis definitions in a dedicated include to be included in the respective init.c files.
svn path=/branches/ros-csrss/; revision=58718
#define IsConsoleHandle(h) \
(((ULONG_PTR)(h) & 0x10000003) == 0x3)
-/* Console reserved "file" names */
+/* Console-reserved device "file" names */
#define CONSOLE_FILE_NAME L"CON"
#define CONSOLE_INPUT_FILE_NAME L"CONIN$"
#define CONSOLE_OUTPUT_FILE_NAME L"CONOUT$"
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS Base API Server DLL
+ * FILE: subsystems/win/basesrv/api.h
+ * PURPOSE: Public server APIs definitions
+ * PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
+ */
+
+#pragma once
+
+/* dosdev.c */
+VOID BaseInitDefineDosDevice(VOID);
+VOID BaseCleanupDefineDosDevice(VOID);
+
+CSR_API(BaseSrvDefineDosDevice);
+
+/* proc.c */
+CSR_API(BaseSrvGetTempFile);
+CSR_API(BaseSrvCreateProcess);
+CSR_API(BaseSrvCreateThread);
+CSR_API(BaseSrvExitProcess);
+CSR_API(BaseSrvGetProcessShutdownParam);
+CSR_API(BaseSrvSetProcessShutdownParam);
+
+/* sndsntry.c */
+CSR_API(BaseSrvSoundSentryNotification);
+
+/* EOF */
/*
* COPYRIGHT: See COPYING in the top level directory
- * PROJECT: ReactOS/Win32 Base enviroment Subsystem Server
+ * PROJECT: ReactOS Base API Server DLL
* FILE: subsystems/win/basesrv/basesrv.h
* PURPOSE: Main header - Definitions
* PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
#include <win/base.h>
+/* Globals */
extern HANDLE BaseSrvHeap;
extern HANDLE BaseSrvSharedHeap;
extern PBASE_STATIC_SERVER_DATA BaseStaticServerData;
-/* dosdev.c */
-VOID BaseInitDefineDosDevice(VOID);
-VOID BaseCleanupDefineDosDevice(VOID);
-
-CSR_API(BaseSrvDefineDosDevice);
-
-/* proc.c */
-CSR_API(BaseSrvGetTempFile);
-CSR_API(BaseSrvCreateProcess);
-CSR_API(BaseSrvCreateThread);
-CSR_API(BaseSrvExitProcess);
-CSR_API(BaseSrvGetProcessShutdownParam);
-CSR_API(BaseSrvSetProcessShutdownParam);
-
-/* sndsntry.c */
-CSR_API(BaseSrvSoundSentryNotification);
-
#endif // __BASESRV_H__
/* EOF */
/*
* COPYRIGHT: See COPYING in the top level directory
- * PROJECT: ReactOS/Win32 Base enviroment Subsystem Server
+ * PROJECT: ReactOS Base API Server DLL
* FILE: subsystems/win/basesrv/dosdev.c
* PURPOSE: DOS Devices Management
* PROGRAMMERS: Pierre Schweitzer (pierre.schweitzer@reactos.org)
/*
* COPYRIGHT: See COPYING in the top level directory
- * PROJECT: ReactOS/Win32 Base enviroment Subsystem Server
+ * PROJECT: ReactOS Base API Server DLL
* FILE: subsystems/win/basesrv/init.c
* PURPOSE: Initialization
* PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
/* INCLUDES *******************************************************************/
#include "basesrv.h"
+#include "api.h"
#define NDEBUG
#include <debug.h>
/*
* COPYRIGHT: See COPYING in the top level directory
- * PROJECT: ReactOS/Win32 Base enviroment Subsystem Server
+ * PROJECT: ReactOS Base API Server DLL
* FILE: subsystems/win/basesrv/proc.c
* PURPOSE: Process and Thread Management
* PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org)
/*
* COPYRIGHT: See COPYING in the top level directory
- * PROJECT: ReactOS/Win32 Base enviroment Subsystem Server
+ * PROJECT: ReactOS Base API Server DLL
* FILE: subsystems/win/basesrv/sndsntry.c
* PURPOSE: Sound Sentry Notifications
* PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org)
CSR_API(SrvGetConsoleAliasExesLength);
/* coninput.c */
+CSR_API(SrvReadConsole);
CSR_API(SrvGetConsoleInput);
CSR_API(SrvWriteConsoleInput);
-CSR_API(SrvReadConsole);
CSR_API(SrvFlushConsoleInputBuffer);
CSR_API(SrvGetConsoleNumberOfInputEvents);
/* conoutput.c */
CSR_API(SrvReadConsoleOutput);
+CSR_API(SrvWriteConsole);
CSR_API(SrvWriteConsoleOutput);
CSR_API(SrvReadConsoleOutputString);
CSR_API(SrvWriteConsoleOutputString);
CSR_API(SrvFillConsoleOutput);
-CSR_API(SrvWriteConsole);
-CSR_API(SrvSetConsoleCursorPosition);
CSR_API(SrvGetConsoleCursorInfo);
CSR_API(SrvSetConsoleCursorInfo);
+CSR_API(SrvSetConsoleCursorPosition);
CSR_API(SrvSetConsoleTextAttribute);
CSR_API(SrvCreateConsoleScreenBuffer);
CSR_API(SrvGetConsoleScreenBufferInfo);
CSR_API(SrvSetConsoleScreenBufferSize);
/* console.c */
-CSR_API(SrvOpenConsole);
CSR_API(SrvAllocConsole);
CSR_API(SrvAttachConsole);
CSR_API(SrvFreeConsole);
-CSR_API(SrvSetConsoleMode);
CSR_API(SrvGetConsoleMode);
-CSR_API(SrvSetConsoleTitle);
+CSR_API(SrvSetConsoleMode);
CSR_API(SrvGetConsoleTitle);
+CSR_API(SrvSetConsoleTitle);
CSR_API(SrvGetConsoleHardwareState);
CSR_API(SrvSetConsoleHardwareState);
CSR_API(SrvGetConsoleDisplayMode);
CSR_API(SrvGetConsoleSelectionInfo);
/* handle.c */
+CSR_API(SrvOpenConsole);
CSR_API(SrvCloseHandle);
CSR_API(SrvVerifyConsoleIoHandle);
CSR_API(SrvDuplicateHandle);
/* lineinput.c */
-CSR_API(SrvGetConsoleCommandHistoryLength);
CSR_API(SrvGetConsoleCommandHistory);
+CSR_API(SrvGetConsoleCommandHistoryLength);
CSR_API(SrvExpungeConsoleCommandHistory);
CSR_API(SrvSetConsoleNumberOfCommands);
CSR_API(SrvGetConsoleHistory);
return STATUS_SUCCESS;
}
+CSR_API(SrvGetConsoleMode)
+{
+ NTSTATUS Status;
+ PCONSOLE_GETSETCONSOLEMODE ConsoleModeRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.ConsoleModeRequest;
+ PCONSOLE_IO_OBJECT Object = NULL;
+
+ Status = ConSrvGetObject(ConsoleGetPerProcessData(CsrGetClientThread()->Process),
+ ConsoleModeRequest->ConsoleHandle,
+ &Object, NULL, GENERIC_READ, TRUE, 0);
+ if (!NT_SUCCESS(Status)) return Status;
+
+ Status = STATUS_SUCCESS;
+
+ if (INPUT_BUFFER == Object->Type)
+ {
+ PCONSOLE_INPUT_BUFFER InputBuffer = (PCONSOLE_INPUT_BUFFER)Object;
+ PCONSOLE Console = InputBuffer->Header.Console;
+ DWORD ConsoleMode = InputBuffer->Mode;
+
+ if (Console->QuickEdit || Console->InsertMode)
+ {
+ // Windows does this, even if it's not documented on MSDN
+ ConsoleMode |= ENABLE_EXTENDED_FLAGS;
+
+ if (Console->QuickEdit ) ConsoleMode |= ENABLE_QUICK_EDIT_MODE;
+ if (Console->InsertMode) ConsoleMode |= ENABLE_INSERT_MODE;
+ }
+
+ ConsoleModeRequest->ConsoleMode = ConsoleMode;
+ }
+ else if (SCREEN_BUFFER == Object->Type)
+ {
+ PCONSOLE_SCREEN_BUFFER Buffer = (PCONSOLE_SCREEN_BUFFER)Object;
+ ConsoleModeRequest->ConsoleMode = Buffer->Mode;
+ }
+ else
+ {
+ Status = STATUS_INVALID_HANDLE;
+ }
+
+ ConSrvReleaseObject(Object, TRUE);
+ return Status;
+}
+
CSR_API(SrvSetConsoleMode)
{
#define CONSOLE_VALID_CONTROL_MODES ( ENABLE_EXTENDED_FLAGS | ENABLE_INSERT_MODE | ENABLE_QUICK_EDIT_MODE )
return Status;
}
-CSR_API(SrvGetConsoleMode)
+CSR_API(SrvGetConsoleTitle)
{
NTSTATUS Status;
- PCONSOLE_GETSETCONSOLEMODE ConsoleModeRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.ConsoleModeRequest;
- PCONSOLE_IO_OBJECT Object = NULL;
-
- Status = ConSrvGetObject(ConsoleGetPerProcessData(CsrGetClientThread()->Process),
- ConsoleModeRequest->ConsoleHandle,
- &Object, NULL, GENERIC_READ, TRUE, 0);
- if (!NT_SUCCESS(Status)) return Status;
-
- Status = STATUS_SUCCESS;
+ PCONSOLE_GETSETCONSOLETITLE TitleRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.TitleRequest;
+ // PCSR_PROCESS Process = CsrGetClientThread()->Process;
+ PCONSOLE Console;
+ DWORD Length;
- if (INPUT_BUFFER == Object->Type)
+ if (!CsrValidateMessageBuffer(ApiMessage,
+ (PVOID)&TitleRequest->Title,
+ TitleRequest->Length,
+ sizeof(BYTE)))
{
- PCONSOLE_INPUT_BUFFER InputBuffer = (PCONSOLE_INPUT_BUFFER)Object;
- PCONSOLE Console = InputBuffer->Header.Console;
- DWORD ConsoleMode = InputBuffer->Mode;
-
- if (Console->QuickEdit || Console->InsertMode)
- {
- // Windows does this, even if it's not documented on MSDN
- ConsoleMode |= ENABLE_EXTENDED_FLAGS;
-
- if (Console->QuickEdit ) ConsoleMode |= ENABLE_QUICK_EDIT_MODE;
- if (Console->InsertMode) ConsoleMode |= ENABLE_INSERT_MODE;
- }
-
- ConsoleModeRequest->ConsoleMode = ConsoleMode;
+ return STATUS_INVALID_PARAMETER;
}
- else if (SCREEN_BUFFER == Object->Type)
+
+ Status = ConSrvGetConsole(ConsoleGetPerProcessData(CsrGetClientThread()->Process), &Console, TRUE);
+ if (!NT_SUCCESS(Status))
{
- PCONSOLE_SCREEN_BUFFER Buffer = (PCONSOLE_SCREEN_BUFFER)Object;
- ConsoleModeRequest->ConsoleMode = Buffer->Mode;
+ DPRINT1("Can't get console\n");
+ return Status;
}
- else
+
+ /* Copy title of the console to the user title buffer */
+ if (TitleRequest->Length >= sizeof(WCHAR))
{
- Status = STATUS_INVALID_HANDLE;
+ Length = min(TitleRequest->Length - sizeof(WCHAR), Console->Title.Length);
+ memcpy(TitleRequest->Title, Console->Title.Buffer, Length);
+ TitleRequest->Title[Length / sizeof(WCHAR)] = L'\0';
}
- ConSrvReleaseObject(Object, TRUE);
- return Status;
+ TitleRequest->Length = Console->Title.Length;
+
+ ConSrvReleaseConsole(Console, TRUE);
+ return STATUS_SUCCESS;
}
CSR_API(SrvSetConsoleTitle)
return Status;
}
-CSR_API(SrvGetConsoleTitle)
-{
- NTSTATUS Status;
- PCONSOLE_GETSETCONSOLETITLE TitleRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.TitleRequest;
- // PCSR_PROCESS Process = CsrGetClientThread()->Process;
- PCONSOLE Console;
- DWORD Length;
-
- if (!CsrValidateMessageBuffer(ApiMessage,
- (PVOID)&TitleRequest->Title,
- TitleRequest->Length,
- sizeof(BYTE)))
- {
- return STATUS_INVALID_PARAMETER;
- }
-
- Status = ConSrvGetConsole(ConsoleGetPerProcessData(CsrGetClientThread()->Process), &Console, TRUE);
- if (!NT_SUCCESS(Status))
- {
- DPRINT1("Can't get console\n");
- return Status;
- }
-
- /* Copy title of the console to the user title buffer */
- if (TitleRequest->Length >= sizeof(WCHAR))
- {
- Length = min(TitleRequest->Length - sizeof(WCHAR), Console->Title.Length);
- memcpy(TitleRequest->Title, Console->Title.Buffer, Length);
- TitleRequest->Title[Length / sizeof(WCHAR)] = L'\0';
- }
-
- TitleRequest->Length = Console->Title.Length;
-
- ConSrvReleaseConsole(Console, TRUE);
- return STATUS_SUCCESS;
-}
-
/**********************************************************************
* HardwareStateProperty
*
/* PUBLIC SERVER APIS *********************************************************/
-CSR_API(SrvGetConsoleCommandHistoryLength)
-{
- PCONSOLE_GETCOMMANDHISTORYLENGTH GetCommandHistoryLengthRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.GetCommandHistoryLengthRequest;
- PCONSOLE_PROCESS_DATA ProcessData = ConsoleGetPerProcessData(CsrGetClientThread()->Process);
- PCONSOLE Console;
- NTSTATUS Status;
- PHISTORY_BUFFER Hist;
- ULONG Length = 0;
- INT i;
-
- if (!CsrValidateMessageBuffer(ApiMessage,
- (PVOID*)&GetCommandHistoryLengthRequest->ExeName.Buffer,
- GetCommandHistoryLengthRequest->ExeName.Length,
- sizeof(BYTE)))
- {
- return STATUS_INVALID_PARAMETER;
- }
-
- Status = ConSrvGetConsole(ProcessData, &Console, TRUE);
- if (NT_SUCCESS(Status))
- {
- Hist = HistoryFindBuffer(Console, &GetCommandHistoryLengthRequest->ExeName);
- if (Hist)
- {
- for (i = 0; i < Hist->NumEntries; i++)
- Length += Hist->Entries[i].Length + sizeof(WCHAR);
- }
- GetCommandHistoryLengthRequest->Length = Length;
- ConSrvReleaseConsole(Console, TRUE);
- }
- return Status;
-}
-
CSR_API(SrvGetConsoleCommandHistory)
{
PCONSOLE_GETCOMMANDHISTORY GetCommandHistoryRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.GetCommandHistoryRequest;
return Status;
}
+CSR_API(SrvGetConsoleCommandHistoryLength)
+{
+ PCONSOLE_GETCOMMANDHISTORYLENGTH GetCommandHistoryLengthRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.GetCommandHistoryLengthRequest;
+ PCONSOLE_PROCESS_DATA ProcessData = ConsoleGetPerProcessData(CsrGetClientThread()->Process);
+ PCONSOLE Console;
+ NTSTATUS Status;
+ PHISTORY_BUFFER Hist;
+ ULONG Length = 0;
+ INT i;
+
+ if (!CsrValidateMessageBuffer(ApiMessage,
+ (PVOID*)&GetCommandHistoryLengthRequest->ExeName.Buffer,
+ GetCommandHistoryLengthRequest->ExeName.Length,
+ sizeof(BYTE)))
+ {
+ return STATUS_INVALID_PARAMETER;
+ }
+
+ Status = ConSrvGetConsole(ProcessData, &Console, TRUE);
+ if (NT_SUCCESS(Status))
+ {
+ Hist = HistoryFindBuffer(Console, &GetCommandHistoryLengthRequest->ExeName);
+ if (Hist)
+ {
+ for (i = 0; i < Hist->NumEntries; i++)
+ Length += Hist->Entries[i].Length + sizeof(WCHAR);
+ }
+ GetCommandHistoryLengthRequest->Length = Length;
+ ConSrvReleaseConsole(Console, TRUE);
+ }
+ return Status;
+}
+
CSR_API(SrvExpungeConsoleCommandHistory)
{
PCONSOLE_EXPUNGECOMMANDHISTORY ExpungeCommandHistoryRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.ExpungeCommandHistoryRequest;
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS User API Server DLL
+ * FILE: win32ss/user/winsrv/api.h
+ * PURPOSE: Public server APIs definitions
+ * PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
+ */
+
+#pragma once
+
+/* init.c */
+BOOL WINAPI _UserSoundSentry(VOID);
+
+/* harderror.c */
+VOID WINAPI UserServerHardError(IN PCSR_THREAD ThreadData,
+ IN PHARDERROR_MSG Message);
+
+/* register.c */
+CSR_API(SrvRegisterServicesProcess);
+CSR_API(SrvRegisterLogonProcess);
+
+/* shutdown.c */
+CSR_API(SrvExitWindowsEx);
+
+/* EOF */
/* INCLUDES *******************************************************************/
#include "winsrv.h"
+#include "api.h"
#define NDEBUG
#include <debug.h>
#include "resource.h"
+/* Globals */
extern HINSTANCE UserServerDllInstance;
extern HANDLE UserServerHeap;
-
extern ULONG_PTR LogonProcessId;
-/* init.c */
-BOOL WINAPI _UserSoundSentry(VOID);
-
-/* harderror.c */
-VOID WINAPI UserServerHardError(IN PCSR_THREAD ThreadData,
- IN PHARDERROR_MSG Message);
-
-/* register.c */
-CSR_API(SrvRegisterServicesProcess);
-CSR_API(SrvRegisterLogonProcess);
-
-/* shutdown.c */
-CSR_API(SrvExitWindowsEx);
-
#endif // __WINSRV_H__
/* EOF */