mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-02 04:13:34 +00:00
- Implemented CsrGetInputHandle, CsrGetOutputHandle and CsrCloseHandle.
svn path=/trunk/; revision=4193
This commit is contained in:
@@ -337,6 +337,21 @@ typedef struct
|
||||
DWORD Length;
|
||||
} CSRSS_WRITE_CONSOLE_INPUT_REPLY, *PCSRSS_WRITE_CONSOLE_INPUT_REPLY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE InputHandle;
|
||||
} CSRSS_GET_INPUT_HANDLE_REPLY, *PCSRSS_GET_INPUT_HANDLE_REPLY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE OutputHandle;
|
||||
} CSRSS_GET_OUTPUT_HANDLE_REPLY, *PCSRSS_GET_OUTPUT_HANDLE_REPLY;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
HANDLE Handle;
|
||||
} CSRSS_CLOSE_HANDLE_REQUEST, *PCSRSS_CLOSE_HANDLE_REQUEST;
|
||||
|
||||
#define CSRSS_MAX_WRITE_CONSOLE_REQUEST \
|
||||
(MAX_MESSAGE_DATA - sizeof(ULONG) - sizeof(CSRSS_WRITE_CONSOLE_REQUEST))
|
||||
|
||||
@@ -391,6 +406,9 @@ typedef struct
|
||||
#define CSRSS_PEEK_CONSOLE_INPUT (0x21)
|
||||
#define CSRSS_READ_CONSOLE_OUTPUT (0x22)
|
||||
#define CSRSS_WRITE_CONSOLE_INPUT (0x23)
|
||||
#define CSRSS_GET_INPUT_HANDLE (0x24)
|
||||
#define CSRSS_GET_OUTPUT_HANDLE (0x25)
|
||||
#define CSRSS_CLOSE_HANDLE (0x26)
|
||||
|
||||
/* Keep in sync with definition below. */
|
||||
#define CSRSS_REQUEST_HEADER_SIZE (sizeof(LPC_MESSAGE) + sizeof(ULONG))
|
||||
@@ -434,6 +452,7 @@ typedef struct
|
||||
CSRSS_PEEK_CONSOLE_INPUT_REQUEST PeekConsoleInputRequest;
|
||||
CSRSS_READ_CONSOLE_OUTPUT_REQUEST ReadConsoleOutputRequest;
|
||||
CSRSS_WRITE_CONSOLE_INPUT_REQUEST WriteConsoleInputRequest;
|
||||
CSRSS_CLOSE_HANDLE_REQUEST CloseHandleRequest;
|
||||
} Data;
|
||||
} CSRSS_API_REQUEST, *PCSRSS_API_REQUEST;
|
||||
|
||||
@@ -464,6 +483,8 @@ typedef struct
|
||||
CSRSS_PEEK_CONSOLE_INPUT_REPLY PeekConsoleInputReply;
|
||||
CSRSS_READ_CONSOLE_OUTPUT_REPLY ReadConsoleOutputReply;
|
||||
CSRSS_WRITE_CONSOLE_INPUT_REPLY WriteConsoleInputReply;
|
||||
CSRSS_GET_INPUT_HANDLE_REPLY GetInputHandleReply;
|
||||
CSRSS_GET_OUTPUT_HANDLE_REPLY GetOutputHandleReply;
|
||||
} Data;
|
||||
} CSRSS_API_REPLY, *PCSRSS_API_REPLY;
|
||||
|
||||
|
||||
@@ -132,6 +132,9 @@ CSR_API(CsrSetShutdownParameters);
|
||||
CSR_API(CsrPeekConsoleInput);
|
||||
CSR_API(CsrReadConsoleOutput);
|
||||
CSR_API(CsrWriteConsoleInput);
|
||||
CSR_API(CsrGetInputHandle);
|
||||
CSR_API(CsrGetOutputHandle);
|
||||
CSR_API(CsrCloseHandle);
|
||||
|
||||
/* print.c */
|
||||
VOID STDCALL DisplayString(LPCWSTR lpwString);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* $Id: process.c,v 1.23 2003/01/11 15:51:48 hbirr Exp $
|
||||
/* $Id: process.c,v 1.24 2003/02/24 23:20:15 hbirr Exp $
|
||||
*
|
||||
* reactos/subsys/csrss/api/process.c
|
||||
*
|
||||
@@ -279,5 +279,72 @@ CSR_API(CsrSetShutdownParameters)
|
||||
return(STATUS_SUCCESS);
|
||||
}
|
||||
|
||||
CSR_API(CsrGetInputHandle)
|
||||
{
|
||||
Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
|
||||
Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) - sizeof(LPC_MESSAGE);
|
||||
|
||||
if (ProcessData == NULL)
|
||||
{
|
||||
Reply->Data.GetInputHandleReply.InputHandle = INVALID_HANDLE_VALUE;
|
||||
Reply->Status = STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
else if (ProcessData->Console)
|
||||
{
|
||||
Reply->Status = CsrInsertObject(ProcessData,
|
||||
&Reply->Data.GetInputHandleReply.InputHandle,
|
||||
(Object_t *)ProcessData->Console);
|
||||
}
|
||||
else
|
||||
{
|
||||
Reply->Data.GetInputHandleReply.InputHandle = INVALID_HANDLE_VALUE;
|
||||
Reply->Status = STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
return Reply->Status;
|
||||
}
|
||||
|
||||
CSR_API(CsrGetOutputHandle)
|
||||
{
|
||||
Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
|
||||
Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) - sizeof(LPC_MESSAGE);
|
||||
|
||||
if (ProcessData == NULL)
|
||||
{
|
||||
Reply->Data.GetOutputHandleReply.OutputHandle = INVALID_HANDLE_VALUE;
|
||||
Reply->Status = STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
else if (ProcessData->Console)
|
||||
{
|
||||
RtlEnterCriticalSection( &ActiveConsoleLock );
|
||||
Reply->Status = CsrInsertObject(ProcessData,
|
||||
&Reply->Data.GetOutputHandleReply.OutputHandle,
|
||||
&(ProcessData->Console->ActiveBuffer->Header));
|
||||
RtlLeaveCriticalSection( &ActiveConsoleLock );
|
||||
}
|
||||
else
|
||||
{
|
||||
Reply->Data.GetOutputHandleReply.OutputHandle = INVALID_HANDLE_VALUE;
|
||||
Reply->Status = STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
return Reply->Status;
|
||||
}
|
||||
|
||||
CSR_API(CsrCloseHandle)
|
||||
{
|
||||
Reply->Header.MessageSize = sizeof(CSRSS_API_REPLY);
|
||||
Reply->Header.DataSize = sizeof(CSRSS_API_REPLY) - sizeof(LPC_MESSAGE);
|
||||
|
||||
if (ProcessData == NULL)
|
||||
{
|
||||
Reply->Status = STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
else
|
||||
{
|
||||
Reply->Status = CsrReleaseObject(ProcessData, Request->Data.CloseHandleRequest.Handle);
|
||||
}
|
||||
return Reply->Status;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* $Id: wapi.c,v 1.25 2002/11/12 00:48:26 mdill Exp $
|
||||
/* $Id: wapi.c,v 1.26 2003/02/24 23:20:15 hbirr Exp $
|
||||
*
|
||||
* reactos/subsys/csrss/api/wapi.c
|
||||
*
|
||||
@@ -63,6 +63,9 @@ static const CsrFunc CsrFuncs[] = {
|
||||
CsrPeekConsoleInput,
|
||||
CsrReadConsoleOutput,
|
||||
CsrWriteConsoleInput,
|
||||
CsrGetInputHandle,
|
||||
CsrGetOutputHandle,
|
||||
CsrCloseHandle,
|
||||
0 };
|
||||
|
||||
static void Thread_Api2(HANDLE ServerPort)
|
||||
|
||||
Reference in New Issue
Block a user