[CSRSRV]
[reactos.git] / include / reactos / subsys / csr / csrsrv.h
index e485ce8..0815360 100644 (file)
 
 #include "csrmsg.h"
 
+
 /* TYPES **********************************************************************/
 
+// Used in ntdll/csr/connect.c
+#define CSR_CSRSS_SECTION_SIZE  65536
+
 typedef struct _CSR_NT_SESSION
 {
     ULONG ReferenceCount;
@@ -30,27 +34,11 @@ typedef struct _CSR_NT_SESSION
     ULONG SessionId;
 } CSR_NT_SESSION, *PCSR_NT_SESSION;
 
-/*** old thingie, remove it later... (put it in winsrv -- console) ***/
-#include <win/conmsg.h>
-typedef struct _CSRSS_CON_PROCESS_DATA
-{
-    HANDLE ConsoleEvent;
-    struct tagCSRSS_CONSOLE *Console;
-    struct tagCSRSS_CONSOLE *ParentConsole;
-    BOOL bInheritHandles;
-    RTL_CRITICAL_SECTION HandleTableLock;
-    ULONG HandleTableSize;
-    struct _CSRSS_HANDLE *HandleTable;
-    PCONTROLDISPATCHER CtrlDispatcher;
-    LIST_ENTRY ConsoleLink;
-} CSRSS_CON_PROCESS_DATA, *PCSRSS_CON_PROCESS_DATA;
-/*********************************************************************/
 typedef struct _CSR_PROCESS
 {
     CLIENT_ID ClientId;
     LIST_ENTRY ListLink;
     LIST_ENTRY ThreadList;
-    struct _CSR_PROCESS *Parent;
     PCSR_NT_SESSION NtSession;
     ULONG ExpectedVersion;
     HANDLE ClientPort;
@@ -70,8 +58,7 @@ typedef struct _CSR_PROCESS
     ULONG Reserved;
     ULONG ShutdownLevel;
     ULONG ShutdownFlags;
-    PVOID ServerData[ANYSIZE_ARRAY]; // ServerDllPerProcessData // One structure per CSR server.
-    CSRSS_CON_PROCESS_DATA; //// FIXME: Remove it after we activate the previous member.
+    PVOID ServerData[ANYSIZE_ARRAY];    // One structure per CSR server.
 } CSR_PROCESS, *PCSR_PROCESS;
 
 typedef struct _CSR_THREAD
@@ -115,7 +102,7 @@ typedef enum _CSR_PROCESS_FLAGS
 
 typedef enum _CSR_THREAD_FLAGS
 {
-    CsrThreadAltertable     = 0x1,
+    CsrThreadAlertable      = 0x1,
     CsrThreadInTermination  = 0x2,
     CsrThreadTerminated     = 0x4,
     CsrThreadIsServerThread = 0x10
@@ -140,6 +127,16 @@ typedef enum _CSR_DEBUG_FLAGS
     CsrDebugProcessChildren = 2
 } CSR_PROCESS_DEBUG_FLAGS, *PCSR_PROCESS_DEBUG_FLAGS;
 
+typedef enum _CSR_REPLY_CODE
+{
+    CsrReplyImmediately = 0,
+    CsrReplyPending     = 1,
+    CsrReplyDeadClient  = 2,
+    CsrReplyAlreadySent = 3
+} CSR_REPLY_CODE, *PCSR_REPLY_CODE;
+
+
+/* FUNCTION TYPES AND STRUCTURES **********************************************/
 
 /*
  * Wait block
@@ -158,13 +155,13 @@ BOOLEAN
 
 typedef struct _CSR_WAIT_BLOCK
 {
-    ULONG Size;
+    ULONG Size;                     // Size of the wait block (variable-sized)
     LIST_ENTRY WaitList;
     LIST_ENTRY UserWaitList;
     PVOID WaitContext;
     PCSR_THREAD WaitThread;
     CSR_WAIT_FUNCTION WaitFunction;
-    CSR_API_MESSAGE WaitApiMessage;
+    CSR_API_MESSAGE WaitApiMessage; // Variable-sized CSR API message
 } CSR_WAIT_BLOCK, *PCSR_WAIT_BLOCK;
 
 
@@ -175,13 +172,12 @@ typedef
 NTSTATUS
 (NTAPI *PCSR_API_ROUTINE)(
     IN OUT PCSR_API_MESSAGE ApiMessage,
-    OUT PULONG Reply
+    IN OUT PCSR_REPLY_CODE  ReplyCode OPTIONAL
 );
 
-#define CSR_API(n) NTSTATUS NTAPI n(    \
-    IN OUT PCSR_API_MESSAGE ApiMessage, \
-    OUT PULONG Reply)
-    // IN OUT PCSR_REPLY_STATUS ReplyStatus)
+#define CSR_API(n)                                          \
+    NTSTATUS NTAPI n(IN OUT PCSR_API_MESSAGE ApiMessage,    \
+                     IN OUT PCSR_REPLY_CODE  ReplyCode OPTIONAL)
 
 typedef
 NTSTATUS
@@ -241,13 +237,12 @@ typedef struct _CSR_SERVER_DLL
 } CSR_SERVER_DLL, *PCSR_SERVER_DLL;
 
 
-/* FUNCTION TYPES *************************************************************/
-
 typedef
 NTSTATUS
 (NTAPI *PCSR_SERVER_DLL_INIT_CALLBACK)(IN PCSR_SERVER_DLL LoadedServerDll);
 
-#define CSR_SERVER_DLL_INIT(n) NTSTATUS NTAPI n(IN PCSR_SERVER_DLL LoadedServerDll)
+#define CSR_SERVER_DLL_INIT(n)  \
+    NTSTATUS NTAPI n(IN PCSR_SERVER_DLL LoadedServerDll)
 
 
 /* PROTOTYPES ****************************************************************/
@@ -303,7 +298,8 @@ NTSTATUS
 NTAPI
 CsrCreateThread(IN PCSR_PROCESS CsrProcess,
                 IN HANDLE hThread,
-                IN PCLIENT_ID ClientId);
+                IN PCLIENT_ID ClientId,
+                IN BOOLEAN HaveClient);
 
 BOOLEAN
 NTAPI
@@ -428,8 +424,8 @@ BOOLEAN
 NTAPI
 CsrValidateMessageBuffer(IN PCSR_API_MESSAGE ApiMessage,
                          IN PVOID *Buffer,
-                         IN ULONG ArgumentSize,
-                         IN ULONG ArgumentCount);
+                         IN ULONG ElementCount,
+                         IN ULONG ElementSize);
 
 BOOLEAN
 NTAPI