BOOL EarlyReturn; /* wake client and return data, even if we are in line buffered mode, and we don't have a complete line */
} CSRSS_CONSOLE, *PCSRSS_CONSOLE;
-typedef struct
+typedef struct _CSRSS_PROCESS_DATA
{
PCSRSS_CONSOLE Console;
ULONG HandleTableSize;
HANDLE ConsoleEvent;
PVOID CsrSectionViewBase;
ULONG CsrSectionViewSize;
+ struct _CSRSS_PROCESS_DATA * next;
} CSRSS_PROCESS_DATA, *PCSRSS_PROCESS_DATA;
#define CSR_API(n) NTSTATUS n (\
CSR_API(CsrGetShutdownParameters);
CSR_API(CsrSetShutdownParameters);
CSR_API(CsrPeekConsoleInput);
+CSR_API(CsrReadConsoleOutput);
+CSR_API(CsrWriteConsoleInput);
+CSR_API(CsrGetInputHandle);
+CSR_API(CsrGetOutputHandle);
+CSR_API(CsrCloseHandle);
+CSR_API(CsrVerifyHandle);
+CSR_API(CsrDuplicateHandle);
/* print.c */
VOID STDCALL DisplayString(LPCWSTR lpwString);
NTSTATUS STDCALL CsrGetObject( PCSRSS_PROCESS_DATA ProcessData, HANDLE Handle, Object_t **Object );
BOOL STDCALL CsrServerInitialization (ULONG ArgumentCount, PWSTR *ArgumentArray);
NTSTATUS STDCALL CsrReleaseObject( PCSRSS_PROCESS_DATA ProcessData, HANDLE Object );
+NTSTATUS STDCALL CsrVerifyObject( PCSRSS_PROCESS_DATA ProcessData, HANDLE Object );
VOID STDCALL CsrDrawConsole( PCSRSS_SCREEN_BUFFER Console );
NTSTATUS STDCALL CsrpWriteConsole( PCSRSS_SCREEN_BUFFER Buff, CHAR *Buffer, DWORD Length, BOOL Attrib );