svn path=/trunk/; revision=17431
This commit is contained in:
Alex Ionescu 2005-08-18 21:25:04 +00:00
parent 9eeadb66ec
commit 20d4ebeffc
3 changed files with 100 additions and 87 deletions

View file

@ -489,72 +489,76 @@ typedef struct
typedef struct _CSR_API_MESSAGE typedef struct _CSR_API_MESSAGE
{ {
union union
{
PORT_MESSAGE Header;
struct
{ {
BYTE HeaderReserved[sizeof(PORT_MESSAGE)]; PORT_MESSAGE Header;
ULONG Type; union
NTSTATUS Status; {
union struct
{ {
CSRSS_CREATE_PROCESS CreateProcessRequest; BYTE HeaderReserved[sizeof(PORT_MESSAGE)];
CSRSS_CONNECT_PROCESS ConnectRequest; ULONG Type;
CSRSS_WRITE_CONSOLE WriteConsoleRequest; NTSTATUS Status;
CSRSS_READ_CONSOLE ReadConsoleRequest; union
CSRSS_ALLOC_CONSOLE AllocConsoleRequest; {
CSRSS_SCREEN_BUFFER_INFO ScreenBufferInfoRequest; CSRSS_CREATE_PROCESS CreateProcessRequest;
CSRSS_SET_CURSOR SetCursorRequest; CSRSS_CONNECT_PROCESS ConnectRequest;
CSRSS_FILL_OUTPUT FillOutputRequest; CSRSS_WRITE_CONSOLE WriteConsoleRequest;
CSRSS_READ_INPUT ReadInputRequest; CSRSS_READ_CONSOLE ReadConsoleRequest;
CSRSS_WRITE_CONSOLE_OUTPUT_CHAR WriteConsoleOutputCharRequest; CSRSS_ALLOC_CONSOLE AllocConsoleRequest;
CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB WriteConsoleOutputAttribRequest; CSRSS_SCREEN_BUFFER_INFO ScreenBufferInfoRequest;
CSRSS_FILL_OUTPUT_ATTRIB FillOutputAttribRequest; CSRSS_SET_CURSOR SetCursorRequest;
CSRSS_SET_CURSOR_INFO SetCursorInfoRequest; CSRSS_FILL_OUTPUT FillOutputRequest;
CSRSS_GET_CURSOR_INFO GetCursorInfoRequest; CSRSS_READ_INPUT ReadInputRequest;
CSRSS_SET_ATTRIB SetAttribRequest; CSRSS_WRITE_CONSOLE_OUTPUT_CHAR WriteConsoleOutputCharRequest;
CSRSS_SET_CONSOLE_MODE SetConsoleModeRequest; CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB WriteConsoleOutputAttribRequest;
CSRSS_GET_CONSOLE_MODE GetConsoleModeRequest; CSRSS_FILL_OUTPUT_ATTRIB FillOutputAttribRequest;
CSRSS_CREATE_SCREEN_BUFFER CreateScreenBufferRequest; CSRSS_SET_CURSOR_INFO SetCursorInfoRequest;
CSRSS_SET_SCREEN_BUFFER SetScreenBufferRequest; CSRSS_GET_CURSOR_INFO GetCursorInfoRequest;
CSRSS_SET_TITLE SetTitleRequest; CSRSS_SET_ATTRIB SetAttribRequest;
CSRSS_GET_TITLE GetTitleRequest; CSRSS_SET_CONSOLE_MODE SetConsoleModeRequest;
CSRSS_WRITE_CONSOLE_OUTPUT WriteConsoleOutputRequest; CSRSS_GET_CONSOLE_MODE GetConsoleModeRequest;
CSRSS_FLUSH_INPUT_BUFFER FlushInputBufferRequest; CSRSS_CREATE_SCREEN_BUFFER CreateScreenBufferRequest;
CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER ScrollConsoleScreenBufferRequest; CSRSS_SET_SCREEN_BUFFER SetScreenBufferRequest;
CSRSS_READ_CONSOLE_OUTPUT_CHAR ReadConsoleOutputCharRequest; CSRSS_SET_TITLE SetTitleRequest;
CSRSS_READ_CONSOLE_OUTPUT_ATTRIB ReadConsoleOutputAttribRequest; CSRSS_GET_TITLE GetTitleRequest;
CSRSS_GET_NUM_INPUT_EVENTS GetNumInputEventsRequest; CSRSS_WRITE_CONSOLE_OUTPUT WriteConsoleOutputRequest;
CSRSS_REGISTER_SERVICES_PROCESS RegisterServicesProcessRequest; CSRSS_FLUSH_INPUT_BUFFER FlushInputBufferRequest;
CSRSS_EXIT_REACTOS ExitReactosRequest; CSRSS_SCROLL_CONSOLE_SCREEN_BUFFER ScrollConsoleScreenBufferRequest;
CSRSS_SET_SHUTDOWN_PARAMETERS SetShutdownParametersRequest; CSRSS_READ_CONSOLE_OUTPUT_CHAR ReadConsoleOutputCharRequest;
CSRSS_GET_SHUTDOWN_PARAMETERS GetShutdownParametersRequest; CSRSS_READ_CONSOLE_OUTPUT_ATTRIB ReadConsoleOutputAttribRequest;
CSRSS_PEEK_CONSOLE_INPUT PeekConsoleInputRequest; CSRSS_GET_NUM_INPUT_EVENTS GetNumInputEventsRequest;
CSRSS_READ_CONSOLE_OUTPUT ReadConsoleOutputRequest; CSRSS_REGISTER_SERVICES_PROCESS RegisterServicesProcessRequest;
CSRSS_WRITE_CONSOLE_INPUT WriteConsoleInputRequest; CSRSS_EXIT_REACTOS ExitReactosRequest;
CSRSS_GET_INPUT_HANDLE GetInputHandleRequest; CSRSS_SET_SHUTDOWN_PARAMETERS SetShutdownParametersRequest;
CSRSS_GET_OUTPUT_HANDLE GetOutputHandleRequest; CSRSS_GET_SHUTDOWN_PARAMETERS GetShutdownParametersRequest;
CSRSS_CLOSE_HANDLE CloseHandleRequest; CSRSS_PEEK_CONSOLE_INPUT PeekConsoleInputRequest;
CSRSS_VERIFY_HANDLE VerifyHandleRequest; CSRSS_READ_CONSOLE_OUTPUT ReadConsoleOutputRequest;
CSRSS_DUPLICATE_HANDLE DuplicateHandleRequest; CSRSS_WRITE_CONSOLE_INPUT WriteConsoleInputRequest;
CSRSS_SETGET_CONSOLE_HW_STATE ConsoleHardwareStateRequest; CSRSS_GET_INPUT_HANDLE GetInputHandleRequest;
CSRSS_GET_CONSOLE_WINDOW GetConsoleWindowRequest; CSRSS_GET_OUTPUT_HANDLE GetOutputHandleRequest;
CSRSS_CREATE_DESKTOP CreateDesktopRequest; CSRSS_CLOSE_HANDLE CloseHandleRequest;
CSRSS_SHOW_DESKTOP ShowDesktopRequest; CSRSS_VERIFY_HANDLE VerifyHandleRequest;
CSRSS_HIDE_DESKTOP HideDesktopRequest; CSRSS_DUPLICATE_HANDLE DuplicateHandleRequest;
CSRSS_SET_CONSOLE_ICON SetConsoleIconRequest; CSRSS_SETGET_CONSOLE_HW_STATE ConsoleHardwareStateRequest;
CSRSS_SET_LOGON_NOTIFY_WINDOW SetLogonNotifyWindowRequest; CSRSS_GET_CONSOLE_WINDOW GetConsoleWindowRequest;
CSRSS_REGISTER_LOGON_PROCESS RegisterLogonProcessRequest; CSRSS_CREATE_DESKTOP CreateDesktopRequest;
CSRSS_GET_CONSOLE_CP GetConsoleCodePage; CSRSS_SHOW_DESKTOP ShowDesktopRequest;
CSRSS_SET_CONSOLE_CP SetConsoleCodePage; CSRSS_HIDE_DESKTOP HideDesktopRequest;
CSRSS_GET_CONSOLE_OUTPUT_CP GetConsoleOutputCodePage; CSRSS_SET_CONSOLE_ICON SetConsoleIconRequest;
CSRSS_SET_CONSOLE_OUTPUT_CP SetConsoleOutputCodePage; CSRSS_SET_LOGON_NOTIFY_WINDOW SetLogonNotifyWindowRequest;
CSRSS_GET_INPUT_WAIT_HANDLE GetConsoleInputWaitHandle; CSRSS_REGISTER_LOGON_PROCESS RegisterLogonProcessRequest;
CSRSS_GET_PROCESS_LIST GetProcessListRequest; CSRSS_GET_CONSOLE_CP GetConsoleCodePage;
} Data; CSRSS_SET_CONSOLE_CP SetConsoleCodePage;
CSRSS_GET_CONSOLE_OUTPUT_CP GetConsoleOutputCodePage;
CSRSS_SET_CONSOLE_OUTPUT_CP SetConsoleOutputCodePage;
CSRSS_GET_INPUT_WAIT_HANDLE GetConsoleInputWaitHandle;
CSRSS_GET_PROCESS_LIST GetProcessListRequest;
} Data;
};
UCHAR PadBuffer[PORT_MAXIMUM_MESSAGE_LENGTH];
};
}; };
};
} CSR_API_MESSAGE, *PCSR_API_MESSAGE; } CSR_API_MESSAGE, *PCSR_API_MESSAGE;
#endif /* __INCLUDE_CSRSS_CSRSS_H */ #endif /* __INCLUDE_CSRSS_CSRSS_H */

