[CONSRV/WIN32CSR]

- Move all the console subsystem from win32csr to a new server dll called consrv.dll (instead of putting it directly to winsrv.dll). It's because I want to rework on this later on.
Many things must be done in order to achieve the moving (renaming functions, etc...). Tables & symbol names come from http://j00ru.vexillium.org/csrss_list/api_list.html as usual,
but here I took the Win 2k3 ones and I added few Win 7 functions which already existed in our codebase. The other table names are guessed based on what originally existed in csrsrv
and so on. Many stubs are also missing.
Cultural remark: consrv.dll originally existed in Beta releases of Windows NT 3.1 (e.g. the October 1991 one), but was soon merged with winsrv.dll and thus, in subsequent versions of
Windows, the console subsystem is also found in winsrv.dll. See http://www.logotypes.se/NT310CSRSS.txt and http://j00ru.vexillium.org/?p=349#comment-1883. One has to wait until
Windows 7 to see it moving again to conhost.exe.

[CSRSRV]
- Add an explanation comment on what the ValidTable member in the CSR_SERVER_DLL structure is for.

svn path=/branches/ros-csrss/; revision=57597
This commit is contained in:
Hermès Bélusca-Maïto 2012-10-22 23:55:51 +00:00
parent ad62b115de
commit 608c1e0428
51 changed files with 1529 additions and 419 deletions

View file

@ -121,16 +121,17 @@ typedef struct _CSR_API_MESSAGE
#if 1
CSRSS_REGISTER_SERVICES_PROCESS RegisterServicesProcessRequest;
CSRSS_EXIT_REACTOS ExitReactosRequest;
CSRSS_CLOSE_HANDLE CloseHandleRequest;
CSRSS_VERIFY_HANDLE VerifyHandleRequest;
CSRSS_DUPLICATE_HANDLE DuplicateHandleRequest;
CSRSS_GET_INPUT_WAIT_HANDLE GetConsoleInputWaitHandle;
CSRSS_CREATE_DESKTOP CreateDesktopRequest;
CSRSS_SHOW_DESKTOP ShowDesktopRequest;
CSRSS_HIDE_DESKTOP HideDesktopRequest;
CSRSS_SET_LOGON_NOTIFY_WINDOW SetLogonNotifyWindowRequest;
CSRSS_REGISTER_LOGON_PROCESS RegisterLogonProcessRequest;
CSRSS_GET_INPUT_WAIT_HANDLE GetConsoleInputWaitHandle;
CSRSS_GET_PROCESS_LIST GetProcessListRequest;
#endif
/*****************/

View file

@ -226,7 +226,7 @@ typedef struct _CSR_SERVER_DLL
ULONG ApiBase; // ApiNumberBase
ULONG HighestApiSupported; // MaxApiNumber
PCSR_API_ROUTINE *DispatchTable;
PBOOLEAN ValidTable;
PBOOLEAN ValidTable; // Table of booleans which describe whether or not a server function call is valid when it is called via CsrCallServerFromServer.
PCHAR *NameTable;
ULONG SizeOfProcessData;
PCSR_CONNECT_CALLBACK ConnectCallback;

View file

@ -1,6 +1,3 @@
/*
* CSRSS Console management structures.
*/
#ifndef __CONMSG_H__
#define __CONMSG_H__
@ -13,76 +10,103 @@
#define CONSRV_SERVERDLL_INDEX 2
#define CONSRV_FIRST_API_NUMBER 512
/* w32 console server - move to con.h */
CSR_SERVER_DLL_INIT(ConServerDllInitialization);
// Windows NT 4 table, adapted from http://j00ru.vexillium.org/csrss_list/api_list.html#Windows_NT
// It is for testing purposes. After that I will update it to 2k3 version and add stubs.
// Windows 2k3 tables, adapted from http://j00ru.vexillium.org/csrss_list/api_list.html#Windows_2k3
// plus a little bit of Windows 7. It is for testing purposes. After that I will add stubs.
// Some names are also deduced from the subsystems/win32/csrss/csrsrv/server.c ones.
typedef enum _CONSRV_API_NUMBER
{
BasepCreateProcess = CONSRV_FIRST_API_NUMBER,
// ConsolepOpenConsole = CONSRV_FIRST_API_NUMBER,
ConsolepGetConsoleInput = CONSRV_FIRST_API_NUMBER,
ConsolepWriteConsoleInput,
ConsolepReadConsoleOutput,
ConsolepWriteConsoleOutput,
// ConsolepReadConsoleOutputString,
// ConsolepWriteConsoleOutputString,
// ConsolepFillConsoleOutput,
ConsolepGetMode,
// ConsolepGetNumberOfFonts,
ConsolepGetNumberOfInputEvents,
ConsolepGetScreenBufferInfo,
ConsolepGetCursorInfo,
// ConsolepGetMouseInfo,
// ConsolepGetFontInfo,
// ConsolepGetFontSize,
// ConsolepGetCurrentFont,
ConsolepSetMode,
ConsolepSetActiveScreenBuffer,
ConsolepFlushInputBuffer,
// ConsolepGetLargestWindowSize,
ConsolepSetScreenBufferSize,
// ConsolepSetCursorPosition,
ConsolepSetCursorInfo,
// ConsolepSetWindowInfo,
ConsolepScrollScreenBuffer,
// ConsolepSetTextAttribute,
// ConsolepSetFont,
ConsolepSetIcon,
ConsolepReadConsole,
ConsolepWriteConsole,
ConsolepDuplicateHandle,
// ConsolepGetHandleInformation,
// ConsolepSetHandleInformation,
ConsolepCloseHandle,
ConsolepVerifyIoHandle,
ConsolepAlloc,
ConsolepFree,
ConsolepGetTitle,
ConsolepSetTitle,
ConsolepCreateScreenBuffer,
// ConsolepInvalidateBitMapRect,
// ConsolepVDMOperation,
ConsolepSetCursor,
// ConsolepShowCursor,
// ConsolepMenuControl,
// ConsolepSetPalette,
// ConsolepSetDisplayMode,
// ConsolepRegisterVDM,
ConsolepGetHardwareState,
ConsolepSetHardwareState,
// ConsolepGetDisplayMode,
ConsolepAddAlias,
ConsolepGetAlias,
ConsolepGetAliasesLength,
ConsolepGetAliasExesLength,
ConsolepGetAliases,
ConsolepGetAliasExes,
ConsolepExpungeCommandHistory,
ConsolepSetNumberOfCommands,
ConsolepGetCommandHistoryLength,
ConsolepGetCommandHistory,
// ConsolepSetCommandHistoryMode,
ConsolepGetCP,
ConsolepSetCP,
// ConsolepSetKeyShortcuts,
// ConsolepSetMenuClose,
// ConsolepNotifyLastClose,
ConsolepGenerateCtrlEvent,
// ConsolepGetKeyboardLayoutName,
ConsolepGetConsoleWindow,
// ConsolepCharType,
// ConsolepSetLocalEUDC,
// ConsolepSetCursorMode,
// ConsolepGetCursorMode,
// ConsolepRegisterOS2,
// ConsolepSetOS2OemFormat,
// ConsolepGetNlsMode,
// ConsolepSetNlsMode,
// ConsolepRegisterConsoleIME,
// ConsolepUnregisterConsoleIME,
// ConsolepGetLangId,
// ConsolepAttach,
ConsolepGetSelectionInfo,
ConsolepGetProcessList,
ConsolepGetHistory,
ConsolepSetHistory,
#define WRITE_CONSOLE (0x2)
#define READ_CONSOLE (0x3)
#define ALLOC_CONSOLE (0x4)
#define FREE_CONSOLE (0x5)
#define SCREEN_BUFFER_INFO (0x7)
#define SET_CURSOR (0x8)
#define FILL_OUTPUT (0x9)
#define READ_INPUT (0xA)
#define WRITE_CONSOLE_OUTPUT_CHAR (0xB)
#define WRITE_CONSOLE_OUTPUT_ATTRIB (0xC)
#define FILL_OUTPUT_ATTRIB (0xD)
#define GET_CURSOR_INFO (0xE)
#define SET_CURSOR_INFO (0xF)
#define SET_ATTRIB (0x10)
#define GET_CONSOLE_MODE (0x11)
#define SET_CONSOLE_MODE (0x12)
#define CREATE_SCREEN_BUFFER (0x13)
#define SET_SCREEN_BUFFER (0x14)
#define SET_TITLE (0x15)
#define GET_TITLE (0x16)
#define WRITE_CONSOLE_OUTPUT (0x17)
#define FLUSH_INPUT_BUFFER (0x18)
#define SCROLL_CONSOLE_SCREEN_BUFFER (0x19)
#define READ_CONSOLE_OUTPUT_CHAR (0x1A)
#define READ_CONSOLE_OUTPUT_ATTRIB (0x1B)
#define GET_NUM_INPUT_EVENTS (0x1C)
#define PEEK_CONSOLE_INPUT (0x21)
#define READ_CONSOLE_OUTPUT (0x22)
#define WRITE_CONSOLE_INPUT (0x23)
#define GET_INPUT_HANDLE (0x24)
#define GET_OUTPUT_HANDLE (0x25)
#define SETGET_CONSOLE_HW_STATE (0x29)
#define GET_CONSOLE_WINDOW (0x2A)
#define SET_CONSOLE_ICON (0x2E)
#define GET_CONSOLE_CP (0x31)
#define SET_CONSOLE_CP (0x32)
#define GET_CONSOLE_OUTPUT_CP (0x33)
#define SET_CONSOLE_OUTPUT_CP (0x34)
#define ADD_CONSOLE_ALIAS (0x38)
#define GET_CONSOLE_ALIAS (0x39)
#define GET_ALL_CONSOLE_ALIASES (0x3A)
#define GET_ALL_CONSOLE_ALIASES_LENGTH (0x3B)
#define GET_CONSOLE_ALIASES_EXES (0x3C)
#define GET_CONSOLE_ALIASES_EXES_LENGTH (0x3D)
#define GENERATE_CTRL_EVENT (0x3E)
#define SET_SCREEN_BUFFER_SIZE (0x40)
#define GET_CONSOLE_SELECTION_INFO (0x41)
#define GET_COMMAND_HISTORY_LENGTH (0x42)
#define GET_COMMAND_HISTORY (0x43)
#define EXPUNGE_COMMAND_HISTORY (0x44)
#define SET_HISTORY_NUMBER_COMMANDS (0x45)
#define GET_HISTORY_INFO (0x46)
#define SET_HISTORY_INFO (0x47)
BasepMaxApiNumber
ConsolepMaxApiNumber
} CONSRV_API_NUMBER, *PCONSRV_API_NUMBER;
#define CSRSS_MAX_WRITE_CONSOLE (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE))
#define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_CHAR (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_CHAR))
#define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_ATTRIB (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB))

View file

@ -0,0 +1,31 @@
include_directories(
${REACTOS_SOURCE_DIR}/include/reactos/subsys
${REACTOS_SOURCE_DIR}/dll/cpl/console)
spec2def(consrv.dll consrv.spec)
list(APPEND SOURCE
alias.c
coninput.c
conoutput.c
console.c
guiconsole.c
handle.c
init.c
lineinput.c
server.c
tuiconsole.c
consrv.rc
${CMAKE_CURRENT_BINARY_DIR}/consrv.def)
add_library(consrv SHARED ${SOURCE})
target_link_libraries(consrv ${PSEH_LIB})
set_module_type(consrv nativedll) # win32dll
add_importlibs(consrv ntdll csrsrv)
add_dependencies(consrv bugcodes)
add_cd_file(TARGET consrv DESTINATION reactos/system32 FOR all)

View file

