HANDLE ConSrvHeap = NULL; // Our own heap.
// Windows Server 2003 table from http://j00ru.vexillium.org/csrss_list/api_list.html#Windows_2k3
-// plus a little bit of Windows 7.
PCSR_API_ROUTINE ConsoleServerApiDispatchTable[ConsolepMaxApiNumber - CONSRV_FIRST_API_NUMBER] =
{
SrvOpenConsole,
SrvWriteConsoleOutputString,
SrvFillConsoleOutput,
SrvGetConsoleMode,
- // SrvGetConsoleNumberOfFonts,
+ SrvGetConsoleNumberOfFonts,
SrvGetConsoleNumberOfInputEvents,
SrvGetConsoleScreenBufferInfo,
SrvGetConsoleCursorInfo,
- // SrvGetConsoleMouseInfo,
- // SrvGetConsoleFontInfo,
- // SrvGetConsoleFontSize,
- // SrvGetConsoleCurrentFont,
+ SrvGetConsoleMouseInfo,
+ SrvGetConsoleFontInfo,
+ SrvGetConsoleFontSize,
+ SrvGetConsoleCurrentFont,
SrvSetConsoleMode,
SrvSetConsoleActiveScreenBuffer,
SrvFlushConsoleInputBuffer,
SrvSetConsoleWindowInfo,
SrvScrollConsoleScreenBuffer,
SrvSetConsoleTextAttribute,
- // SrvSetConsoleFont,
+ SrvSetConsoleFont,
SrvSetConsoleIcon,
SrvReadConsole,
SrvWriteConsole,
SrvDuplicateHandle,
- // SrvGetHandleInformation,
- // SrvSetHandleInformation,
+ SrvGetHandleInformation,
+ SrvSetHandleInformation,
SrvCloseHandle,
SrvVerifyConsoleIoHandle,
- SrvAllocConsole,
- SrvFreeConsole,
+ SrvAllocConsole, // Not present in Win7
+ SrvFreeConsole, // Not present in Win7
SrvGetConsoleTitle,
SrvSetConsoleTitle,
SrvCreateConsoleScreenBuffer,
SrvInvalidateBitMapRect,
- // SrvVDMConsoleOperation,
+ SrvVDMConsoleOperation,
SrvSetConsoleCursor,
SrvShowConsoleCursor,
SrvConsoleMenuControl,
SrvSetConsolePalette,
SrvSetConsoleDisplayMode,
- // SrvRegisterConsoleVDM,
+ SrvRegisterConsoleVDM,
SrvGetConsoleHardwareState,
SrvSetConsoleHardwareState,
SrvGetConsoleDisplayMode,
SrvSetConsoleNumberOfCommands,
SrvGetConsoleCommandHistoryLength,
SrvGetConsoleCommandHistory,
- // SrvSetConsoleCommandHistoryMode,
+ SrvSetConsoleCommandHistoryMode, // Not present in Vista+
SrvGetConsoleCP,
SrvSetConsoleCP,
- // SrvSetConsoleKeyShortcuts,
+ SrvSetConsoleKeyShortcuts,
SrvSetConsoleMenuClose,
- // SrvConsoleNotifyLastClose,
+ SrvConsoleNotifyLastClose,
SrvGenerateConsoleCtrlEvent,
- // SrvGetConsoleKeyboardLayoutName,
+ SrvGetConsoleKeyboardLayoutName,
SrvGetConsoleWindow,
- // SrvGetConsoleCharType,
- // SrvSetConsoleLocalEUDC,
- // SrvSetConsoleCursorMode,
- // SrvGetConsoleCursorMode,
- // SrvRegisterConsoleOS2,
- // SrvSetConsoleOS2OemFormat,
- // SrvGetConsoleNlsMode,
- // SrvSetConsoleNlsMode,
- // SrvRegisterConsoleIME,
- // SrvUnregisterConsoleIME,
- // SrvGetConsoleLangId,
- SrvAttachConsole,
+ SrvGetConsoleCharType,
+ SrvSetConsoleLocalEUDC,
+ SrvSetConsoleCursorMode,
+ SrvGetConsoleCursorMode,
+ SrvRegisterConsoleOS2,
+ SrvSetConsoleOS2OemFormat,
+ SrvGetConsoleNlsMode,
+ SrvSetConsoleNlsMode,
+ SrvRegisterConsoleIME, // Not present in Win7
+ SrvUnregisterConsoleIME, // Not present in Win7
+ // SrvQueryConsoleIME, // Added only in Vista and Win2k8, not present in Win7
+ SrvGetConsoleLangId,
+ SrvAttachConsole, // Not present in Win7
SrvGetConsoleSelectionInfo,
SrvGetConsoleProcessList,
- SrvGetConsoleHistory,
- SrvSetConsoleHistory,
+
+ SrvGetConsoleHistory, // Added in Vista+
+ SrvSetConsoleHistory, // Added in Vista+
+ // SrvSetConsoleCurrentFont, // Added in Vista+
+ // SrvSetScreenBufferInfo, // Added in Vista+
+ // SrvConsoleClientConnect, // Added in Win7
};
BOOLEAN ConsoleServerApiServerValidTable[ConsolepMaxApiNumber - CONSRV_FIRST_API_NUMBER] =
FALSE, // SrvWriteConsoleOutputString,
FALSE, // SrvFillConsoleOutput,
FALSE, // SrvGetConsoleMode,
- // FALSE, // SrvGetConsoleNumberOfFonts,
+ FALSE, // SrvGetConsoleNumberOfFonts,
FALSE, // SrvGetConsoleNumberOfInputEvents,
FALSE, // SrvGetConsoleScreenBufferInfo,
FALSE, // SrvGetConsoleCursorInfo,
- // FALSE, // SrvGetConsoleMouseInfo,
- // FALSE, // SrvGetConsoleFontInfo,
- // FALSE, // SrvGetConsoleFontSize,
- // FALSE, // SrvGetConsoleCurrentFont,
+ FALSE, // SrvGetConsoleMouseInfo,
+ FALSE, // SrvGetConsoleFontInfo,
+ FALSE, // SrvGetConsoleFontSize,
+ FALSE, // SrvGetConsoleCurrentFont,
FALSE, // SrvSetConsoleMode,
FALSE, // SrvSetConsoleActiveScreenBuffer,
FALSE, // SrvFlushConsoleInputBuffer,
FALSE, // SrvSetConsoleWindowInfo,
FALSE, // SrvScrollConsoleScreenBuffer,
FALSE, // SrvSetConsoleTextAttribute,
- // FALSE, // SrvSetConsoleFont,
+ FALSE, // SrvSetConsoleFont,
FALSE, // SrvSetConsoleIcon,
FALSE, // SrvReadConsole,
FALSE, // SrvWriteConsole,
FALSE, // SrvDuplicateHandle,
- // FALSE, // SrvGetHandleInformation,
- // FALSE, // SrvSetHandleInformation,
+ FALSE, // SrvGetHandleInformation,
+ FALSE, // SrvSetHandleInformation,
FALSE, // SrvCloseHandle,
FALSE, // SrvVerifyConsoleIoHandle,
FALSE, // SrvAllocConsole,
FALSE, // SrvSetConsoleTitle,
FALSE, // SrvCreateConsoleScreenBuffer,
FALSE, // SrvInvalidateBitMapRect,
- // FALSE, // SrvVDMConsoleOperation,
+ FALSE, // SrvVDMConsoleOperation,
FALSE, // SrvSetConsoleCursor,
FALSE, // SrvShowConsoleCursor,
FALSE, // SrvConsoleMenuControl,
FALSE, // SrvSetConsolePalette,
FALSE, // SrvSetConsoleDisplayMode,
- // FALSE, // SrvRegisterConsoleVDM,
+ FALSE, // SrvRegisterConsoleVDM,
FALSE, // SrvGetConsoleHardwareState,
FALSE, // SrvSetConsoleHardwareState,
TRUE, // SrvGetConsoleDisplayMode,
FALSE, // SrvSetConsoleNumberOfCommands,
FALSE, // SrvGetConsoleCommandHistoryLength,
FALSE, // SrvGetConsoleCommandHistory,
- // FALSE, // SrvSetConsoleCommandHistoryMode,
+ FALSE, // SrvSetConsoleCommandHistoryMode,
FALSE, // SrvGetConsoleCP,
FALSE, // SrvSetConsoleCP,
- // FALSE, // SrvSetConsoleKeyShortcuts,
+ FALSE, // SrvSetConsoleKeyShortcuts,
FALSE, // SrvSetConsoleMenuClose,
- // FALSE, // SrvConsoleNotifyLastClose,
+ FALSE, // SrvConsoleNotifyLastClose,
FALSE, // SrvGenerateConsoleCtrlEvent,
- // FALSE, // SrvGetConsoleKeyboardLayoutName,
+ 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, // SrvGetConsoleCharType,
+ FALSE, // SrvSetConsoleLocalEUDC,
+ FALSE, // SrvSetConsoleCursorMode,
+ FALSE, // SrvGetConsoleCursorMode,
+ FALSE, // SrvRegisterConsoleOS2,
+ FALSE, // SrvSetConsoleOS2OemFormat,
+ FALSE, // SrvGetConsoleNlsMode,
+ FALSE, // SrvSetConsoleNlsMode,
+ FALSE, // SrvRegisterConsoleIME,
+ FALSE, // SrvUnregisterConsoleIME,
+ // FALSE, // SrvQueryConsoleIME,
+ FALSE, // SrvGetConsoleLangId,
FALSE, // SrvAttachConsole,
FALSE, // SrvGetConsoleSelectionInfo,
FALSE, // SrvGetConsoleProcessList,
+
FALSE, // SrvGetConsoleHistory,
FALSE, // SrvSetConsoleHistory
+ // FALSE, // SrvSetConsoleCurrentFont,
+ // FALSE, // SrvSetScreenBufferInfo,
+ // FALSE, // SrvConsoleClientConnect,
};
+/*
+ * On Windows Server 2003, CSR Servers contain
+ * the API Names Table only in Debug Builds.
+ */
+#ifdef CSR_DBG
PCHAR ConsoleServerApiNameTable[ConsolepMaxApiNumber - CONSRV_FIRST_API_NUMBER] =
{
"OpenConsole",
"WriteConsoleOutputString",
"FillConsoleOutput",
"GetConsoleMode",
- // "GetConsoleNumberOfFonts",
+ "GetConsoleNumberOfFonts",
"GetConsoleNumberOfInputEvents",
"GetConsoleScreenBufferInfo",
"GetConsoleCursorInfo",
- // "GetConsoleMouseInfo",
- // "GetConsoleFontInfo",
- // "GetConsoleFontSize",
- // "GetConsoleCurrentFont",
+ "GetConsoleMouseInfo",
+ "GetConsoleFontInfo",
+ "GetConsoleFontSize",
+ "GetConsoleCurrentFont",
"SetConsoleMode",
"SetConsoleActiveScreenBuffer",
"FlushConsoleInputBuffer",
"SetConsoleWindowInfo",
"ScrollConsoleScreenBuffer",
"SetConsoleTextAttribute",
- // "SetConsoleFont",
+ "SetConsoleFont",
"SetConsoleIcon",
"ReadConsole",
"WriteConsole",
"DuplicateHandle",
- // "GetHandleInformation",
- // "SetHandleInformation",
+ "GetHandleInformation",
+ "SetHandleInformation",
"CloseHandle",
"VerifyConsoleIoHandle",
"AllocConsole",
"SetConsoleTitle",
"CreateConsoleScreenBuffer",
"InvalidateBitMapRect",
- // "VDMConsoleOperation",
+ "VDMConsoleOperation",
"SetConsoleCursor",
"ShowConsoleCursor",
"ConsoleMenuControl",
"SetConsolePalette",
"SetConsoleDisplayMode",
- // "RegisterConsoleVDM",
+ "RegisterConsoleVDM",
"GetConsoleHardwareState",
"SetConsoleHardwareState",
"GetConsoleDisplayMode",
"SetConsoleNumberOfCommands",
"GetConsoleCommandHistoryLength",
"GetConsoleCommandHistory",
- // "SetConsoleCommandHistoryMode",
+ "SetConsoleCommandHistoryMode",
"GetConsoleCP",
"SetConsoleCP",
- // "SetConsoleKeyShortcuts",
+ "SetConsoleKeyShortcuts",
"SetConsoleMenuClose",
- // "ConsoleNotifyLastClose",
+ "ConsoleNotifyLastClose",
"GenerateConsoleCtrlEvent",
- // "GetConsoleKeyboardLayoutName",
+ "GetConsoleKeyboardLayoutName",
"GetConsoleWindow",
- // "GetConsoleCharType",
- // "SetConsoleLocalEUDC",
- // "SetConsoleCursorMode",
- // "GetConsoleCursorMode",
- // "RegisterConsoleOS2",
- // "SetConsoleOS2OemFormat",
- // "GetConsoleNlsMode",
- // "SetConsoleNlsMode",
- // "RegisterConsoleIME",
- // "UnregisterConsoleIME",
- // "GetConsoleLangId",
+ "GetConsoleCharType",
+ "SetConsoleLocalEUDC",
+ "SetConsoleCursorMode",
+ "GetConsoleCursorMode",
+ "RegisterConsoleOS2",
+ "SetConsoleOS2OemFormat",
+ "GetConsoleNlsMode",
+ "SetConsoleNlsMode",
+ "RegisterConsoleIME",
+ "UnregisterConsoleIME",
+ // "QueryConsoleIME",
+ "GetConsoleLangId",
"AttachConsole",
"GetConsoleSelectionInfo",
"GetConsoleProcessList",
+
"GetConsoleHistory",
"SetConsoleHistory",
+ // "SetConsoleCurrentFont",
+ // "SetScreenBufferInfo",
+ // "ConsoleClientConnect",
};
-
+#endif
/* FUNCTIONS ******************************************************************/
ConnectionInfoLength == NULL ||
*ConnectionInfoLength != sizeof(CONSRV_API_CONNECTINFO) )
{
- DPRINT1("CONSRV: Connection failed\n");
+ DPRINT1("CONSRV: Connection failed - ConnectionInfo = 0x%p ; ConnectionInfoLength = 0x%p (%lu), wanted %lu\n",
+ ConnectionInfo,
+ ConnectionInfoLength,
+ ConnectionInfoLength ? *ConnectionInfoLength : (ULONG)-1,
+ sizeof(CONSRV_API_CONNECTINFO));
return STATUS_UNSUCCESSFUL;
}
/* If we don't need a console, then get out of here */
- if (!ConnectInfo->ConsoleNeeded || !ProcessData->ConsoleApp) // In fact, it is for GUI apps.
+ if (!ConnectInfo->ConsoleStartInfo.ConsoleNeeded || !ProcessData->ConsoleApp) // In fact, it is for GUI apps.
{
return STATUS_SUCCESS;
}
ConnectInfo->InputWaitHandle = ProcessData->ConsoleEvent;
/* Set the Property-Dialog and Control-Dispatcher handlers */
- ProcessData->PropDispatcher = ConnectInfo->PropDispatcher;
- ProcessData->CtrlDispatcher = ConnectInfo->CtrlDispatcher;
+ ProcessData->PropDispatcher = ConnectInfo->ConsoleStartInfo.PropDispatcher;
+ ProcessData->CtrlDispatcher = ConnectInfo->ConsoleStartInfo.CtrlDispatcher;
return STATUS_SUCCESS;
}
LoadedServerDll->HighestApiSupported = ConsolepMaxApiNumber;
LoadedServerDll->DispatchTable = ConsoleServerApiDispatchTable;
LoadedServerDll->ValidTable = ConsoleServerApiServerValidTable;
+#ifdef CSR_DBG
LoadedServerDll->NameTable = ConsoleServerApiNameTable;
+#endif
LoadedServerDll->SizeOfProcessData = sizeof(CONSOLE_PROCESS_DATA);
LoadedServerDll->ConnectCallback = ConSrvConnect;
LoadedServerDll->DisconnectCallback = ConSrvDisconnect;