View file

@ -109,29 +109,38 @@ typedef struct _SM_PORT_MESSAGE_QRYINFO
typedef union _SM_PORT_MESSAGE typedef union _SM_PORT_MESSAGE
{ {
/*** LPC common header ***/ /*** LPC common header ***/
PORT_MESSAGE Header; PORT_MESSAGE Header;
struct { union
UCHAR LpcHeader[sizeof(PORT_MESSAGE)]; {
/*** SM common header ***/ struct
struct { {
DWORD ApiIndex; UCHAR LpcHeader[sizeof(PORT_MESSAGE)];
NTSTATUS Status; /*** SM common header ***/
} SmHeader; struct
/*** SM per API arguments ***/ {
union { DWORD ApiIndex;
union { NTSTATUS Status;
SM_PORT_MESSAGE_COMPSES CompSes; } SmHeader;
SM_PORT_MESSAGE_EXECPGM ExecPgm; /*** SM per API arguments ***/
SM_PORT_MESSAGE_QRYINFO QryInfo; union
} Request; {
union { union
SM_PORT_MESSAGE_COMPSES CompSes; {
SM_PORT_MESSAGE_EXECPGM ExecPgm; SM_PORT_MESSAGE_COMPSES CompSes;
SM_PORT_MESSAGE_QRYINFO QryInfo; SM_PORT_MESSAGE_EXECPGM ExecPgm;
} Reply; SM_PORT_MESSAGE_QRYINFO QryInfo;
} Request;
union
{
SM_PORT_MESSAGE_COMPSES CompSes;
SM_PORT_MESSAGE_EXECPGM ExecPgm;
SM_PORT_MESSAGE_QRYINFO QryInfo;
} Reply;
};
};
UCHAR PadBuffer[PORT_MAXIMUM_MESSAGE_LENGTH];
}; };
};
} SM_PORT_MESSAGE, * PSM_PORT_MESSAGE; } SM_PORT_MESSAGE, * PSM_PORT_MESSAGE;
#include <poppack.h> #include <poppack.h>

View file

@ -357,7 +357,7 @@ NtRequestWaitReplyPort (IN HANDLE PortHandle,
ObDereferenceObject(Port); ObDereferenceObject(Port);
return(STATUS_PORT_MESSAGE_TOO_LONG); return(STATUS_PORT_MESSAGE_TOO_LONG);
} }
if (LpcRequestDataSize != (LpcRequestMessageSize - sizeof(PORT_MESSAGE))) if (LpcRequestDataSize > LPC_MAX_DATA_LENGTH)
{ {
ExFreePool(LpcRequest); ExFreePool(LpcRequest);
if (NULL != AttachedProcess) if (NULL != AttachedProcess)