- Implemented CsrGetInputHandle, CsrGetOutputHandle and CsrCloseHandle.

svn path=/trunk/; revision=4193
This commit is contained in:
Hartmut Birr
2003-02-24 23:20:16 +00:00
parent 3432e6048e
commit 0d292546b8
4 changed files with 96 additions and 2 deletions
+21
View File
@@ -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;
+3
View File
@@ -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);
+68 -1
View File
@@ -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 */
+4 -1
View File
@@ -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)