@ -55,7 +55,7 @@ IntCreateAliasHeader(LPCWSTR lpExeName)
PALIAS_HEADER Entry;
UINT dwLength = wcslen(lpExeName) + 1;
Entry = RtlAllocateHeap(Win32CsrApiHeap, 0, sizeof(ALIAS_HEADER) + sizeof(WCHAR) * dwLength);
Entry = RtlAllocateHeap(ConSrvHeap, 0, sizeof(ALIAS_HEADER) + sizeof(WCHAR) * dwLength);
if (!Entry)
return Entry;
@ -142,7 +142,7 @@ IntCreateAliasEntry(LPCWSTR lpSource, LPCWSTR lpTarget)
dwSource = wcslen(lpSource) + 1;
dwTarget = wcslen(lpTarget) + 1;
Entry = RtlAllocateHeap(Win32CsrApiHeap, 0, sizeof(ALIAS_ENTRY) + sizeof(WCHAR) * (dwSource + dwTarget));
Entry = RtlAllocateHeap(ConSrvHeap, 0, sizeof(ALIAS_ENTRY) + sizeof(WCHAR) * (dwSource + dwTarget));
if (!Entry)
return Entry;
@ -254,7 +254,7 @@ IntDeleteAliasEntry(PALIAS_HEADER Header, PALIAS_ENTRY Entry)
if (CurEntry == Entry)
{
*LastLink = Entry->Next;
RtlFreeHeap(Win32CsrApiHeap, 0, Entry);
RtlFreeHeap(ConSrvHeap, 0, Entry);
return;
}
LastLink = &CurEntry->Next;
@ -271,13 +271,13 @@ IntDeleteAllAliases(PALIAS_HEADER RootHeader)
for (Entry = Header->Data; Entry; Entry = NextEntry)
{
NextEntry = Entry->Next;
RtlFreeHeap(Win32CsrApiHeap, 0, Entry);
RtlFreeHeap(ConSrvHeap, 0, Entry);
}
RtlFreeHeap(Win32CsrApiHeap, 0, Header);
RtlFreeHeap(ConSrvHeap, 0, Header);
}
}
CSR_API(CsrAddConsoleAlias)
CSR_API(SrvAddConsoleAlias)
{
PCSRSS_CONSOLE Console;
PALIAS_HEADER Header;
@ -295,7 +295,7 @@ CSR_API(CsrAddConsoleAlias)
lpExeName = (WCHAR*)((ULONG_PTR)ApiMessage + sizeof(CSR_API_MESSAGE) + ApiMessage->Data.AddConsoleAlias.SourceLength * sizeof(WCHAR));
lpTarget = (ApiMessage->Data.AddConsoleAlias.TargetLength != 0 ? lpExeName + ApiMessage->Data.AddConsoleAlias.ExeLength : NULL);
DPRINT("CsrAddConsoleAlias entered ApiMessage %p lpSource %p lpExeName %p lpTarget %p\n", ApiMessage, lpSource, lpExeName, lpTarget);
DPRINT("SrvAddConsoleAlias entered ApiMessage %p lpSource %p lpExeName %p lpTarget %p\n", ApiMessage, lpSource, lpExeName, lpTarget);
if (lpExeName == NULL || lpSource == NULL)
{
@ -349,7 +349,7 @@ CSR_API(CsrAddConsoleAlias)
return STATUS_SUCCESS;
}
CSR_API(CsrGetConsoleAlias)
CSR_API(SrvGetConsoleAlias)
{
PCSRSS_CONSOLE Console;
PALIAS_HEADER Header;
@ -364,7 +364,7 @@ CSR_API(CsrGetConsoleAlias)
lpTarget = ApiMessage->Data.GetConsoleAlias.TargetBuffer;
DPRINT("CsrGetConsoleAlias entered lpExeName %p lpSource %p TargetBuffer %p TargetBufferLength %u\n",
DPRINT("SrvGetConsoleAlias entered lpExeName %p lpSource %p TargetBuffer %p TargetBufferLength %u\n",
lpExeName, lpSource, lpTarget, ApiMessage->Data.GetConsoleAlias.TargetBufferLength);
if (ApiMessage->Data.GetConsoleAlias.ExeLength == 0 || lpTarget == NULL ||
@ -413,7 +413,7 @@ CSR_API(CsrGetConsoleAlias)
return STATUS_SUCCESS;
}
CSR_API(CsrGetAllConsoleAliases)
CSR_API(SrvGetConsoleAliases)
{
PCSRSS_CONSOLE Console;
ULONG BytesWritten;
@ -461,7 +461,7 @@ CSR_API(CsrGetAllConsoleAliases)
return STATUS_SUCCESS;
}
CSR_API(CsrGetAllConsoleAliasesLength)
CSR_API(SrvGetConsoleAliasesLength)
{
PCSRSS_CONSOLE Console;
PALIAS_HEADER Header;
@ -491,13 +491,13 @@ CSR_API(CsrGetAllConsoleAliasesLength)
return STATUS_SUCCESS;
}
CSR_API(CsrGetConsoleAliasesExes)
CSR_API(SrvGetConsoleAliasExes)
{
PCSRSS_CONSOLE Console;
UINT BytesWritten;
UINT ExesLength;
DPRINT("CsrGetConsoleAliasesExes entered\n");
DPRINT("SrvGetConsoleAliasExes entered\n");
ApiMessage->Status = ConioConsoleFromProcessData(CsrGetClientThread()->Process, &Console);
if (!NT_SUCCESS(ApiMessage->Status))
@ -537,10 +537,10 @@ CSR_API(CsrGetConsoleAliasesExes)
return STATUS_SUCCESS;
}
CSR_API(CsrGetConsoleAliasesExesLength)
CSR_API(SrvGetConsoleAliasExesLength)
{
PCSRSS_CONSOLE Console;
DPRINT("CsrGetConsoleAliasesExesLength entered\n");
DPRINT("SrvGetConsoleAliasExesLength entered\n");
ApiMessage->Status = ConioConsoleFromProcessData(CsrGetClientThread()->Process, &Console);
if (NT_SUCCESS(ApiMessage->Status))

View file

@ -1,5 +1,5 @@
/*
* reactos/subsys/csrss/win32csr/conio.c
* reactos/win32ss/user/consrv/conio.c
*
* Console I/O functions
*
@ -22,7 +22,7 @@
/* FUNCTIONS *****************************************************************/
CSR_API(CsrReadConsole)
CSR_API(SrvReadConsole)
{
PLIST_ENTRY CurrentEntry;
ConsoleInput *Input;
@ -34,7 +34,7 @@ CSR_API(CsrReadConsole)
PCSRSS_CONSOLE Console;
NTSTATUS Status;
DPRINT("CsrReadConsole\n");
DPRINT("SrvReadConsole\n");
CharSize = (ApiMessage->Data.ReadConsoleRequest.Unicode ? sizeof(WCHAR) : sizeof(CHAR));
@ -63,7 +63,7 @@ CSR_API(CsrReadConsole)
{
/* Starting a new line */
Console->LineMaxSize = max(256, nNumberOfCharsToRead);
Console->LineBuffer = HeapAlloc(Win32CsrApiHeap, 0, Console->LineMaxSize * sizeof(WCHAR));
Console->LineBuffer = HeapAlloc(ConSrvHeap, 0, Console->LineMaxSize * sizeof(WCHAR));
if (Console->LineBuffer == NULL)
{
Status = STATUS_NO_MEMORY;
@ -103,7 +103,7 @@ CSR_API(CsrReadConsole)
LineInputKeyDown(Console, &Input->InputEvent.Event.KeyEvent);
ApiMessage->Data.ReadConsoleRequest.ControlKeyState = Input->InputEvent.Event.KeyEvent.dwControlKeyState;
}
HeapFree(Win32CsrApiHeap, 0, Input);
HeapFree(ConSrvHeap, 0, Input);
}
/* Check if we have a complete line to read from */
@ -120,7 +120,7 @@ CSR_API(CsrReadConsole)
if (Console->LinePos == Console->LineSize)
{
/* Entire line has been read */
HeapFree(Win32CsrApiHeap, 0, Console->LineBuffer);
HeapFree(ConSrvHeap, 0, Console->LineBuffer);
Console->LineBuffer = NULL;
}
Status = STATUS_SUCCESS;
@ -151,7 +151,7 @@ CSR_API(CsrReadConsole)
ConsoleInputUnicodeCharToAnsiChar(Console, &Buffer[i++], &Char);
Status = STATUS_SUCCESS; /* did read something */
}
HeapFree(Win32CsrApiHeap, 0, Input);
HeapFree(ConSrvHeap, 0, Input);
}
}
done:
@ -208,7 +208,7 @@ ConioProcessChar(PCSRSS_CONSOLE Console,
}
/* add event to the queue */
ConInRec = RtlAllocateHeap(Win32CsrApiHeap, 0, sizeof(ConsoleInput));
ConInRec = RtlAllocateHeap(ConSrvHeap, 0, sizeof(ConsoleInput));
if (ConInRec == NULL)
return STATUS_INSUFFICIENT_RESOURCES;
ConInRec->InputEvent = *InputEvent;
@ -465,7 +465,7 @@ CSR_API(CsrReadInputEvent)
Done = TRUE;
}
HeapFree(Win32CsrApiHeap, 0, Input);
HeapFree(ConSrvHeap, 0, Input);
}
if (Done)
@ -483,14 +483,14 @@ CSR_API(CsrReadInputEvent)
return Status;
}
CSR_API(CsrFlushInputBuffer)
CSR_API(SrvFlushConsoleInputBuffer)
{
PLIST_ENTRY CurrentEntry;
PCSRSS_CONSOLE Console;
ConsoleInput* Input;
NTSTATUS Status;
DPRINT("CsrFlushInputBuffer\n");
DPRINT("SrvFlushConsoleInputBuffer\n");
Status = ConioLockConsole(CsrGetClientThread()->Process,
ApiMessage->Data.FlushInputBufferRequest.ConsoleInput,
@ -507,7 +507,7 @@ CSR_API(CsrFlushInputBuffer)
CurrentEntry = RemoveHeadList(&Console->InputEvents);
Input = CONTAINING_RECORD(CurrentEntry, ConsoleInput, ListEntry);
/* Destroy the event */
HeapFree(Win32CsrApiHeap, 0, Input);
HeapFree(ConSrvHeap, 0, Input);
}
ResetEvent(Console->ActiveEvent);
@ -516,14 +516,14 @@ CSR_API(CsrFlushInputBuffer)
return STATUS_SUCCESS;
}
CSR_API(CsrGetNumberOfConsoleInputEvents)
CSR_API(SrvGetConsoleNumberOfInputEvents)
{
NTSTATUS Status;
PCSRSS_CONSOLE Console;
PLIST_ENTRY CurrentItem;
DWORD NumEvents;
DPRINT("CsrGetNumberOfConsoleInputEvents\n");
DPRINT("SrvGetConsoleNumberOfInputEvents\n");
Status = ConioLockConsole(CsrGetClientThread()->Process, ApiMessage->Data.GetNumInputEventsRequest.ConsoleHandle, &Console, GENERIC_READ);
if (! NT_SUCCESS(Status))
@ -548,7 +548,7 @@ CSR_API(CsrGetNumberOfConsoleInputEvents)
return STATUS_SUCCESS;
}
CSR_API(CsrPeekConsoleInput)
CSR_API(SrvGetConsoleInput)
{
NTSTATUS Status;
PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
@ -559,7 +559,7 @@ CSR_API(CsrPeekConsoleInput)
ConsoleInput* Item;
UINT NumItems;
DPRINT("CsrPeekConsoleInput\n");
DPRINT("SrvGetConsoleInput\n");
Status = ConioLockConsole(ProcessData, ApiMessage->Data.GetNumInputEventsRequest.ConsoleHandle, &Console, GENERIC_READ);
if(! NT_SUCCESS(Status))
@ -606,7 +606,7 @@ CSR_API(CsrPeekConsoleInput)
return STATUS_SUCCESS;
}
CSR_API(CsrWriteConsoleInput)
CSR_API(SrvWriteConsoleInput)
{
PINPUT_RECORD InputRecord;
PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
@ -615,7 +615,7 @@ CSR_API(CsrWriteConsoleInput)
DWORD Length;
DWORD i;
DPRINT("CsrWriteConsoleInput\n");
DPRINT("SrvWriteConsoleInput\n");
Status = ConioLockConsole(ProcessData, ApiMessage->Data.WriteConsoleInputRequest.ConsoleHandle, &Console, GENERIC_WRITE);
if (! NT_SUCCESS(Status))

View file

@ -1,4 +1,4 @@
/* $Id$
/* $Id: conio.h 55617 2012-02-15 20:29:08Z ion $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
@ -149,22 +149,6 @@ VOID FASTCALL ConioUnpause(PCSRSS_CONSOLE Console, UINT Flags);
VOID FASTCALL ConioConsoleCtrlEvent(DWORD Event, PCSR_PROCESS ProcessData);
VOID FASTCALL ConioConsoleCtrlEventTimeout(DWORD Event, PCSR_PROCESS ProcessData,
DWORD Timeout);
CSR_API(CsrAllocConsole);
CSR_API(CsrFreeConsole);
CSR_API(CsrSetConsoleMode);
CSR_API(CsrGetConsoleMode);
CSR_API(CsrSetTitle);
CSR_API(CsrGetTitle);
CSR_API(CsrHardwareStateProperty);
CSR_API(CsrGetConsoleWindow);
CSR_API(CsrSetConsoleIcon);
CSR_API(CsrGetConsoleCodePage);
CSR_API(CsrSetConsoleCodePage);
CSR_API(CsrGetConsoleOutputCodePage);
CSR_API(CsrSetConsoleOutputCodePage);
CSR_API(CsrGetProcessList);
CSR_API(CsrGenerateCtrlEvent);
CSR_API(CsrGetConsoleSelectionInfo);
/* coninput.c */
#define ConioLockConsole(ProcessData, Handle, Ptr, Access) \
@ -172,12 +156,6 @@ CSR_API(CsrGetConsoleSelectionInfo);
#define ConioUnlockConsole(Console) \
Win32CsrUnlockObject((Object_t *) Console)
void WINAPI ConioProcessKey(MSG *msg, PCSRSS_CONSOLE Console, BOOL TextMode);
CSR_API(CsrReadConsole);
CSR_API(CsrReadInputEvent);
CSR_API(CsrFlushInputBuffer);
CSR_API(CsrGetNumberOfConsoleInputEvents);
CSR_API(CsrPeekConsoleInput);
CSR_API(CsrWriteConsoleInput);
/* conoutput.c */
#define ConioRectHeight(Rect) \
@ -196,43 +174,12 @@ NTSTATUS FASTCALL CsrInitConsoleScreenBuffer(PCSRSS_CONSOLE Console, PCSRSS_SCRE
VOID WINAPI ConioDeleteScreenBuffer(PCSRSS_SCREEN_BUFFER Buffer);
DWORD FASTCALL ConioEffectiveCursorSize(PCSRSS_CONSOLE Console, DWORD Scale);
CSR_API(CsrWriteConsole);
CSR_API(CsrGetScreenBufferInfo);
CSR_API(CsrSetCursor);
CSR_API(CsrWriteConsoleOutputChar);
CSR_API(CsrFillOutputChar);
CSR_API(CsrWriteConsoleOutputAttrib);
CSR_API(CsrFillOutputAttrib);
CSR_API(CsrGetCursorInfo);
CSR_API(CsrSetCursorInfo);
CSR_API(CsrSetTextAttrib);
CSR_API(CsrCreateScreenBuffer);
CSR_API(CsrSetScreenBuffer);
CSR_API(CsrWriteConsoleOutput);
CSR_API(CsrScrollConsoleScreenBuffer);
CSR_API(CsrReadConsoleOutputChar);
CSR_API(CsrReadConsoleOutputAttrib);
CSR_API(CsrReadConsoleOutput);
CSR_API(CsrSetScreenBufferSize);
/* alias.c */
VOID IntDeleteAllAliases(struct tagALIAS_HEADER *RootHeader);
CSR_API(CsrAddConsoleAlias);
CSR_API(CsrGetConsoleAlias);
CSR_API(CsrGetAllConsoleAliases);
CSR_API(CsrGetAllConsoleAliasesLength);
CSR_API(CsrGetConsoleAliasesExes);
CSR_API(CsrGetConsoleAliasesExesLength);
/* lineinput.c */
struct tagHISTORY_BUFFER;
VOID FASTCALL HistoryDeleteBuffer(struct tagHISTORY_BUFFER *Hist);
CSR_API(CsrGetCommandHistoryLength);
CSR_API(CsrGetCommandHistory);
CSR_API(CsrExpungeCommandHistory);
CSR_API(CsrSetHistoryNumberCommands);
CSR_API(CsrGetHistoryInfo);
CSR_API(CsrSetHistoryInfo);
VOID FASTCALL LineInputKeyDown(PCSRSS_CONSOLE Console, KEY_EVENT_RECORD *KeyEvent);
/* EOF */

View file

@ -1,5 +1,5 @@
/*
* reactos/subsys/csrss/win32csr/conio.c
* reactos/win32ss/user/consrv/conio.c
*
* Console I/O functions
*
@ -63,7 +63,7 @@ CsrInitConsoleScreenBuffer(PCSRSS_CONSOLE Console,
Buffer->ShowX = 0;
Buffer->ShowY = 0;
Buffer->VirtualY = 0;
Buffer->Buffer = HeapAlloc(Win32CsrApiHeap, HEAP_ZERO_MEMORY, Buffer->MaxX * Buffer->MaxY * 2);
Buffer->Buffer = HeapAlloc(ConSrvHeap, HEAP_ZERO_MEMORY, Buffer->MaxX * Buffer->MaxY * 2);
if (NULL == Buffer->Buffer)
{
return STATUS_INSUFFICIENT_RESOURCES;
@ -354,7 +354,7 @@ ConioMoveRegion(PCSRSS_SCREEN_BUFFER ScreenBuffer,
}
}
CSR_API(CsrWriteConsole)
CSR_API(SrvWriteConsole)
{
NTSTATUS Status;
PCHAR Buffer;
@ -365,7 +365,7 @@ CSR_API(CsrWriteConsole)
ULONG Length;
ULONG CharSize = (ApiMessage->Data.WriteConsoleRequest.Unicode ? sizeof(WCHAR) : sizeof(CHAR));
DPRINT("CsrWriteConsole\n");
DPRINT("SrvWriteConsole\n");
if (ApiMessage->Header.u1.s1.TotalLength
< CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE)
@ -455,8 +455,8 @@ ConioDeleteScreenBuffer(PCSRSS_SCREEN_BUFFER Buffer)
}
}
HeapFree(Win32CsrApiHeap, 0, Buffer->Buffer);
HeapFree(Win32CsrApiHeap, 0, Buffer);
HeapFree(ConSrvHeap, 0, Buffer->Buffer);
HeapFree(ConSrvHeap, 0, Buffer);
}
VOID FASTCALL
@ -469,14 +469,14 @@ ConioDrawConsole(PCSRSS_CONSOLE Console)
ConioDrawRegion(Console, &Region);
}
CSR_API(CsrGetScreenBufferInfo)
CSR_API(SrvGetConsoleScreenBufferInfo) // CsrGetScreenBufferInfo
{
NTSTATUS Status;
PCSRSS_CONSOLE Console;
PCSRSS_SCREEN_BUFFER Buff;
PCONSOLE_SCREEN_BUFFER_INFO pInfo;
DPRINT("CsrGetScreenBufferInfo\n");
DPRINT("SrvGetConsoleScreenBufferInfo\n");
Status = ConioLockScreenBuffer(CsrGetClientThread()->Process, ApiMessage->Data.ScreenBufferInfoRequest.ConsoleHandle, &Buff, GENERIC_READ);
if (! NT_SUCCESS(Status))
@ -501,7 +501,7 @@ CSR_API(CsrGetScreenBufferInfo)
return STATUS_SUCCESS;
}
CSR_API(CsrSetCursor)
CSR_API(SrvSetConsoleCursor)
{
NTSTATUS Status;
PCSRSS_CONSOLE Console;
@ -509,7 +509,7 @@ CSR_API(CsrSetCursor)
LONG OldCursorX, OldCursorY;
LONG NewCursorX, NewCursorY;
DPRINT("CsrSetCursor\n");
DPRINT("SrvSetConsoleCursor\n");
Status = ConioLockScreenBuffer(CsrGetClientThread()->Process, ApiMessage->Data.SetCursorRequest.ConsoleHandle, &Buff, GENERIC_WRITE);
if (! NT_SUCCESS(Status))
@ -851,12 +851,12 @@ ConioEffectiveCursorSize(PCSRSS_CONSOLE Console, DWORD Scale)
return Size;
}
CSR_API(CsrGetCursorInfo)
CSR_API(SrvGetConsoleCursorInfo)
{
PCSRSS_SCREEN_BUFFER Buff;
NTSTATUS Status;
DPRINT("CsrGetCursorInfo\n");
DPRINT("SrvGetConsoleCursorInfo\n");
Status = ConioLockScreenBuffer(CsrGetClientThread()->Process, ApiMessage->Data.GetCursorInfoRequest.ConsoleHandle, &Buff, GENERIC_READ);
if (! NT_SUCCESS(Status))
@ -870,7 +870,7 @@ CSR_API(CsrGetCursorInfo)
return STATUS_SUCCESS;
}
CSR_API(CsrSetCursorInfo)
CSR_API(SrvSetConsoleCursorInfo)
{
PCSRSS_CONSOLE Console;
PCSRSS_SCREEN_BUFFER Buff;
@ -878,7 +878,7 @@ CSR_API(CsrSetCursorInfo)
BOOL Visible;
NTSTATUS Status;
DPRINT("CsrSetCursorInfo\n");
DPRINT("SrvSetConsoleCursorInfo\n");
Status = ConioLockScreenBuffer(CsrGetClientThread()->Process, ApiMessage->Data.SetCursorInfoRequest.ConsoleHandle, &Buff, GENERIC_WRITE);
if (! NT_SUCCESS(Status))
@ -946,14 +946,14 @@ CSR_API(CsrSetTextAttrib)
return STATUS_SUCCESS;
}
CSR_API(CsrCreateScreenBuffer)
CSR_API(SrvCreateConsoleScreenBuffer)
{
PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
PCSRSS_CONSOLE Console;
PCSRSS_SCREEN_BUFFER Buff;
NTSTATUS Status;
DPRINT("CsrCreateScreenBuffer\n");
DPRINT("SrvCreateConsoleScreenBuffer\n");
RtlEnterCriticalSection(&ProcessData->HandleTableLock);
Status = ConioConsoleFromProcessData(ProcessData, &Console);
@ -962,7 +962,7 @@ CSR_API(CsrCreateScreenBuffer)
return Status;
}
Buff = HeapAlloc(Win32CsrApiHeap, HEAP_ZERO_MEMORY, sizeof(CSRSS_SCREEN_BUFFER));
Buff = HeapAlloc(ConSrvHeap, HEAP_ZERO_MEMORY, sizeof(CSRSS_SCREEN_BUFFER));
if (Buff != NULL)
{
@ -1010,13 +1010,13 @@ CSR_API(CsrCreateScreenBuffer)
return Status;
}
CSR_API(CsrSetScreenBuffer)
CSR_API(SrvSetConsoleActiveScreenBuffer)
{
NTSTATUS Status;
PCSRSS_CONSOLE Console;
PCSRSS_SCREEN_BUFFER Buff;
DPRINT("CsrSetScreenBuffer\n");
DPRINT("SrvSetConsoleActiveScreenBuffer\n");
Status = ConioLockScreenBuffer(CsrGetClientThread()->Process, ApiMessage->Data.SetScreenBufferRequest.OutputHandle, &Buff, GENERIC_WRITE);
if (! NT_SUCCESS(Status))
@ -1046,7 +1046,7 @@ CSR_API(CsrSetScreenBuffer)
return STATUS_SUCCESS;
}
CSR_API(CsrWriteConsoleOutput)
CSR_API(SrvWriteConsoleOutput)
{
SHORT i, X, Y, SizeX, SizeY;
PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
@ -1061,7 +1061,7 @@ CSR_API(CsrWriteConsoleOutput)
NTSTATUS Status;
PBYTE Ptr;
DPRINT("CsrWriteConsoleOutput\n");
DPRINT("SrvWriteConsoleOutput\n");
Status = ConioLockScreenBuffer(ProcessData,
ApiMessage->Data.WriteConsoleOutputRequest.ConsoleHandle,
@ -1133,7 +1133,7 @@ CSR_API(CsrWriteConsoleOutput)
return STATUS_SUCCESS;
}
CSR_API(CsrScrollConsoleScreenBuffer)
CSR_API(SrvScrollConsoleScreenBuffer)
{
PCSRSS_CONSOLE Console;
PCSRSS_SCREEN_BUFFER Buff;
@ -1150,7 +1150,7 @@ CSR_API(CsrScrollConsoleScreenBuffer)
CHAR_INFO Fill;
CHAR FillChar;
DPRINT("CsrScrollConsoleScreenBuffer\n");
DPRINT("SrvScrollConsoleScreenBuffer\n");
ConsoleHandle = ApiMessage->Data.ScrollConsoleScreenBufferRequest.ConsoleHandle;
UseClipRectangle = ApiMessage->Data.ScrollConsoleScreenBufferRequest.UseClipRectangle;
@ -1295,7 +1295,6 @@ CSR_API(CsrReadConsoleOutputChar)
return STATUS_SUCCESS;
}
CSR_API(CsrReadConsoleOutputAttrib)
{
NTSTATUS Status;
@ -1355,7 +1354,7 @@ CSR_API(CsrReadConsoleOutputAttrib)
return STATUS_SUCCESS;
}
CSR_API(CsrReadConsoleOutput)
CSR_API(SrvReadConsoleOutput)
{
PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
PCHAR_INFO CharInfo;
@ -1372,7 +1371,7 @@ CSR_API(CsrReadConsoleOutput)
LONG X, Y;
UINT CodePage;
DPRINT("CsrReadConsoleOutput\n");
DPRINT("SrvReadConsoleOutput\n");
Status = ConioLockScreenBuffer(ProcessData, ApiMessage->Data.ReadConsoleOutputRequest.ConsoleHandle, &Buff, GENERIC_READ);
if (! NT_SUCCESS(Status))
@ -1439,7 +1438,7 @@ CSR_API(CsrReadConsoleOutput)
return STATUS_SUCCESS;
}
CSR_API(CsrSetScreenBufferSize)
CSR_API(SrvSetConsoleScreenBufferSize)
{
NTSTATUS Status;
PCSRSS_CONSOLE Console;

View file

@ -1,5 +1,5 @@
/*
* reactos/subsys/csrss/win32csr/conio.c
* reactos/win32ss/user/consrv/conio.c
*
* Console I/O functions
*
@ -117,7 +117,7 @@ CsrInitConsole(PCSRSS_CONSOLE Console, int ShowCmd)
GuiMode = DtbgIsDesktopVisible();
/* allocate console screen buffer */
NewBuffer = HeapAlloc(Win32CsrApiHeap, HEAP_ZERO_MEMORY, sizeof(CSRSS_SCREEN_BUFFER));
NewBuffer = HeapAlloc(ConSrvHeap, HEAP_ZERO_MEMORY, sizeof(CSRSS_SCREEN_BUFFER));
if (NULL == NewBuffer)
{
RtlFreeUnicodeString(&Console->Title);
@ -145,7 +145,7 @@ CsrInitConsole(PCSRSS_CONSOLE Console, int ShowCmd)
Status = GuiInitConsole(Console, ShowCmd);
if (! NT_SUCCESS(Status))
{
HeapFree(Win32CsrApiHeap,0, NewBuffer);
HeapFree(ConSrvHeap,0, NewBuffer);
RtlFreeUnicodeString(&Console->Title);
DeleteCriticalSection(&Console->Lock);
CloseHandle(Console->ActiveEvent);
@ -161,7 +161,7 @@ CsrInitConsole(PCSRSS_CONSOLE Console, int ShowCmd)
RtlFreeUnicodeString(&Console->Title);
DeleteCriticalSection(&Console->Lock);
CloseHandle(Console->ActiveEvent);
HeapFree(Win32CsrApiHeap, 0, NewBuffer);
HeapFree(ConSrvHeap, 0, NewBuffer);
DPRINT1("CsrInitConsoleScreenBuffer: failed\n");
return Status;
}
@ -172,14 +172,14 @@ CsrInitConsole(PCSRSS_CONSOLE Console, int ShowCmd)
return STATUS_SUCCESS;
}
CSR_API(CsrAllocConsole)
CSR_API(SrvAllocConsole)
{
PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
PCSRSS_CONSOLE Console;
NTSTATUS Status = STATUS_SUCCESS;
BOOLEAN NewConsole = FALSE;
DPRINT("CsrAllocConsole\n");
DPRINT("SrvAllocConsole\n");
RtlEnterCriticalSection(&ProcessData->HandleTableLock);
if (ProcessData->Console)
@ -203,7 +203,7 @@ CSR_API(CsrAllocConsole)
{
/* Allocate a console structure */
NewConsole = TRUE;
Console = HeapAlloc(Win32CsrApiHeap, HEAP_ZERO_MEMORY, sizeof(CSRSS_CONSOLE));
Console = HeapAlloc(ConSrvHeap, HEAP_ZERO_MEMORY, sizeof(CSRSS_CONSOLE));
if (NULL == Console)
{
DPRINT1("Not enough memory for console\n");
@ -219,7 +219,7 @@ CSR_API(CsrAllocConsole)
if (!NT_SUCCESS(Status))
{
DPRINT1("Console init failed\n");
HeapFree(Win32CsrApiHeap, 0, Console);
HeapFree(ConSrvHeap, 0, Console);
RtlLeaveCriticalSection(&ProcessData->HandleTableLock);
return Status;
}
@ -312,7 +312,7 @@ CSR_API(CsrAllocConsole)
return STATUS_SUCCESS;
}
CSR_API(CsrFreeConsole)
CSR_API(SrvFreeConsole)
{
Win32CsrReleaseConsole(CsrGetClientThread()->Process);
return STATUS_SUCCESS;
@ -332,12 +332,12 @@ ConioDeleteConsole(Object_t *Object)
Event = (ConsoleInput *) Console->InputEvents.Flink;
Console->InputEvents.Flink = Console->InputEvents.Flink->Flink;
Console->InputEvents.Flink->Flink->Blink = &Console->InputEvents;
HeapFree(Win32CsrApiHeap, 0, Event);
HeapFree(ConSrvHeap, 0, Event);
}
ConioCleanupConsole(Console);
if (Console->LineBuffer)
RtlFreeHeap(Win32CsrApiHeap, 0, Console->LineBuffer);
RtlFreeHeap(ConSrvHeap, 0, Console->LineBuffer);
while (!IsListEmpty(&Console->HistoryBuffers))
HistoryDeleteBuffer((struct tagHISTORY_BUFFER *)Console->HistoryBuffers.Flink);
@ -352,7 +352,7 @@ ConioDeleteConsole(Object_t *Object)
DeleteCriticalSection(&Console->Lock);
RtlFreeUnicodeString(&Console->Title);
IntDeleteAllAliases(Console->Aliases);
HeapFree(Win32CsrApiHeap, 0, Console);
HeapFree(ConSrvHeap, 0, Console);
}
VOID WINAPI
@ -383,13 +383,13 @@ ConioUnpause(PCSRSS_CONSOLE Console, UINT Flags)
}
}
CSR_API(CsrSetConsoleMode)
CSR_API(SrvSetConsoleMode)
{
NTSTATUS Status;
PCSRSS_CONSOLE Console;
PCSRSS_SCREEN_BUFFER Buff;
DPRINT("CsrSetConsoleMode\n");
DPRINT("SrvSetConsoleMode\n");
Status = Win32CsrLockObject(CsrGetClientThread()->Process,
ApiMessage->Data.SetConsoleModeRequest.ConsoleHandle,
@ -418,13 +418,13 @@ CSR_API(CsrSetConsoleMode)
return Status;
}
CSR_API(CsrGetConsoleMode)
CSR_API(SrvGetConsoleMode)
{
NTSTATUS Status;
PCSRSS_CONSOLE Console;
PCSRSS_SCREEN_BUFFER Buff; /* gee, I really wish I could use an anonymous union here */
DPRINT("CsrGetConsoleMode\n");
DPRINT("SrvGetConsoleMode\n");
Status = Win32CsrLockObject(CsrGetClientThread()->Process, ApiMessage->Data.GetConsoleModeRequest.ConsoleHandle,
(Object_t **) &Console, GENERIC_READ, 0);
@ -451,14 +451,14 @@ CSR_API(CsrGetConsoleMode)
return Status;
}
CSR_API(CsrSetTitle)
CSR_API(SrvSetConsoleTitle)
{
NTSTATUS Status;
PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
PCSRSS_CONSOLE Console;
PWCHAR Buffer;
DPRINT("CsrSetTitle\n");
DPRINT("SrvSetConsoleTitle\n");
if (!Win32CsrValidateBuffer(ProcessData, ApiMessage->Data.SetTitleRequest.Title,
ApiMessage->Data.SetTitleRequest.Length, 1))
@ -496,14 +496,14 @@ CSR_API(CsrSetTitle)
return Status;
}
CSR_API(CsrGetTitle)
CSR_API(SrvGetConsoleTitle)
{
NTSTATUS Status;
PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
PCSRSS_CONSOLE Console;
DWORD Length;
DPRINT("CsrGetTitle\n");
DPRINT("SrvGetConsoleTitle\n");
if (!Win32CsrValidateBuffer(ProcessData, ApiMessage->Data.GetTitleRequest.Title,
@ -548,7 +548,7 @@ CSR_API(CsrGetTitle)
* with NT's, but values are not.
*/
static NTSTATUS FASTCALL
SetConsoleHardwareState (PCSRSS_CONSOLE Console, DWORD ConsoleHwState)
SetConsoleHardwareState(PCSRSS_CONSOLE Console, DWORD ConsoleHwState)
{
DPRINT1("Console Hardware State: %d\n", ConsoleHwState);
@ -568,12 +568,12 @@ SetConsoleHardwareState (PCSRSS_CONSOLE Console, DWORD ConsoleHwState)
return STATUS_INVALID_PARAMETER_3; /* Client: (handle, set_get, [mode]) */
}
CSR_API(CsrHardwareStateProperty)
CSR_API(SrvGetConsoleHardwareState)
{
PCSRSS_CONSOLE Console;
NTSTATUS Status;
DPRINT("CsrHardwareStateProperty\n");
DPRINT("SrvGetConsoleHardwareState\n");
Status = ConioLockConsole(CsrGetClientThread()->Process,
ApiMessage->Data.ConsoleHardwareStateRequest.ConsoleHandle,
@ -606,12 +606,50 @@ CSR_API(CsrHardwareStateProperty)
return Status;
}
CSR_API(CsrGetConsoleWindow)
CSR_API(SrvSetConsoleHardwareState)
{
PCSRSS_CONSOLE Console;
NTSTATUS Status;
DPRINT("CsrGetConsoleWindow\n");
DPRINT("SrvSetConsoleHardwareState\n");
Status = ConioLockConsole(CsrGetClientThread()->Process,
ApiMessage->Data.ConsoleHardwareStateRequest.ConsoleHandle,
&Console,
GENERIC_READ);
if (! NT_SUCCESS(Status))
{
DPRINT1("Failed to get console handle in SetConsoleHardwareState\n");
return Status;
}
switch (ApiMessage->Data.ConsoleHardwareStateRequest.SetGet)
{
case CONSOLE_HARDWARE_STATE_GET:
ApiMessage->Data.ConsoleHardwareStateRequest.State = Console->HardwareState;
break;
case CONSOLE_HARDWARE_STATE_SET:
DPRINT("Setting console hardware state.\n");
Status = SetConsoleHardwareState(Console, ApiMessage->Data.ConsoleHardwareStateRequest.State);
break;
default:
Status = STATUS_INVALID_PARAMETER_2; /* Client: (handle, [set_get], mode) */
break;
}
ConioUnlockConsole(Console);
return Status;
}
CSR_API(SrvGetConsoleWindow)
{
PCSRSS_CONSOLE Console;
NTSTATUS Status;
DPRINT("SrvGetConsoleWindow\n");
Status = ConioConsoleFromProcessData(CsrGetClientThread()->Process, &Console);
if (! NT_SUCCESS(Status))
@ -625,12 +663,12 @@ CSR_API(CsrGetConsoleWindow)
return STATUS_SUCCESS;
}
CSR_API(CsrSetConsoleIcon)
CSR_API(SrvSetConsoleIcon)
{
PCSRSS_CONSOLE Console;
NTSTATUS Status;
DPRINT("CsrSetConsoleIcon\n");
DPRINT("SrvSetConsoleIcon\n");
Status = ConioConsoleFromProcessData(CsrGetClientThread()->Process, &Console);
if (! NT_SUCCESS(Status))
@ -645,12 +683,12 @@ CSR_API(CsrSetConsoleIcon)
return Status;
}
CSR_API(CsrGetConsoleCodePage)
CSR_API(SrvGetConsoleCP)
{
PCSRSS_CONSOLE Console;
NTSTATUS Status;
DPRINT("CsrGetConsoleCodePage\n");
DPRINT("SrvGetConsoleCP\n");
Status = ConioConsoleFromProcessData(CsrGetClientThread()->Process, &Console);
if (! NT_SUCCESS(Status))
@ -663,12 +701,30 @@ CSR_API(CsrGetConsoleCodePage)
return STATUS_SUCCESS;
}
CSR_API(CsrSetConsoleCodePage)
CSR_API(CsrGetConsoleOutputCodePage) // TODO: Merge this function with the other one.
{
PCSRSS_CONSOLE Console;
NTSTATUS Status;
DPRINT("CsrSetConsoleCodePage\n");
DPRINT("CsrGetConsoleOutputCodePage\n");
Status = ConioConsoleFromProcessData(CsrGetClientThread()->Process, &Console);
if (! NT_SUCCESS(Status))
{
return Status;
}
ApiMessage->Data.GetConsoleOutputCodePage.CodePage = Console->OutputCodePage;
ConioUnlockConsole(Console);
return STATUS_SUCCESS;
}
CSR_API(SrvSetConsoleCP)
{
PCSRSS_CONSOLE Console;
NTSTATUS Status;
DPRINT("SrvSetConsoleCP\n");
Status = ConioConsoleFromProcessData(CsrGetClientThread()->Process, &Console);
if (! NT_SUCCESS(Status))
@ -687,25 +743,7 @@ CSR_API(CsrSetConsoleCodePage)
return STATUS_INVALID_PARAMETER;
}
CSR_API(CsrGetConsoleOutputCodePage)
{
PCSRSS_CONSOLE Console;
NTSTATUS Status;
DPRINT("CsrGetConsoleOutputCodePage\n");
Status = ConioConsoleFromProcessData(CsrGetClientThread()->Process, &Console);
if (! NT_SUCCESS(Status))
{
return Status;
}
ApiMessage->Data.GetConsoleOutputCodePage.CodePage = Console->OutputCodePage;
ConioUnlockConsole(Console);
return STATUS_SUCCESS;
}
CSR_API(CsrSetConsoleOutputCodePage)
CSR_API(CsrSetConsoleOutputCodePage) // TODO: Merge this function with the other one.
{
PCSRSS_CONSOLE Console;
NTSTATUS Status;
@ -729,7 +767,7 @@ CSR_API(CsrSetConsoleOutputCodePage)
return STATUS_INVALID_PARAMETER;
}
CSR_API(CsrGetProcessList)
CSR_API(SrvGetConsoleProcessList)
{
PDWORD Buffer;
PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
@ -739,7 +777,7 @@ CSR_API(CsrGetProcessList)
ULONG nItems = 0;
NTSTATUS Status;
DPRINT("CsrGetProcessList\n");
DPRINT("SrvGetConsoleProcessList\n");
Buffer = ApiMessage->Data.GetProcessListRequest.ProcessId;
if (!Win32CsrValidateBuffer(ProcessData, Buffer, ApiMessage->Data.GetProcessListRequest.nMaxIds, sizeof(DWORD)))
@ -768,7 +806,7 @@ CSR_API(CsrGetProcessList)
return STATUS_SUCCESS;
}
CSR_API(CsrGenerateCtrlEvent)
CSR_API(SrvGenerateConsoleCtrlEvent)
{
PCSRSS_CONSOLE Console;
PCSR_PROCESS current;
@ -801,7 +839,7 @@ CSR_API(CsrGenerateCtrlEvent)
return Status;
}
CSR_API(CsrGetConsoleSelectionInfo)
CSR_API(SrvGetConsoleSelectionInfo)
{
NTSTATUS Status;
PCSRSS_CONSOLE Console;

View file

@ -0,0 +1,96 @@
#ifndef __CONSRV_H__
#define __CONSRV_H__
#pragma once
/* PSDK/NDK Headers */
#define WIN32_NO_STATUS
#include <windows.h>
#define NTOS_MODE_USER
#include <ndk/ntndk.h>
/* CSRSS Header */
#include <csr/csrsrv.h>
/* CONSOLE Headers */
#include <win/conmsg.h>
// #include <win/base.h>
#include "guiconsole.h"
#include "tuiconsole.h"
/* Shared header with console.dll */
#include "console.h"
extern HANDLE ConSrvHeap;
extern HANDLE BaseSrvSharedHeap;
extern PBASE_STATIC_SERVER_DATA BaseStaticServerData;
/* console.c */
CSR_API(SrvAllocConsole);
CSR_API(SrvFreeConsole);
CSR_API(SrvSetConsoleMode);
CSR_API(SrvGetConsoleMode);
CSR_API(SrvSetConsoleTitle);
CSR_API(SrvGetConsoleTitle);
CSR_API(SrvGetConsoleHardwareState);
CSR_API(SrvSetConsoleHardwareState);
CSR_API(SrvGetConsoleWindow);
CSR_API(SrvSetConsoleIcon);
CSR_API(SrvGetConsoleCP);
CSR_API(SrvSetConsoleCP);
CSR_API(CsrGetConsoleOutputCodePage);
CSR_API(CsrSetConsoleOutputCodePage);
CSR_API(SrvGetConsoleProcessList);
CSR_API(SrvGenerateConsoleCtrlEvent);
CSR_API(SrvGetConsoleSelectionInfo);
/* coninput.c */
CSR_API(SrvReadConsole);
CSR_API(CsrReadInputEvent);
CSR_API(SrvFlushConsoleInputBuffer);
CSR_API(SrvGetConsoleNumberOfInputEvents);
CSR_API(SrvGetConsoleInput);
CSR_API(SrvWriteConsoleInput);
/* conoutput.c */
CSR_API(SrvWriteConsole);
CSR_API(SrvGetConsoleScreenBufferInfo);
CSR_API(SrvSetConsoleCursor);
CSR_API(CsrWriteConsoleOutputChar);
CSR_API(CsrFillOutputChar);
CSR_API(CsrWriteConsoleOutputAttrib);
CSR_API(CsrFillOutputAttrib);
CSR_API(SrvGetConsoleCursorInfo);
CSR_API(SrvSetConsoleCursorInfo);
CSR_API(CsrSetTextAttrib);
CSR_API(SrvCreateConsoleScreenBuffer);
CSR_API(SrvSetConsoleActiveScreenBuffer);
CSR_API(SrvWriteConsoleOutput);
CSR_API(SrvScrollConsoleScreenBuffer);
CSR_API(CsrReadConsoleOutputChar);
CSR_API(CsrReadConsoleOutputAttrib);
CSR_API(SrvReadConsoleOutput);
CSR_API(SrvSetConsoleScreenBufferSize);
/* alias.c */
CSR_API(SrvAddConsoleAlias);
CSR_API(SrvGetConsoleAlias);
CSR_API(SrvGetConsoleAliases);
CSR_API(SrvGetConsoleAliasesLength);
CSR_API(SrvGetConsoleAliasExes);
CSR_API(SrvGetConsoleAliasExesLength);
/* lineinput.c */
CSR_API(SrvGetConsoleCommandHistoryLength);
CSR_API(SrvGetConsoleCommandHistory);
CSR_API(SrvExpungeConsoleCommandHistory);
CSR_API(SrvSetConsoleNumberOfCommands);
CSR_API(SrvGetConsoleHistory);
CSR_API(SrvSetConsoleHistory);
#endif // __CONSRV_H__
/* EOF */

View file

@ -0,0 +1,7 @@
#define REACTOS_VERSION_DLL
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Console Server DLL\0"
#define REACTOS_STR_INTERNAL_NAME "consrv\0"
#define REACTOS_STR_ORIGINAL_FILENAME "consrv.dll\0"
#include <reactos/version.rc>
#include "rsrc.rc"

View file

@ -0,0 +1 @@
@ stdcall ConServerDllInitialization(ptr)

View file

@ -1,8 +1,8 @@
/* $Id$
/* $Id: guiconsole.c 57326 2012-09-18 21:45:00Z akhaldi $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
* FILE: subsys/csrss/win32csr/guiconsole.c
* FILE: win32ss/user/consrv/guiconsole.c
* PURPOSE: Implementation of gui-mode consoles
*/
@ -13,7 +13,14 @@
#include <debug.h>
/* Not defined in any header file */
extern VOID WINAPI PrivateCsrssManualGuiCheck(LONG Check);
// extern VOID WINAPI PrivateCsrssManualGuiCheck(LONG Check);
// From win32ss/user/win32csr/dllmain.c
VOID
WINAPI
PrivateCsrssManualGuiCheck(LONG Check)
{
NtUserCallOneParam(Check, ONEPARAM_ROUTINE_CSRSS_GUICHECK);
}
/* GLOBALS *******************************************************************/
@ -730,7 +737,7 @@ GuiConsoleHandleNcCreate(HWND hWnd, CREATESTRUCTW *Create)
{
DPRINT1("GuiConsoleNcCreate: CreateFont failed\n");
DeleteCriticalSection(&GuiData->Lock);
HeapFree(Win32CsrApiHeap, 0, GuiData);
HeapFree(ConSrvHeap, 0, GuiData);
return FALSE;
}
Dc = GetDC(hWnd);
@ -739,7 +746,7 @@ GuiConsoleHandleNcCreate(HWND hWnd, CREATESTRUCTW *Create)
DPRINT1("GuiConsoleNcCreate: GetDC failed\n");
DeleteObject(GuiData->Font);
DeleteCriticalSection(&GuiData->Lock);
HeapFree(Win32CsrApiHeap, 0, GuiData);
HeapFree(ConSrvHeap, 0, GuiData);
return FALSE;
}
OldFont = SelectObject(Dc, GuiData->Font);
@ -749,7 +756,7 @@ GuiConsoleHandleNcCreate(HWND hWnd, CREATESTRUCTW *Create)
ReleaseDC(hWnd, Dc);
DeleteObject(GuiData->Font);
DeleteCriticalSection(&GuiData->Lock);
HeapFree(Win32CsrApiHeap, 0, GuiData);
HeapFree(ConSrvHeap, 0, GuiData);
return FALSE;
}
if (! GetTextMetricsW(Dc, &Metrics))
@ -759,7 +766,7 @@ GuiConsoleHandleNcCreate(HWND hWnd, CREATESTRUCTW *Create)
ReleaseDC(hWnd, Dc);
DeleteObject(GuiData->Font);
DeleteCriticalSection(&GuiData->Lock);
HeapFree(Win32CsrApiHeap, 0, GuiData);
HeapFree(ConSrvHeap, 0, GuiData);
return FALSE;
}
GuiData->CharWidth = Metrics.tmMaxCharWidth;
@ -1299,7 +1306,7 @@ GuiConsoleHandleNcDestroy(HWND hWnd)
if (GuiData->ConsoleLibrary)
FreeLibrary(GuiData->ConsoleLibrary);
HeapFree(Win32CsrApiHeap, 0, GuiData);
HeapFree(ConSrvHeap, 0, GuiData);
}
static COORD
@ -1756,7 +1763,7 @@ GuiResizeBuffer(PCSRSS_CONSOLE Console, PCSRSS_SCREEN_BUFFER ScreenBuffer, COORD
if (Size.X == ScreenBuffer->MaxX && Size.Y == ScreenBuffer->MaxY)
return STATUS_SUCCESS;
Buffer = HeapAlloc(Win32CsrApiHeap, 0, Size.X * Size.Y * 2);
Buffer = HeapAlloc(ConSrvHeap, 0, Size.X * Size.Y * 2);
if (!Buffer)
return STATUS_NO_MEMORY;
@ -1807,7 +1814,7 @@ GuiResizeBuffer(PCSRSS_CONSOLE Console, PCSRSS_SCREEN_BUFFER ScreenBuffer, COORD
}
(void)InterlockedExchangePointer((PVOID volatile *)&ScreenBuffer->Buffer, Buffer);
HeapFree(Win32CsrApiHeap, 0, OldBuffer);
HeapFree(ConSrvHeap, 0, OldBuffer);
ScreenBuffer->MaxX = Size.X;
ScreenBuffer->MaxY = Size.Y;
ScreenBuffer->VirtualY = 0;
@ -2071,7 +2078,7 @@ GuiConsoleNotifyWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
SetWindowLongW(hWnd, GWL_USERDATA, 0);
return 0;
case PM_CREATE_CONSOLE:
Buffer = HeapAlloc(Win32CsrApiHeap, 0,
Buffer = HeapAlloc(ConSrvHeap, 0,
Console->Title.Length + sizeof(WCHAR));
if (NULL != Buffer)
{
@ -2097,7 +2104,7 @@ GuiConsoleNotifyWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
(PVOID) Console);
if (NULL != Buffer)
{
HeapFree(Win32CsrApiHeap, 0, Buffer);
HeapFree(ConSrvHeap, 0, Buffer);
}
if (NULL != NewWindow)
{
@ -2229,7 +2236,7 @@ GuiChangeTitle(PCSRSS_CONSOLE Console)
{
PWCHAR Buffer, Title;
Buffer = HeapAlloc(Win32CsrApiHeap, 0,
Buffer = HeapAlloc(ConSrvHeap, 0,
Console->Title.Length + sizeof(WCHAR));
if (NULL != Buffer)
{
@ -2246,7 +2253,7 @@ GuiChangeTitle(PCSRSS_CONSOLE Console)
if (NULL != Buffer)
{
HeapFree(Win32CsrApiHeap, 0, Buffer);
HeapFree(ConSrvHeap, 0, Buffer);
}
return TRUE;
@ -2331,7 +2338,7 @@ GuiInitConsole(PCSRSS_CONSOLE Console, int ShowCmd)
return STATUS_UNSUCCESSFUL;
}
}
GuiData = HeapAlloc(Win32CsrApiHeap, HEAP_ZERO_MEMORY,
GuiData = HeapAlloc(ConSrvHeap, HEAP_ZERO_MEMORY,
sizeof(GUI_CONSOLE_DATA));
if (!GuiData)
{

View file

@ -1,8 +1,8 @@
/* $Id$
/* $Id: guiconsole.h 57326 2012-09-18 21:45:00Z akhaldi $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
* FILE: subsys/csrss/win32csr/guiconsole.h
* FILE: win32ss/user/consrv/guiconsole.h
* PURPOSE: Interface to GUI consoles
*/

View file

@ -1,4 +1,4 @@
/* $Id$
/* $Id: handle.c 57570 2012-10-17 23:10:40Z hbelusca $
*
* reactos/subsys/csrss/api/handle.c
*
@ -36,8 +36,7 @@ AdjustHandleCounts(PCSRSS_HANDLE Entry, INT Change)
}
static VOID
Win32CsrCreateHandleEntry(
PCSRSS_HANDLE Entry)
Win32CsrCreateHandleEntry(PCSRSS_HANDLE Entry)
{
Object_t *Object = Entry->Object;
EnterCriticalSection(&Object->Console->Lock);
@ -46,8 +45,7 @@ Win32CsrCreateHandleEntry(
}
static VOID
Win32CsrCloseHandleEntry(
PCSRSS_HANDLE Entry)
Win32CsrCloseHandleEntry(PCSRSS_HANDLE Entry)
{
Object_t *Object = Entry->Object;
if (Object != NULL)
@ -72,9 +70,8 @@ Win32CsrCloseHandleEntry(
NTSTATUS
FASTCALL
Win32CsrReleaseObject(
PCSR_PROCESS ProcessData,
HANDLE Handle)
Win32CsrReleaseObject(PCSR_PROCESS ProcessData,
HANDLE Handle)
{
ULONG_PTR h = (ULONG_PTR)Handle >> 2;
Object_t *Object;
@ -134,8 +131,7 @@ Win32CsrUnlockObject(Object_t *Object)
VOID
WINAPI
Win32CsrReleaseConsole(
PCSR_PROCESS ProcessData)
Win32CsrReleaseConsole(PCSR_PROCESS ProcessData)
{
PCSRSS_CONSOLE Console;
ULONG i;
@ -146,7 +142,7 @@ Win32CsrReleaseConsole(
for (i = 0; i < ProcessData->HandleTableSize; i++)
Win32CsrCloseHandleEntry(&ProcessData->HandleTable[i]);
ProcessData->HandleTableSize = 0;
RtlFreeHeap(Win32CsrApiHeap, 0, ProcessData->HandleTable);
RtlFreeHeap(ConSrvHeap, 0, ProcessData->HandleTable);
ProcessData->HandleTable = NULL;
Console = ProcessData->Console;
@ -166,13 +162,12 @@ Win32CsrReleaseConsole(
NTSTATUS
FASTCALL
Win32CsrInsertObject(
PCSR_PROCESS ProcessData,
PHANDLE Handle,
Object_t *Object,
DWORD Access,
BOOL Inheritable,
DWORD ShareMode)
Win32CsrInsertObject(PCSR_PROCESS ProcessData,
PHANDLE Handle,
Object_t *Object,
DWORD Access,
BOOL Inheritable,
DWORD ShareMode)
{
ULONG i;
PCSRSS_HANDLE Block;
@ -188,7 +183,7 @@ Win32CsrInsertObject(
}
if (i >= ProcessData->HandleTableSize)
{
Block = RtlAllocateHeap(Win32CsrApiHeap,
Block = RtlAllocateHeap(ConSrvHeap,
HEAP_ZERO_MEMORY,
(ProcessData->HandleTableSize + 64) * sizeof(CSRSS_HANDLE));
if (Block == NULL)
@ -199,7 +194,7 @@ Win32CsrInsertObject(
RtlCopyMemory(Block,
ProcessData->HandleTable,
ProcessData->HandleTableSize * sizeof(CSRSS_HANDLE));
RtlFreeHeap(Win32CsrApiHeap, 0, ProcessData->HandleTable);
RtlFreeHeap(ConSrvHeap, 0, ProcessData->HandleTable);
ProcessData->HandleTable = Block;
ProcessData->HandleTableSize += 64;
}
@ -215,9 +210,8 @@ Win32CsrInsertObject(
NTSTATUS
WINAPI
Win32CsrDuplicateHandleTable(
PCSR_PROCESS SourceProcessData,
PCSR_PROCESS TargetProcessData)
Win32CsrDuplicateHandleTable(PCSR_PROCESS SourceProcessData,
PCSR_PROCESS TargetProcessData)
{
ULONG i;
@ -233,7 +227,7 @@ Win32CsrDuplicateHandleTable(
/* we are called from CreateProcessData, it isn't necessary to lock the target process data */
TargetProcessData->HandleTable = RtlAllocateHeap(Win32CsrApiHeap,
TargetProcessData->HandleTable = RtlAllocateHeap(ConSrvHeap,
HEAP_ZERO_MEMORY,
SourceProcessData->HandleTableSize
* sizeof(CSRSS_HANDLE));
@ -302,12 +296,14 @@ CSR_API(CsrGetHandle)
return Status;
}
CSR_API(CsrCloseHandle)
// CSR_API(CsrSetHandle) ??
CSR_API(SrvCloseHandle)
{
return Win32CsrReleaseObject(CsrGetClientThread()->Process, ApiMessage->Data.CloseHandleRequest.Handle);
}
CSR_API(CsrVerifyHandle)
CSR_API(SrvVerifyConsoleIoHandle)
{
ULONG_PTR Index;
NTSTATUS Status = STATUS_SUCCESS;
@ -326,7 +322,7 @@ CSR_API(CsrVerifyHandle)
return Status;
}
CSR_API(CsrDuplicateHandle)
CSR_API(SrvDuplicateHandle)
{
ULONG_PTR Index;
PCSRSS_HANDLE Entry;

384
win32ss/user/consrv/init.c Normal file
View file

@ -0,0 +1,384 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS Console Server DLL
* FILE: win32ss/user/consrv/init.c
* PURPOSE: Initialization
* PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
*/
#include "consrv.h"
#define NDEBUG
#include <debug.h>
HANDLE DllHandle = NULL;
// HANDLE BaseApiPort = NULL;
/* Memory */
HANDLE ConSrvHeap = NULL; // Our own heap.
// HANDLE BaseSrvSharedHeap = NULL; // Shared heap with CSR. (CsrSrvSharedSectionHeap)
// PBASE_STATIC_SERVER_DATA BaseStaticServerData = NULL; // Data that we can share amongst processes. Initialized inside BaseSrvSharedHeap.
// Windows 2k3 tables, adapted from http://j00ru.vexillium.org/csrss_list/api_list.html#Windows_2k3
// plus a little bit of Windows 7. It is for testing purposes. After that I will add stubs.
// Some names are also deduced from the subsystems/win32/csrss/csrsrv/server.c ones.
PCSR_API_ROUTINE ConsoleServerApiDispatchTable[ConsolepMaxApiNumber] =
{
// SrvOpenConsole,
SrvGetConsoleInput,
SrvWriteConsoleInput,
SrvReadConsoleOutput,
SrvWriteConsoleOutput,
// SrvReadConsoleOutputString,
// SrvWriteConsoleOutputString,
// SrvFillConsoleOutput,
SrvGetConsoleMode,
// SrvGetConsoleNumberOfFonts,
SrvGetConsoleNumberOfInputEvents,
SrvGetConsoleScreenBufferInfo,
SrvGetConsoleCursorInfo,
// SrvGetConsoleMouseInfo,
// SrvGetConsoleFontInfo,
// SrvGetConsoleFontSize,
// SrvGetConsoleCurrentFont,
SrvSetConsoleMode,
SrvSetConsoleActiveScreenBuffer,
SrvFlushConsoleInputBuffer,
// SrvGetLargestConsoleWindowSize,
SrvSetConsoleScreenBufferSize,
// SrvSetConsoleCursorPosition,
SrvSetConsoleCursorInfo,
// SrvSetConsoleWindowInfo,
SrvScrollConsoleScreenBuffer,
// SrvSetConsoleTextAttribute,
// SrvSetConsoleFont,
SrvSetConsoleIcon,
SrvReadConsole,
SrvWriteConsole,
SrvDuplicateHandle,
// SrvGetHandleInformation,
// SrvSetHandleInformation,
SrvCloseHandle,
SrvVerifyConsoleIoHandle,
SrvAllocConsole,
SrvFreeConsole,
SrvGetConsoleTitle,
SrvSetConsoleTitle,
SrvCreateConsoleScreenBuffer,
// SrvInvalidateBitMapRect,
// SrvVDMConsoleOperation,
SrvSetConsoleCursor,
// SrvShowConsoleCursor,
// SrvConsoleMenuControl,
// SrvSetConsolePalette,
// SrvSetConsoleDisplayMode,
// SrvRegisterConsoleVDM,
SrvGetConsoleHardwareState,
SrvSetConsoleHardwareState,
// SrvGetConsoleDisplayMode,
SrvAddConsoleAlias,
SrvGetConsoleAlias,
SrvGetConsoleAliasesLength,
SrvGetConsoleAliasExesLength,
SrvGetConsoleAliases,
SrvGetConsoleAliasExes,
SrvExpungeConsoleCommandHistory,
SrvSetConsoleNumberOfCommands,
SrvGetConsoleCommandHistoryLength,
SrvGetConsoleCommandHistory,
// SrvSetConsoleCommandHistoryMode,
SrvGetConsoleCP,
SrvSetConsoleCP,
// SrvSetConsoleKeyShortcuts,
// SrvSetConsoleMenuClose,
// SrvConsoleNotifyLastClose,
SrvGenerateConsoleCtrlEvent,
// SrvGetConsoleKeyboardLayoutName,
SrvGetConsoleWindow,
// SrvGetConsoleCharType,
// SrvSetConsoleLocalEUDC,
// SrvSetConsoleCursorMode,
// SrvGetConsoleCursorMode,
// SrvRegisterConsoleOS2,
// SrvSetConsoleOS2OemFormat,
// SrvGetConsoleNlsMode,
// SrvSetConsoleNlsMode,
// SrvRegisterConsoleIME,
// SrvUnregisterConsoleIME,
// SrvGetConsoleLangId,
// SrvAttachConsole,
SrvGetConsoleSelectionInfo,
SrvGetConsoleProcessList,
SrvGetConsoleHistory,
SrvSetConsoleHistory
};
BOOLEAN ConsoleServerApiServerValidTable[ConsolepMaxApiNumber] =
{
// FALSE, // SrvOpenConsole,
FALSE, // SrvGetConsoleInput,
FALSE, // SrvWriteConsoleInput,
FALSE, // SrvReadConsoleOutput,
FALSE, // SrvWriteConsoleOutput,
// FALSE, // SrvReadConsoleOutputString,
// FALSE, // SrvWriteConsoleOutputString,
// FALSE, // SrvFillConsoleOutput,
FALSE, // SrvGetConsoleMode,
// FALSE, // SrvGetConsoleNumberOfFonts,
FALSE, // SrvGetConsoleNumberOfInputEvents,
FALSE, // SrvGetConsoleScreenBufferInfo,
FALSE, // SrvGetConsoleCursorInfo,
// FALSE, // SrvGetConsoleMouseInfo,
// FALSE, // SrvGetConsoleFontInfo,
// FALSE, // SrvGetConsoleFontSize,
// FALSE, // SrvGetConsoleCurrentFont,
FALSE, // SrvSetConsoleMode,
FALSE, // SrvSetConsoleActiveScreenBuffer,
FALSE, // SrvFlushConsoleInputBuffer,
// FALSE, // SrvGetLargestConsoleWindowSize,
FALSE, // SrvSetConsoleScreenBufferSize,
// FALSE, // SrvSetConsoleCursorPosition,
FALSE, // SrvSetConsoleCursorInfo,
// FALSE, // SrvSetConsoleWindowInfo,
FALSE, // SrvScrollConsoleScreenBuffer,
// FALSE, // SrvSetConsoleTextAttribute,
// FALSE, // SrvSetConsoleFont,
FALSE, // SrvSetConsoleIcon,
FALSE, // SrvReadConsole,
FALSE, // SrvWriteConsole,
FALSE, // SrvDuplicateHandle,
// FALSE, // SrvGetHandleInformation,
// FALSE, // SrvSetHandleInformation,
FALSE, // SrvCloseHandle,
FALSE, // SrvVerifyConsoleIoHandle,
FALSE, // SrvAllocConsole,
FALSE, // SrvFreeConsole,
FALSE, // SrvGetConsoleTitle,
FALSE, // SrvSetConsoleTitle,
FALSE, // SrvCreateConsoleScreenBuffer,
// FALSE, // SrvInvalidateBitMapRect,
// FALSE, // SrvVDMConsoleOperation,
FALSE, // SrvSetConsoleCursor,
// FALSE, // SrvShowConsoleCursor,
// FALSE, // SrvConsoleMenuControl,
// FALSE, // SrvSetConsolePalette,
// FALSE, // SrvSetConsoleDisplayMode,
// FALSE, // SrvRegisterConsoleVDM,
FALSE, // SrvGetConsoleHardwareState,
FALSE, // SrvSetConsoleHardwareState,
// TRUE, // SrvGetConsoleDisplayMode,
FALSE, // SrvAddConsoleAlias,
FALSE, // SrvGetConsoleAlias,
FALSE, // SrvGetConsoleAliasesLength,
FALSE, // SrvGetConsoleAliasExesLength,
FALSE, // SrvGetConsoleAliases,
FALSE, // SrvGetConsoleAliasExes,
FALSE, // SrvExpungeConsoleCommandHistory,
FALSE, // SrvSetConsoleNumberOfCommands,
FALSE, // SrvGetConsoleCommandHistoryLength,
FALSE, // SrvGetConsoleCommandHistory,
// FALSE, // SrvSetConsoleCommandHistoryMode,
FALSE, // SrvGetConsoleCP,
FALSE, // SrvSetConsoleCP,
// FALSE, // SrvSetConsoleKeyShortcuts,
// FALSE, // SrvSetConsoleMenuClose,
// FALSE, // SrvConsoleNotifyLastClose,
FALSE, // SrvGenerateConsoleCtrlEvent,
// FALSE, // SrvGetConsoleKeyboardLayoutName,
FALSE, // SrvGetConsoleWindow,
// FALSE, // SrvGetConsoleCharType,
// FALSE, // SrvSetConsoleLocalEUDC,
// FALSE, // SrvSetConsoleCursorMode,
// FALSE, // SrvGetConsoleCursorMode,
// FALSE, // SrvRegisterConsoleOS2,
// FALSE, // SrvSetConsoleOS2OemFormat,
// FALSE, // SrvGetConsoleNlsMode,
// FALSE, // SrvSetConsoleNlsMode,
// FALSE, // SrvRegisterConsoleIME,
// FALSE, // SrvUnregisterConsoleIME,
// FALSE, // SrvGetConsoleLangId,
// FALSE, // SrvAttachConsole,
FALSE, // SrvGetConsoleSelectionInfo,
FALSE, // SrvGetConsoleProcessList,
FALSE, // SrvGetConsoleHistory,
FALSE, // SrvSetConsoleHistory
// FALSE
};
PCHAR ConsoleServerApiNameTable[ConsolepMaxApiNumber] =
{
// "OpenConsole",
"GetConsoleInput",
"WriteConsoleInput",
"ReadConsoleOutput",
"WriteConsoleOutput",
// "ReadConsoleOutputString",
// "WriteConsoleOutputString",
// "FillConsoleOutput",
"GetConsoleMode",
// "GetConsoleNumberOfFonts",
"GetConsoleNumberOfInputEvents",
"GetConsoleScreenBufferInfo",
"GetConsoleCursorInfo",
// "GetConsoleMouseInfo",
// "GetConsoleFontInfo",
// "GetConsoleFontSize",
// "GetConsoleCurrentFont",
"SetConsoleMode",
"SetConsoleActiveScreenBuffer",
"FlushConsoleInputBuffer",
// "GetLargestConsoleWindowSize",
"SetConsoleScreenBufferSize",
// "SetConsoleCursorPosition",
"SetConsoleCursorInfo",
// "SetConsoleWindowInfo",
"ScrollConsoleScreenBuffer",
// "SetConsoleTextAttribute",
// "SetConsoleFont",
"SetConsoleIcon",
"ReadConsole",
"WriteConsole",
"DuplicateHandle",
// "GetHandleInformation",
// "SetHandleInformation",
"CloseHandle",
"VerifyConsoleIoHandle",
"AllocConsole",
"FreeConsole",
"GetConsoleTitle",
"SetConsoleTitle",
"CreateConsoleScreenBuffer",
// "InvalidateBitMapRect",
// "VDMConsoleOperation",
"SetConsoleCursor",
// "ShowConsoleCursor",
// "ConsoleMenuControl",
// "SetConsolePalette",
// "SetConsoleDisplayMode",
// "RegisterConsoleVDM",
"GetConsoleHardwareState",
"SetConsoleHardwareState",
// "GetConsoleDisplayMode",
"AddConsoleAlias",
"GetConsoleAlias",
"GetConsoleAliasesLength",
"GetConsoleAliasExesLength",
"GetConsoleAliases",
"GetConsoleAliasExes",
"ExpungeConsoleCommandHistory",
"SetConsoleNumberOfCommands",
"GetConsoleCommandHistoryLength",
"GetConsoleCommandHistory",
// "SetConsoleCommandHistoryMode",
"GetConsoleCP",
"SetConsoleCP",
// "SetConsoleKeyShortcuts",
// "SetConsoleMenuClose",
// "ConsoleNotifyLastClose",
"GenerateConsoleCtrlEvent",
// "GetConsoleKeyboardLayoutName",
"GetConsoleWindow",
// "GetConsoleCharType",
// "SetConsoleLocalEUDC",
// "SetConsoleCursorMode",
// "GetConsoleCursorMode",
// "RegisterConsoleOS2",
// "SetConsoleOS2OemFormat",
// "GetConsoleNlsMode",
// "SetConsoleNlsMode",
// "RegisterConsoleIME",
// "UnregisterConsoleIME",
// "GetConsoleLangId",
// "AttachConsole",
"GetConsoleSelectionInfo",
"GetConsoleProcessList",
"GetConsoleHistory",
"SetConsoleHistory"
// NULL
};
/* FUNCTIONS ******************************************************************/
/*
VOID WINAPI ConsoleStaticServerThread(PVOID x)
{
// NTSTATUS Status = STATUS_SUCCESS;
PPORT_MESSAGE Request = (PPORT_MESSAGE)x;
PPORT_MESSAGE Reply = NULL;
ULONG MessageType = 0;
DPRINT("BASESRV: %s called\n", __FUNCTION__);
MessageType = Request->u2.s2.Type;
DPRINT("BASESRV: %s received a message (Type=%d)\n",
__FUNCTION__, MessageType);
switch (MessageType)
{
default:
Reply = Request;
/\* Status = *\/ NtReplyPort(BaseApiPort, Reply);
break;
}
}
*/
CSR_SERVER_DLL_INIT(ConServerDllInitialization)
{
// NTSTATUS Status = STATUS_SUCCESS;
/*
DPRINT("BASSRV: %s(%ld,...) called\n", __FUNCTION__, ArgumentCount);
BaseApiPort = CsrQueryApiPort ();
Status = CsrAddStaticServerThread(ConsoleStaticServerThread);
if (NT_SUCCESS(Status))
{
//TODO initialize the BASE server
}
return STATUS_SUCCESS;
*/
/* Initialize memory */
ConSrvHeap = RtlGetProcessHeap(); // Initialize our own heap.
// BaseSrvSharedHeap = LoadedServerDll->SharedSection; // Get the CSR shared heap.
// LoadedServerDll->SharedSection = BaseStaticServerData;
CsrInitConsoleSupport();
/* Setup the DLL Object */
LoadedServerDll->ApiBase = CONSRV_FIRST_API_NUMBER;
LoadedServerDll->HighestApiSupported = ConsolepMaxApiNumber;
LoadedServerDll->DispatchTable = ConsoleServerApiDispatchTable;
LoadedServerDll->ValidTable = ConsoleServerApiServerValidTable;
LoadedServerDll->NameTable = ConsoleServerApiNameTable;
LoadedServerDll->SizeOfProcessData = 0;
LoadedServerDll->ConnectCallback = NULL;
LoadedServerDll->DisconnectCallback = Win32CsrReleaseConsole;
LoadedServerDll->NewProcessCallback = Win32CsrDuplicateHandleTable;
// LoadedServerDll->HardErrorCallback = Win32CsrHardError;
/* All done */
return STATUS_SUCCESS;
}
BOOL
NTAPI
DllMain(IN HANDLE hDll,
IN DWORD dwReason,
IN LPVOID lpReserved)
{
UNREFERENCED_PARAMETER(dwReason);
UNREFERENCED_PARAMETER(lpReserved);
if (DLL_PROCESS_ATTACH == dwReason)
{
DllHandle = hDll;
}
return TRUE;
}
/* EOF */

View file

@ -0,0 +1,29 @@
/*
* PROJECT: ReactOS CSRSS subsystem
* FILE: subsystems/win32/csrss/win32csr/lang/bg-BG.rc
* PURPOSE: Bulgarian resource file
*/
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_EDIT "Обработка"
IDS_MARK "Отбелязване"
IDS_COPY "Запомняне\tEnter"
IDS_PASTE "Поставяне"
IDS_SELECTALL "Избор на всичко"
IDS_SCROLL "Прелистване"
IDS_FIND "Търсене..."
IDS_DEFAULTS "Подразбирани"
IDS_PROPERTIES "Свойства"
IDS_SCROLLHERE "Прелистване тук"
IDS_SCROLLTOP "Прелистване до горе"
IDS_SCROLLBOTTOM "Прелистване до долу"
IDS_SCROLLPAGE_UP "Горна страница"
IDS_SCROLLPAGE_DOWN "Долна страница"
IDS_SCROLLUP "Прелистване нагоре"
IDS_SCROLLDOWN "Прелистване надолу"
IDS_COMMAND_PROMPT "Command Prompt"
END

View file

@ -0,0 +1,28 @@
/* FILE: subsystems/win32/csrss/win32csr/lang/cs-CZ.rc
* TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com)
* UPDATED: 2011-04-09
*/
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_EDIT "Upravit"
IDS_MARK "Oznaèit"
IDS_COPY "Kopírovat\tEnter"
IDS_PASTE "Vložit"
IDS_SELECTALL "Oznaèit vše"
IDS_SCROLL "Posunout"
IDS_FIND "Najít..."
IDS_DEFAULTS "Výchozí"
IDS_PROPERTIES "Vlastnosti"
IDS_SCROLLHERE "Posunout sem"
IDS_SCROLLTOP "Posunout na zaèátek"
IDS_SCROLLBOTTOM "Posunout na konec"
IDS_SCROLLPAGE_UP "O stránku výše"
IDS_SCROLLPAGE_DOWN "O stránku níže"
IDS_SCROLLUP "Posunout nahoru"
IDS_SCROLLDOWN "Posunout dolù"
IDS_COMMAND_PROMPT "Pøíkazový øádek"
END

View file

@ -0,0 +1,23 @@
LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_EDIT "Bearbeiten"
IDS_MARK "Markieren"
IDS_COPY "Kopieren\tEnter"
IDS_PASTE "Einfügen"
IDS_SELECTALL "Alles auswählen"
IDS_SCROLL "Scrollen"
IDS_FIND "Suchen..."
IDS_DEFAULTS "Standardwerte"
IDS_PROPERTIES "Eigenschaften"
IDS_SCROLLHERE "Hier scrollen"
IDS_SCROLLTOP "Ganz nach oben scrollen"
IDS_SCROLLBOTTOM "Ganz nach unten scrollen"
IDS_SCROLLPAGE_UP "Seite nach oben"
IDS_SCROLLPAGE_DOWN "Seite nach unten"
IDS_SCROLLUP "Nach oben scrollen"
IDS_SCROLLDOWN "Nach unten scrollen"
IDS_COMMAND_PROMPT "Eingabeaufforderung"
END

View file

@ -0,0 +1,23 @@
LANGUAGE LANG_GREEK, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_EDIT "Åðåîåñãáóßá"
IDS_MARK "ÌáñêÜñéóìá"
IDS_COPY "ÁíôéãñáöÞ\tEnter"
IDS_PASTE "Åðéêüëëçóç"
IDS_SELECTALL "ÅðéëïãÞ üëùí"
IDS_SCROLL "Êýëéóç"
IDS_FIND "Åýñåóç..."
IDS_DEFAULTS "ÐñïåðéëïãÞ"
IDS_PROPERTIES "Éäéüôçôåò"
IDS_SCROLLHERE "Êýëéóç åäþ"
IDS_SCROLLTOP "Áñ÷Þ"
IDS_SCROLLBOTTOM "ÔÝëïò"
IDS_SCROLLPAGE_UP "Ðñïçãïýìåíç óåëßäá"
IDS_SCROLLPAGE_DOWN "Åðüìåíç óåëßäá"
IDS_SCROLLUP "Êýëéóç ðÜíù"
IDS_SCROLLDOWN "Êýëéóç êÜôù"
IDS_COMMAND_PROMPT "Command Prompt"
END

View file

@ -0,0 +1,23 @@
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
STRINGTABLE
BEGIN
IDS_EDIT "Edit"
IDS_MARK "Mark"
IDS_COPY "Copy\tEnter"
IDS_PASTE "Paste"
IDS_SELECTALL "Select All"
IDS_SCROLL "Scroll"
IDS_FIND "Find..."
IDS_DEFAULTS "Defaults"
IDS_PROPERTIES "Properties"
IDS_SCROLLHERE "Scroll here"
IDS_SCROLLTOP "Scroll top"
IDS_SCROLLBOTTOM "Scroll bottom"
IDS_SCROLLPAGE_UP "Page up"
IDS_SCROLLPAGE_DOWN "Page down"
IDS_SCROLLUP "Scroll up"
IDS_SCROLLDOWN "Scroll down"
IDS_COMMAND_PROMPT "Command Prompt"
END

View file

@ -0,0 +1,28 @@
/*
* Spanish Language resource file
* Traducido por: Javier Remacha 2008-26-01
*/
LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_EDIT "Editar"
IDS_MARK "Marcar"
IDS_COPY "Copiar\tIntroducir"
IDS_PASTE "Pegar"
IDS_SELECTALL "Seleccionar Todo"
IDS_SCROLL "Desplazar"
IDS_FIND "Buscar..."
IDS_DEFAULTS "Por defecto"
IDS_PROPERTIES "Propiedades"
IDS_SCROLLHERE "Desplazar aquí"
IDS_SCROLLTOP "Desplazar hasta arriba"
IDS_SCROLLBOTTOM "Desplazar hasta abajo"
IDS_SCROLLPAGE_UP "Subir página"
IDS_SCROLLPAGE_DOWN "Bajar página"
IDS_SCROLLUP "Desplazar arriba"
IDS_SCROLLDOWN "Desplazar abajo"
IDS_COMMAND_PROMPT "Command Prompt"
END

View file

@ -0,0 +1,25 @@
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
/* Fixme : Translation could be really improved, with context
La traduction pourrait réellement être améliorée grâce au contexte */
STRINGTABLE
BEGIN
IDS_EDIT "Éditer"
IDS_MARK "Marquer"
IDS_COPY "Copier\tEntrée"
IDS_PASTE "Coller"
IDS_SELECTALL "Tout sélectionner"
IDS_SCROLL "Défiler"
IDS_FIND "Trouver..."
IDS_DEFAULTS "Défauts"
IDS_PROPERTIES "Propriétés"
IDS_SCROLLHERE "Défiler ici"
IDS_SCROLLTOP "Défiler tout en haut"
IDS_SCROLLBOTTOM "Défiler tout en bas"
IDS_SCROLLPAGE_UP "Page précédente"
IDS_SCROLLPAGE_DOWN "Page suivante"
IDS_SCROLLUP "Défiler en haut"
IDS_SCROLLDOWN "Défiler en bas"
IDS_COMMAND_PROMPT "Command Prompt"
END

View file

@ -0,0 +1,23 @@
LANGUAGE LANG_INDONESIAN, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_EDIT "Edit"
IDS_MARK "Tandai"
IDS_COPY "Copy\tEnter"
IDS_PASTE "Paste"
IDS_SELECTALL "Pilih Semua"
IDS_SCROLL "Gulung"
IDS_FIND "Cari..."
IDS_DEFAULTS "Standar"
IDS_PROPERTIES "Properti"
IDS_SCROLLHERE "Gulung ke Sini"
IDS_SCROLLTOP "Gulung ke Atas"
IDS_SCROLLBOTTOM "Gulung ke Bawah"
IDS_SCROLLPAGE_UP "Halaman Naik"
IDS_SCROLLPAGE_DOWN "Halaman Turun"
IDS_SCROLLUP "Gulung Naik"
IDS_SCROLLDOWN "Gulung Turun"
IDS_COMMAND_PROMPT "Command Prompt"
END

View file

@ -0,0 +1,32 @@
/*
* PROJECT: ReactOS Client/Server Runtime subsystem
* LICENSE: GPL - See COPYING in the top level directory
* FILE: subsystems/win32/csrss/win32csr/lang/it-IT.rc
* PURPOSE: Italian Translation of subsystems/win32/csrss/win32csr/lang/en-US.rc
* PROGRAMMERS:
* Copyright (C) 2007 Daniele Forsi (dforsi at gmail.com) Italian Translation
*/
LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_EDIT "Modifica"
IDS_MARK "Seleziona"
IDS_COPY "Copia\tInvio"
IDS_PASTE "Incolla"
IDS_SELECTALL "Seleziona tutto"
IDS_SCROLL "Scorri"
IDS_FIND "Trova..."
IDS_DEFAULTS "Impostazioni predefinite"
IDS_PROPERTIES "Proprietà"
IDS_SCROLLHERE "Scorri qui"
IDS_SCROLLTOP "Scorri in cima"
IDS_SCROLLBOTTOM "Scorri in fondo"
IDS_SCROLLPAGE_UP "Pagina sù"
IDS_SCROLLPAGE_DOWN "Pagina giù"
IDS_SCROLLUP "Scorri sù"
IDS_SCROLLDOWN "Scorri giù"
IDS_COMMAND_PROMPT "Prompt dei commandi"
END

View file

@ -0,0 +1,23 @@
LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_EDIT "編集"
IDS_MARK "範囲指定"
IDS_COPY "コピー\tEnter"
IDS_PASTE "貼\り付け"
IDS_SELECTALL "すべて選択"
IDS_SCROLL "スクロール"
IDS_FIND "検索..."
IDS_DEFAULTS "規定値"
IDS_PROPERTIES "プロパティ"
IDS_SCROLLHERE "ここにスクロール"
IDS_SCROLLTOP "一番上にスクロール"
IDS_SCROLLBOTTOM "一番下にスクロール"
IDS_SCROLLPAGE_UP "Page up"
IDS_SCROLLPAGE_DOWN "Page down"
IDS_SCROLLUP "上にスクロール"
IDS_SCROLLDOWN "下にスクロール"
IDS_COMMAND_PROMPT "Command Prompt"
END

View file

@ -0,0 +1,23 @@
LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_EDIT "Rediger"
IDS_MARK "Merk"
IDS_COPY "Kopier\tEnter"
IDS_PASTE "Lim inn"
IDS_SELECTALL "Velg alt"
IDS_SCROLL "Rull"
IDS_FIND "Finn..."
IDS_DEFAULTS "Standard"
IDS_PROPERTIES "Egenskaper"
IDS_SCROLLHERE "Rull her"
IDS_SCROLLTOP "Rull til toppen"
IDS_SCROLLBOTTOM "Rull knapp"
IDS_SCROLLPAGE_UP "Side opp"
IDS_SCROLLPAGE_DOWN "Side ned"
IDS_SCROLLUP "Rull opp"
IDS_SCROLLDOWN "Rull ned"
IDS_COMMAND_PROMPT "Command Prompt"
END

View file

@ -0,0 +1,31 @@
/*
* translated by xrogers
* xxrogers@users.sourceforge.net
* https://sourceforge.net/projects/reactospl
* translation update by Olaf Siejka (Caemyr), Apr 2011
* UTF-8 conversion by Caemyr (May, 2011)
*/
LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_EDIT "Edytuj"
IDS_MARK "Zaznacz"
IDS_COPY "Kopiuj\tWejdź"
IDS_PASTE "Wklej"
IDS_SELECTALL "Zaznacz wszystko"
IDS_SCROLL "Przewiń"
IDS_FIND "Znajdź..."
IDS_DEFAULTS "Ustawienia domyślne"
IDS_PROPERTIES "Właściwości"
IDS_SCROLLHERE "Przewiń tutaj"
IDS_SCROLLTOP "Przewiń na początek"
IDS_SCROLLBOTTOM "Przewiń na koniec"
IDS_SCROLLPAGE_UP "Poprzednia strona"
IDS_SCROLLPAGE_DOWN "Następna strona"
IDS_SCROLLUP "Przewiń do góry"
IDS_SCROLLDOWN "Przewiń na dół"
IDS_COMMAND_PROMPT "Wiersz polecenia"
END

View file

@ -0,0 +1,25 @@
/* Translation and UTF-8 Conversion by mkbu95 <mkbu95@gmail.com> (May, 2012) */
LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_EDIT "Editar"
IDS_MARK "Marcar"
IDS_COPY "Copiar\tEnter"
IDS_PASTE "Colar"
IDS_SELECTALL "Selecionar Tudo"
IDS_SCROLL "Rolar"
IDS_FIND "Procurar..."
IDS_DEFAULTS "Padrões"
IDS_PROPERTIES "Propriedades"
IDS_SCROLLHERE "Rolar aqui"
IDS_SCROLLTOP "Rolar até o topo"
IDS_SCROLLBOTTOM "Rolar até o fim"
IDS_SCROLLPAGE_UP "Page up"
IDS_SCROLLPAGE_DOWN "Page down"
IDS_SCROLLUP "Scroll up"
IDS_SCROLLDOWN "Scroll down"
IDS_COMMAND_PROMPT "Prompt de Comando"
END

View file

@ -0,0 +1,30 @@
/*
* FILE: subsystems/win32/csrss/win32csr/lang/ro-RO.rc
* ReactOS Project (http://www.reactos.org)
* TRANSLATOR: Fulea Ștefan (PM on ReactOS Forum at fulea.stefan)
* CHANGE LOG: 2011-10-16 initial translation
*/
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_EDIT "Editare"
IDS_MARK "Marchează"
IDS_COPY "Copiază\tEnter"
IDS_PASTE "Lipește"
IDS_SELECTALL "Selectează tot"
IDS_SCROLL "Derulează"
IDS_FIND "Găsire…"
IDS_DEFAULTS "Implicite"
IDS_PROPERTIES "Proprietăți"
IDS_SCROLLHERE "Derulează aici"
IDS_SCROLLTOP "Derulează la început"
IDS_SCROLLBOTTOM "Derulează la sfârșit"
IDS_SCROLLPAGE_UP "Pagina anterioară"
IDS_SCROLLPAGE_DOWN "Pagina următoare"
IDS_SCROLLUP "Derulează în sus"
IDS_SCROLLDOWN "Derulează în jos"
IDS_COMMAND_PROMPT "Linie de comandă"
END

View file

@ -0,0 +1,23 @@
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_EDIT "Изменить"
IDS_MARK "Пометить"
IDS_COPY "Копировать\tEnter"
IDS_PASTE "Вставить"
IDS_SELECTALL "Выделить все"
IDS_SCROLL "Прокрутить"
IDS_FIND "Искать..."
IDS_DEFAULTS "Умолчания"
IDS_PROPERTIES "Свойства"
IDS_SCROLLHERE "Scroll Here"
IDS_SCROLLTOP "Scroll Top"
IDS_SCROLLBOTTOM "Прокрутить вниз"
IDS_SCROLLPAGE_UP "Вверх страницы"
IDS_SCROLLPAGE_DOWN "Вниз страницы"
IDS_SCROLLUP "Прокрутить вверх"
IDS_SCROLLDOWN "Scroll Down"
IDS_COMMAND_PROMPT "Command Prompt"
END

View file

@ -0,0 +1,28 @@
/* TRANSLATOR: Mário Kačmár /Mario Kacmar/ aka Kario (kario@szm.sk)
* DATE OF TR: 29-05-2008
* LastChange: 12-04-2011
*/
LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_EDIT "Upraviť"
IDS_MARK "Označiť"
IDS_COPY "Kopírovať\tEnter"
IDS_PASTE "Vložiť"
IDS_SELECTALL "Vybrať všetko"
IDS_SCROLL "Rolovať"
IDS_FIND "Nájsť..." //Find
IDS_DEFAULTS "Predvolené" //Defaults
IDS_PROPERTIES "Vlastnosti"
IDS_SCROLLHERE "Rolovať sem"
IDS_SCROLLTOP "K hornému okraju"
IDS_SCROLLBOTTOM "K dolnému okraju"
IDS_SCROLLPAGE_UP "O stránku vyššie"
IDS_SCROLLPAGE_DOWN "O stránku nižšie"
IDS_SCROLLUP "Rolovať nahor"
IDS_SCROLLDOWN "Rolovať nadol"
IDS_COMMAND_PROMPT "Príkazový riadok"
END

View file

@ -0,0 +1,30 @@
/*
* PROJECT: ReactOS CSRSS subsystem
* FILE: subsystems/win32/csrss/win32csr/lang/sv-SE.rc
* PURPOSE: Swedish resource file
* Translation: Jaix Bly
*/
LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_EDIT "Redigera"
IDS_MARK "Markera"
IDS_COPY "Kopiera\tEnter"
IDS_PASTE "Klistra in"
IDS_SELECTALL "Markera Allt"
IDS_SCROLL "Skrolla"
IDS_FIND "Sök..."
IDS_DEFAULTS "Ursprunglig"
IDS_PROPERTIES "Egenskaper"
IDS_SCROLLHERE "Skrolla hit"
IDS_SCROLLTOP "Skrolla till topp"
IDS_SCROLLBOTTOM "Skrolla till botten"
IDS_SCROLLPAGE_UP "Sida upp"
IDS_SCROLLPAGE_DOWN "Sida ner"
IDS_SCROLLUP "Skrolla upp"
IDS_SCROLLDOWN "Skrolla ner"
IDS_COMMAND_PROMPT "Command Prompt"
END

View file

@ -0,0 +1,43 @@
/*
* Turkish resources
*
* Copyright 2012 Arda Tanrikulu <ardatanrikulu@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_EDIT "Düzenle"
IDS_MARK "İşaretle"
IDS_COPY "Kopyala\tEnter"
IDS_PASTE "Yapıştır"
IDS_SELECTALL "Tümünü Seç"
IDS_SCROLL "Yuvarla"
IDS_FIND "Bul..."
IDS_DEFAULTS "Varsayılanlar"
IDS_PROPERTIES "Özellikler"
IDS_SCROLLHERE "Buraya yuvarla"
IDS_SCROLLTOP "Üste yuvarla"
IDS_SCROLLBOTTOM "Alta yuvarla"
IDS_SCROLLPAGE_UP "Sayfa yukarı"
IDS_SCROLLPAGE_DOWN "Sayfa aşağı"
IDS_SCROLLUP "Yukarı yuvarla"
IDS_SCROLLDOWN "Aşağı yuvarla"
IDS_COMMAND_PROMPT "Komut İstemi"
END

View file

@ -0,0 +1,31 @@
/*
* PROJECT: ReactOS CSRSS subsystem
* LICENSE: GPL - See COPYING in the top level directory
* FILE: subsystems/win32/csrss/win32csr/lang/uk-UA.rc
* PURPOSE: Ukraianian resource file
* TRANSLATOR: Artem Reznikov
*/
LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_EDIT "Редагувати"
IDS_MARK "Виділити"
IDS_COPY "Копіювати\tEnter"
IDS_PASTE "Вставити"
IDS_SELECTALL "Виділити все"
IDS_SCROLL "Прокрутити"
IDS_FIND "Знайти..."
IDS_DEFAULTS "Замовчування"
IDS_PROPERTIES "Властивості"
IDS_SCROLLHERE "Прокрутити сюди"
IDS_SCROLLTOP "Прокрутити на початок"
IDS_SCROLLBOTTOM "Прокрутити на кінець"
IDS_SCROLLPAGE_UP "Попередня сотрінка"
IDS_SCROLLPAGE_DOWN "Наступна сторінка"
IDS_SCROLLUP "Прокрутити догори"
IDS_SCROLLDOWN "Прокрутити донизу"
IDS_COMMAND_PROMPT "Командний рядок"
END

View file

@ -0,0 +1,23 @@
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
STRINGTABLE
BEGIN
IDS_EDIT "编辑"
IDS_MARK "标记"
IDS_COPY "复制\tEnter"
IDS_PASTE "黏贴"
IDS_SELECTALL "全部选择"
IDS_SCROLL "滚动"
IDS_FIND "查找..."
IDS_DEFAULTS "默认"
IDS_PROPERTIES "属性"
IDS_SCROLLHERE "滚动到此"
IDS_SCROLLTOP "滚动至顶端"
IDS_SCROLLBOTTOM "滚动至末端"
IDS_SCROLLPAGE_UP "上一页"
IDS_SCROLLPAGE_DOWN "下一页"
IDS_SCROLLUP "向上滚动"
IDS_SCROLLDOWN "向下滚动"
IDS_COMMAND_PROMPT "Command Prompt"
END

View file

@ -0,0 +1,23 @@
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
STRINGTABLE
BEGIN
IDS_EDIT "編輯"
IDS_MARK "標記"
IDS_COPY "複製\tEnter"
IDS_PASTE "黏貼"
IDS_SELECTALL "全部選擇"
IDS_SCROLL "滾動"
IDS_FIND "尋找..."
IDS_DEFAULTS "預設"
IDS_PROPERTIES "屬性"
IDS_SCROLLHERE "滾動到此 "
IDS_SCROLLTOP "滾動到頂置"
IDS_SCROLLBOTTOM "滾動到末端"
IDS_SCROLLPAGE_UP "上一頁"
IDS_SCROLLPAGE_DOWN "下一頁"
IDS_SCROLLUP "向上滾動"
IDS_SCROLLDOWN "向下滾動"
IDS_COMMAND_PROMPT "Command Prompt"
END

View file

@ -1,7 +1,7 @@
/*
* PROJECT: ReactOS CSRSS
* LICENSE: GPL - See COPYING in the top level directory
* FILE: subsystems/win32/csrss/win32csr/lineinput.c
* FILE: win32ss/user/consrv/lineinput.c
* PURPOSE: Console line input functions
* PROGRAMMERS: Jeffrey Morlan
*/
@ -40,15 +40,15 @@ HistoryCurrentBuffer(PCSRSS_CONSOLE Console)
}
/* Couldn't find the buffer, create a new one */
Hist = HeapAlloc(Win32CsrApiHeap, 0, sizeof(HISTORY_BUFFER) + ExeName.Length);
Hist = HeapAlloc(ConSrvHeap, 0, sizeof(HISTORY_BUFFER) + ExeName.Length);
if (!Hist)
return NULL;
Hist->MaxEntries = Console->HistoryBufferSize;
Hist->NumEntries = 0;
Hist->Entries = HeapAlloc(Win32CsrApiHeap, 0, Hist->MaxEntries * sizeof(UNICODE_STRING));
Hist->Entries = HeapAlloc(ConSrvHeap, 0, Hist->MaxEntries * sizeof(UNICODE_STRING));
if (!Hist->Entries)
{
HeapFree(Win32CsrApiHeap, 0, Hist);
HeapFree(ConSrvHeap, 0, Hist);
return NULL;
}
Hist->ExeName.Length = Hist->ExeName.MaximumLength = ExeName.Length;
@ -142,12 +142,12 @@ HistoryDeleteBuffer(PHISTORY_BUFFER Hist)
return;
while (Hist->NumEntries != 0)
RtlFreeUnicodeString(&Hist->Entries[--Hist->NumEntries]);
HeapFree(Win32CsrApiHeap, 0, Hist->Entries);
HeapFree(ConSrvHeap, 0, Hist->Entries);
RemoveEntryList(&Hist->ListEntry);
HeapFree(Win32CsrApiHeap, 0, Hist);
HeapFree(ConSrvHeap, 0, Hist);
}
CSR_API(CsrGetCommandHistoryLength)
CSR_API(SrvGetConsoleCommandHistoryLength)
{
PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
PCSRSS_CONSOLE Console;
@ -178,7 +178,7 @@ CSR_API(CsrGetCommandHistoryLength)
return Status;
}
CSR_API(CsrGetCommandHistory)
CSR_API(SrvGetConsoleCommandHistory)
{
PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
PCSRSS_CONSOLE Console;
@ -221,7 +221,7 @@ CSR_API(CsrGetCommandHistory)
return Status;
}
CSR_API(CsrExpungeCommandHistory)
CSR_API(SrvExpungeConsoleCommandHistory)
{
PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
PCSRSS_CONSOLE Console;
@ -245,7 +245,7 @@ CSR_API(CsrExpungeCommandHistory)
return Status;
}
CSR_API(CsrSetHistoryNumberCommands)
CSR_API(SrvSetConsoleNumberOfCommands)
{
PCSR_PROCESS ProcessData = CsrGetClientThread()->Process;
PCSRSS_CONSOLE Console;
@ -268,7 +268,7 @@ CSR_API(CsrSetHistoryNumberCommands)
if (Hist)
{
OldEntryList = Hist->Entries;
NewEntryList = HeapAlloc(Win32CsrApiHeap, 0,
NewEntryList = HeapAlloc(ConSrvHeap, 0,
MaxEntries * sizeof(UNICODE_STRING));
if (!NewEntryList)
{
@ -286,7 +286,7 @@ CSR_API(CsrSetHistoryNumberCommands)
Hist->MaxEntries = MaxEntries;
Hist->Entries = memcpy(NewEntryList, Hist->Entries,
Hist->NumEntries * sizeof(UNICODE_STRING));
HeapFree(Win32CsrApiHeap, 0, OldEntryList);
HeapFree(ConSrvHeap, 0, OldEntryList);
}
}
ConioUnlockConsole(Console);
@ -294,7 +294,7 @@ CSR_API(CsrSetHistoryNumberCommands)
return Status;
}
CSR_API(CsrGetHistoryInfo)
CSR_API(SrvGetConsoleHistory)
{
PCSRSS_CONSOLE Console;
NTSTATUS Status = ConioConsoleFromProcessData(CsrGetClientThread()->Process, &Console);
@ -308,7 +308,7 @@ CSR_API(CsrGetHistoryInfo)
return Status;
}
CSR_API(CsrSetHistoryInfo)
CSR_API(SrvSetConsoleHistory)
{
PCSRSS_CONSOLE Console;
NTSTATUS Status = ConioConsoleFromProcessData(CsrGetClientThread()->Process, &Console);

View file

Before

Width:  |  Height:  |  Size: 231 KiB

After

Width:  |  Height:  |  Size: 231 KiB

View file

@ -0,0 +1,31 @@
#include <windows.h>
#include "resource.h"
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
1 ICON DISCARDABLE res/terminal.ico
#include "lang/bg-BG.rc"
#include "lang/cs-CZ.rc"
#include "lang/de-DE.rc"
#include "lang/el-GR.rc"
#include "lang/en-US.rc"
#include "lang/es-ES.rc"
#include "lang/fr-FR.rc"
#include "lang/id-ID.rc"
#include "lang/it-IT.rc"
#include "lang/ja-JP.rc"
#include "lang/no-NO.rc"
#include "lang/sk-SK.rc"
#include "lang/sv-SE.rc"
#include "lang/zh-CN.rc"
#include "lang/zh-TW.rc"
// UTF-8
#pragma code_page(65001)
#include "lang/pl-PL.rc"
#include "lang/pt-BR.rc"
#include "lang/ro-RO.rc"
#include "lang/ru-RU.rc"
#include "lang/uk-UA.rc"
#include "lang/tr-TR.rc"

View file

@ -0,0 +1,41 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS Console Server DLL
* FILE: win32ss/user/consrv/init.c
* PURPOSE: Initialization
* PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
*/
#include "consrv.h"
#define NDEBUG
#include <debug.h>
/* Ensure that a captured buffer is safe to access */
BOOL FASTCALL
Win32CsrValidateBuffer(PCSR_PROCESS ProcessData, PVOID Buffer,
SIZE_T NumElements, SIZE_T ElementSize)
{
/* Check that the following conditions are true:
* 1. The start of the buffer is somewhere within the process's
* shared memory section view.
* 2. The remaining space in the view is at least as large as the buffer.
* (NB: Please don't try to "optimize" this by using multiplication
* instead of division; remember that 2147483648 * 2 = 0.)
* 3. The buffer is DWORD-aligned.
*/
ULONG_PTR Offset = (BYTE *)Buffer - (BYTE *)ProcessData->ClientViewBase;
if (Offset >= ProcessData->ClientViewBounds
|| NumElements > (ProcessData->ClientViewBounds - Offset) / ElementSize
|| (Offset & (sizeof(DWORD) - 1)) != 0)
{
DPRINT1("Invalid buffer %p(%u*%u); section view is %p(%u)\n",
Buffer, NumElements, ElementSize,
ProcessData->ClientViewBase, ProcessData->ClientViewBounds);
return FALSE;
}
return TRUE;
}
/* EOF */

View file

@ -1,8 +1,8 @@
/* $Id$
/* $Id: tuiconsole.c 47693 2010-06-08 06:38:14Z jmorlan $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
* FILE: subsys/csrss/win32csr/tuiconsole.c
* FILE: win32ss/user/consrv/tuiconsole.c
* PURPOSE: Implementation of text-mode consoles
*/
@ -161,7 +161,7 @@ TuiDrawRegion(PCSRSS_CONSOLE Console, SMALL_RECT *Region)
ConsoleDrawSize = sizeof(CONSOLE_DRAW) +
(ConioRectWidth(Region) * ConioRectHeight(Region)) * 2;
ConsoleDraw = HeapAlloc(Win32CsrApiHeap, 0, ConsoleDrawSize);
ConsoleDraw = HeapAlloc(ConSrvHeap, 0, ConsoleDrawSize);
if (NULL == ConsoleDraw)
{
DPRINT1("HeapAlloc failed\n");
@ -180,11 +180,11 @@ TuiDrawRegion(PCSRSS_CONSOLE Console, SMALL_RECT *Region)
NULL, 0, ConsoleDraw, ConsoleDrawSize, &BytesReturned, NULL))
{
DPRINT1("Failed to draw console\n");
HeapFree(Win32CsrApiHeap, 0, ConsoleDraw);
HeapFree(ConSrvHeap, 0, ConsoleDraw);
return;
}
HeapFree(Win32CsrApiHeap, 0, ConsoleDraw);
HeapFree(ConSrvHeap, 0, ConsoleDraw);
}
static VOID WINAPI
@ -437,7 +437,7 @@ TuiSwapConsole(int Next)
SwapConsole = (0 < Next ? SwapConsole->Next : SwapConsole->Prev);
Title.MaximumLength = RtlUnicodeStringToAnsiSize(&SwapConsole->Title);
Title.Length = 0;
Buffer = HeapAlloc(Win32CsrApiHeap,
Buffer = HeapAlloc(ConSrvHeap,
0,
sizeof(COORD) + Title.MaximumLength);
pos = (COORD *)Buffer;
@ -454,7 +454,7 @@ TuiSwapConsole(int Next)
{
DPRINT1( "Error writing to console\n" );
}
HeapFree(Win32CsrApiHeap, 0, Buffer);
HeapFree(ConSrvHeap, 0, Buffer);
LeaveCriticalSection(&ActiveConsoleLock);
return TRUE;

View file

@ -1,8 +1,8 @@
/* $Id$
/* $Id: tuiconsole.h 21947 2006-05-20 10:49:56Z fireball $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
* FILE: subsys/csrss/win32csr/tuiconsole.h
* FILE: win32ss/user/consrv/tuiconsole.h
* PURPOSE: Interface to text-mode consoles
*/

View file

@ -1,29 +1,18 @@
include_directories(
BEFORE .
${REACTOS_SOURCE_DIR}/subsystems/win32/csrss/include
${REACTOS_SOURCE_DIR}/subsystems/win32/csrsrv/include
${REACTOS_SOURCE_DIR}/include/reactos/subsys
${REACTOS_SOURCE_DIR}/include/reactos/drivers
${REACTOS_SOURCE_DIR}/dll/cpl/console
${REACTOS_SOURCE_DIR}/win32ss/include)
spec2def(win32csr.dll win32csr.spec)
set_rc_compiler()
list(APPEND SOURCE
alias.c
coninput.c
conoutput.c
console.c
desktopbg.c
dllmain.c
exitros.c
guiconsole.c
handle.c
harderror.c
lineinput.c
tuiconsole.c
win32csr.rc
${CMAKE_CURRENT_BINARY_DIR}/win32csr.def)

View file

@ -29,6 +29,9 @@
#include "w32csr.h"
#include <debug.h>
/***
*** Move it into winsrv
***/
#define DESKTOP_WINDOW_ATOM 32769
#define PM_SHOW_DESKTOP 1

View file

@ -1,4 +1,4 @@
/* $Id$
/* $Id: desktopbg.h 47315 2010-05-23 00:51:29Z jmorlan $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
@ -8,7 +8,8 @@
#pragma once
#include "api.h"
#include <csr/csrsrv.h>
//#include "api.h"
/* Api functions */
CSR_API(CsrCreateDesktop);

View file

@ -11,8 +11,6 @@
#include "w32csr.h"
#include <debug.h>
/* Not defined in any header file */
extern VOID WINAPI PrivateCsrssManualGuiCheck(LONG Check);
/* GLOBALS *******************************************************************/
@ -27,66 +25,27 @@ PCSR_API_ROUTINE Win32CsrApiDefinitions[] =
CsrVerifyHandle,
CsrDuplicateHandle,
CsrGetInputWaitHandle,
CsrWriteConsole,
CsrReadConsole,
CsrAllocConsole,
CsrFreeConsole,
CsrGetScreenBufferInfo,
CsrSetCursor,
CsrFillOutputChar,
CsrReadInputEvent,
CsrWriteConsoleOutputChar,
CsrWriteConsoleOutputAttrib,
CsrFillOutputAttrib,
CsrGetCursorInfo,
CsrSetCursorInfo,
CsrSetTextAttrib,
CsrGetConsoleMode,
CsrSetConsoleMode,
CsrCreateScreenBuffer,
CsrSetScreenBuffer,
CsrSetTitle,
CsrGetTitle,
CsrWriteConsoleOutput,
CsrFlushInputBuffer,
CsrScrollConsoleScreenBuffer,
CsrReadConsoleOutputChar,
CsrReadConsoleOutputAttrib,
CsrGetNumberOfConsoleInputEvents,
CsrExitReactos,
CsrPeekConsoleInput,
CsrReadConsoleOutput,
CsrWriteConsoleInput,
CsrHardwareStateProperty,
CsrGetConsoleWindow,
CsrCreateDesktop,
CsrShowDesktop,
CsrHideDesktop,
CsrSetConsoleIcon,
CsrSetLogonNotifyWindow,
CsrRegisterLogonProcess,
CsrGetConsoleCodePage,
CsrSetConsoleCodePage,
CsrGetConsoleOutputCodePage,
CsrSetConsoleOutputCodePage,
CsrGetProcessList,
CsrAddConsoleAlias,
CsrGetConsoleAlias,
CsrGetAllConsoleAliases,
CsrGetAllConsoleAliasesLength,
CsrGetConsoleAliasesExes,
CsrGetConsoleAliasesExesLength,
CsrGenerateCtrlEvent,
CsrSetScreenBufferSize,
CsrGetConsoleSelectionInfo,
CsrGetCommandHistoryLength,
CsrGetCommandHistory,
CsrExpungeCommandHistory,
CsrSetHistoryNumberCommands,
CsrGetHistoryInfo,
CsrSetHistoryInfo
};
/*
static CSRSS_API_DEFINITION Win32CsrApiDefinitions[] =
{
@ -335,32 +294,6 @@ DllMain(HANDLE hDll,
return TRUE;
}
/* Ensure that a captured buffer is safe to access */
BOOL FASTCALL
Win32CsrValidateBuffer(PCSR_PROCESS ProcessData, PVOID Buffer,
SIZE_T NumElements, SIZE_T ElementSize)
{
/* Check that the following conditions are true:
* 1. The start of the buffer is somewhere within the process's
* shared memory section view.
* 2. The remaining space in the view is at least as large as the buffer.
* (NB: Please don't try to "optimize" this by using multiplication
* instead of division; remember that 2147483648 * 2 = 0.)
* 3. The buffer is DWORD-aligned.
*/
ULONG_PTR Offset = (BYTE *)Buffer - (BYTE *)ProcessData->ClientViewBase;
if (Offset >= ProcessData->ClientViewBounds
|| NumElements > (ProcessData->ClientViewBounds - Offset) / ElementSize
|| (Offset & (sizeof(DWORD) - 1)) != 0)
{
DPRINT1("Invalid buffer %p(%u*%u); section view is %p(%u)\n",
Buffer, NumElements, ElementSize,
ProcessData->ClientViewBase, ProcessData->ClientViewBounds);
return FALSE;
}
return TRUE;
}
NTSTATUS FASTCALL
Win32CsrEnumProcesses(CSRSS_ENUM_PROCESS_PROC EnumProc,
PVOID Context)
@ -397,11 +330,10 @@ CSR_SERVER_DLL_INIT(Win32CsrInitialization)
NtUserInitialize(0, NULL, NULL);
PrivateCsrssManualGuiCheck(0);
CsrInitConsoleSupport(); // Go into consrv.dll
/* Setup the DLL Object */
LoadedServerDll->ApiBase = BASESRV_FIRST_API_NUMBER; // ApiNumberBase
LoadedServerDll->HighestApiSupported = BasepMaxApiNumber; // MaxApiNumber
LoadedServerDll->ApiBase = BASESRV_FIRST_API_NUMBER;
LoadedServerDll->HighestApiSupported = BasepMaxApiNumber;
LoadedServerDll->DispatchTable = Win32CsrApiDefinitions;
// LoadedServerDll->ValidTable = BaseServerApiServerValidTable;
// LoadedServerDll->NameTable = BaseServerApiNameTable;

View file

@ -1,4 +1,4 @@
/* $Id$
/* $Id: exitros.c 57570 2012-10-17 23:10:40Z hbelusca $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS CSRSS subsystem
@ -6,6 +6,11 @@
* PURPOSE: Logout/shutdown
*/
/***
*** Move it into winsrv
***/
/* INCLUDES ******************************************************************/
#define NDEBUG
#include "w32csr.h"

View file

@ -1,4 +1,4 @@
/* $Id$
/* $Id: resource.h 51293 2011-04-09 12:01:36Z mkupfer $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS Win32 subsystem

View file

@ -12,17 +12,12 @@
#include <conio.h>
#include <csrplugin.h>
#include <desktopbg.h>
#include "guiconsole.h"
#include "tuiconsole.h"
/* Public Win32K Headers */
#include <ntuser.h>
#include "resource.h"
/* shared header with console.dll */
#include "console.h"
VOID
WINAPI
Win32CsrHardError(

View file

@ -1,4 +1,4 @@
/* $Id$
/* $Id: win32csr.h 55699 2012-02-19 06:44:09Z ion $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
@ -14,30 +14,31 @@
extern HANDLE Win32CsrApiHeap;
extern HINSTANCE Win32CsrDllHandle;
/********** Move that to consrv ************/
typedef struct Object_tt
{
LONG Type;
struct tagCSRSS_CONSOLE *Console;
LONG AccessRead, AccessWrite;
LONG ExclusiveRead, ExclusiveWrite;
LONG HandleCount;
LONG Type;
struct tagCSRSS_CONSOLE *Console;
LONG AccessRead, AccessWrite;
LONG ExclusiveRead, ExclusiveWrite;
LONG HandleCount;
} Object_t;
typedef struct _CSRSS_HANDLE
{
Object_t *Object;
DWORD Access;
BOOL Inheritable;
DWORD ShareMode;
Object_t *Object;
DWORD Access;
BOOL Inheritable;
DWORD ShareMode;
} CSRSS_HANDLE, *PCSRSS_HANDLE;
typedef VOID (WINAPI *CSR_CLEANUP_OBJECT_PROC)(Object_t *Object);
typedef struct tagCSRSS_OBJECT_DEFINITION
{
LONG Type;
CSR_CLEANUP_OBJECT_PROC CsrCleanupObjectProc;
} CSRSS_OBJECT_DEFINITION, *PCSRSS_OBJECT_DEFINITION;
BOOL FASTCALL Win32CsrValidateBuffer(PCSR_PROCESS ProcessData,
PVOID Buffer,
SIZE_T NumElements,
SIZE_T ElementSize);
/* handle.c */
NTSTATUS FASTCALL Win32CsrInsertObject(PCSR_PROCESS ProcessData,
@ -52,9 +53,11 @@ NTSTATUS FASTCALL Win32CsrLockObject(PCSR_PROCESS ProcessData,
DWORD Access,
long Type);
VOID FASTCALL Win32CsrUnlockObject(Object_t *Object);
NTSTATUS FASTCALL Win32CsrReleaseObject(PCSR_PROCESS ProcessData,
HANDLE Object);
VOID WINAPI Win32CsrReleaseConsole(PCSR_PROCESS ProcessData);
NTSTATUS WINAPI Win32CsrDuplicateHandleTable(PCSR_PROCESS SourceProcessData,
PCSR_PROCESS TargetProcessData);
CSR_API(CsrGetHandle);
@ -63,10 +66,24 @@ CSR_API(CsrVerifyHandle);
CSR_API(CsrDuplicateHandle);
CSR_API(CsrGetInputWaitHandle);
BOOL FASTCALL Win32CsrValidateBuffer(PCSR_PROCESS ProcessData,
PVOID Buffer,
SIZE_T NumElements,
SIZE_T ElementSize);
/*******************************************/
/*
typedef VOID (WINAPI *CSR_CLEANUP_OBJECT_PROC)(Object_t *Object);
typedef struct tagCSRSS_OBJECT_DEFINITION
{
LONG Type;
CSR_CLEANUP_OBJECT_PROC CsrCleanupObjectProc;
} CSRSS_OBJECT_DEFINITION, *PCSRSS_OBJECT_DEFINITION;
*/
NTSTATUS FASTCALL Win32CsrEnumProcesses(CSRSS_ENUM_PROCESS_PROC EnumProc,
PVOID Context);
@ -75,6 +92,4 @@ CSR_API(CsrExitReactos);
CSR_API(CsrSetLogonNotifyWindow);
CSR_API(CsrRegisterLogonProcess);
CSR_API(CsrSoundSentry);
/* EOF */