// extern HANDLE BaseSrvSharedHeap;
// extern PBASE_STATIC_SERVER_DATA BaseStaticServerData;
+/* Object type magic numbers */
+#define CONIO_CONSOLE_MAGIC 0x00000001 // --> Input-type handles
+#define CONIO_SCREEN_BUFFER_MAGIC 0x00000002 // --> Output-type handles
-
+/* Common things to input/output/console objects */
typedef struct Object_tt
{
LONG Type;
typedef struct _CSRSS_HANDLE
{
- Object_t *Object;
+ Object_t *Object; /* The object on which the handle points to */
DWORD Access;
BOOL Inheritable;
DWORD ShareMode;
} CSRSS_HANDLE, *PCSRSS_HANDLE;
+#define ConsoleGetPerProcessData(pcsrprocess) \
+ ((PCONSOLE_PROCESS_DATA)((pcsrprocess)->ServerData[CONSRV_SERVERDLL_INDEX]))
+
+typedef struct _CONSOLE_PROCESS_DATA
+{
+ LIST_ENTRY ConsoleLink;
+ PCSR_PROCESS Process; // Process owning this structure.
+ HANDLE ConsoleEvent;
+ /* PCSRSS_CONSOLE */ struct tagCSRSS_CONSOLE* Console;
+ /* PCSRSS_CONSOLE */ struct tagCSRSS_CONSOLE* ParentConsole;
+
+ // BOOL bInheritHandles;
+ BOOL ConsoleApp; // TRUE if it is a CUI app, FALSE otherwise.
+
+ RTL_CRITICAL_SECTION HandleTableLock;
+ ULONG HandleTableSize;
+ PCSRSS_HANDLE HandleTable; // Length-varying table
+ LPTHREAD_START_ROUTINE CtrlDispatcher;
+} CONSOLE_PROCESS_DATA, *PCONSOLE_PROCESS_DATA;
+
/* alias.c */
CSR_API(SrvAddConsoleAlias);
CSR_API(SrvCloseHandle);
CSR_API(SrvVerifyConsoleIoHandle);
CSR_API(SrvDuplicateHandle);
-CSR_API(CsrGetInputWaitHandle);
-
-NTSTATUS NTAPI ConsoleNewProcess(PCSR_PROCESS SourceProcess,
- PCSR_PROCESS TargetProcess);
-VOID NTAPI Win32CsrReleaseConsole(PCSR_PROCESS Process);
+/// CSR_API(CsrGetInputWaitHandle);
NTSTATUS FASTCALL Win32CsrInsertObject(PCONSOLE_PROCESS_DATA ProcessData,
PHANDLE Handle,
NTSTATUS FASTCALL Win32CsrReleaseObject(PCONSOLE_PROCESS_DATA ProcessData,
HANDLE Handle);
+NTSTATUS NTAPI ConsoleNewProcess(PCSR_PROCESS SourceProcess,
+ PCSR_PROCESS TargetProcess);
+NTSTATUS NTAPI ConsoleConnect(IN PCSR_PROCESS CsrProcess,
+ IN OUT PVOID ConnectionInfo,
+ IN OUT PULONG ConnectionInfoLength);
+VOID NTAPI ConsoleDisconnect(PCSR_PROCESS Process);
+VOID NTAPI Win32CsrReleaseConsole(PCSR_PROCESS Process);
+
/* lineinput.c */
CSR_API(SrvGetConsoleCommandHistoryLength);
CSR_API(SrvGetConsoleCommandHistory);
CSR_API(SrvGetConsoleHistory);
CSR_API(SrvSetConsoleHistory);
-/* server.c */
-#if 0
-BOOL FASTCALL Win32CsrValidateBuffer(PCSR_PROCESS ProcessData,
- PVOID Buffer,
- SIZE_T NumElements,
- SIZE_T ElementSize);
-#endif
-
#endif // __CONSRV_H__
/* EOF */