[CSR]
[reactos.git] / reactos / include / reactos / subsys / csr / csrsrv.h
index 7e1c41d..8634d3c 100644 (file)
@@ -3,13 +3,21 @@
  * PROJECT:         ReactOS Client/Server Runtime SubSystem
  * FILE:            include/reactos/subsys/csr/csrsrv.h
  * PURPOSE:         Public definitions for CSR Servers
  * PROJECT:         ReactOS Client/Server Runtime SubSystem
  * FILE:            include/reactos/subsys/csr/csrsrv.h
  * PURPOSE:         Public definitions for CSR Servers
- * PROGRAMMERS:     Alex Ionescu (alex@relsoft.net)
+ * PROGRAMMERS:     Alex Ionescu (alex.ionescu@reactos.org)
  *                  Hermes Belusca-Maito (hermes.belusca@sfr.fr)
  */
 
 #ifndef _CSRSRV_H
 #define _CSRSRV_H
 
  *                  Hermes Belusca-Maito (hermes.belusca@sfr.fr)
  */
 
 #ifndef _CSRSRV_H
 #define _CSRSRV_H
 
+/*
+ * The CSR_DBG macro is defined for building CSR Servers
+ * with extended debugging information.
+ */
+#if DBG
+#define CSR_DBG
+#endif
+
 #include "csrmsg.h"
 
 
 #include "csrmsg.h"
 
 
@@ -134,7 +142,7 @@ typedef enum _CSR_REPLY_CODE
  */
 typedef
 BOOLEAN
  */
 typedef
 BOOLEAN
-(*CSR_WAIT_FUNCTION)(
+(NTAPI *CSR_WAIT_FUNCTION)(
     IN PLIST_ENTRY WaitList,
     IN PCSR_THREAD WaitThread,
     IN PCSR_API_MESSAGE WaitApiMessage,
     IN PLIST_ENTRY WaitList,
     IN PCSR_THREAD WaitThread,
     IN PCSR_API_MESSAGE WaitApiMessage,
@@ -148,7 +156,6 @@ typedef struct _CSR_WAIT_BLOCK
 {
     ULONG Size;                     // Size of the wait block (variable-sized)
     LIST_ENTRY WaitList;
 {
     ULONG Size;                     // Size of the wait block (variable-sized)
     LIST_ENTRY WaitList;
-    LIST_ENTRY UserWaitList;
     PVOID WaitContext;
     PCSR_THREAD WaitThread;
     CSR_WAIT_FUNCTION WaitFunction;
     PVOID WaitContext;
     PCSR_THREAD WaitThread;
     CSR_WAIT_FUNCTION WaitFunction;
@@ -216,7 +223,14 @@ typedef struct _CSR_SERVER_DLL
     ULONG HighestApiSupported;
     PCSR_API_ROUTINE *DispatchTable;
     PBOOLEAN ValidTable; // Table of booleans which describe whether or not a server function call is valid when it is called via CsrCallServerFromServer.
     ULONG HighestApiSupported;
     PCSR_API_ROUTINE *DispatchTable;
     PBOOLEAN ValidTable; // Table of booleans which describe whether or not a server function call is valid when it is called via CsrCallServerFromServer.
+/*
+ * On Windows Server 2003, CSR Servers contain
+ * the API Names Table only in Debug Builds.
+ */
+#ifdef CSR_DBG
     PCHAR *NameTable;
     PCHAR *NameTable;
+#endif
+
     ULONG SizeOfProcessData;
     PCSR_CONNECT_CALLBACK ConnectCallback;
     PCSR_DISCONNECT_CALLBACK DisconnectCallback;
     ULONG SizeOfProcessData;
     PCSR_CONNECT_CALLBACK ConnectCallback;
     PCSR_DISCONNECT_CALLBACK DisconnectCallback;
@@ -226,7 +240,13 @@ typedef struct _CSR_SERVER_DLL
     PCSR_SHUTDOWNPROCESS_CALLBACK ShutdownProcessCallback;
     ULONG Unknown2[3];
 } CSR_SERVER_DLL, *PCSR_SERVER_DLL;
     PCSR_SHUTDOWNPROCESS_CALLBACK ShutdownProcessCallback;
     ULONG Unknown2[3];
 } CSR_SERVER_DLL, *PCSR_SERVER_DLL;
-C_ASSERT(FIELD_OFFSET(CSR_SERVER_DLL, SharedSection) == 0x3C);
+#ifndef _WIN64
+    #ifdef CSR_DBG
+        C_ASSERT(FIELD_OFFSET(CSR_SERVER_DLL, SharedSection) == 0x3C);
+    #else
+        C_ASSERT(FIELD_OFFSET(CSR_SERVER_DLL, SharedSection) == 0x38);
+    #endif
+#endif
 
 typedef
 NTSTATUS
 
 typedef
 NTSTATUS
@@ -285,8 +305,7 @@ CsrCreateWait(IN PLIST_ENTRY WaitList,
               IN CSR_WAIT_FUNCTION WaitFunction,
               IN PCSR_THREAD CsrWaitThread,
               IN OUT PCSR_API_MESSAGE WaitApiMessage,
               IN CSR_WAIT_FUNCTION WaitFunction,
               IN PCSR_THREAD CsrWaitThread,
               IN OUT PCSR_API_MESSAGE WaitApiMessage,
-              IN PVOID WaitContext,
-              IN PLIST_ENTRY UserWaitList OPTIONAL);
+              IN PVOID WaitContext);
 
 NTSTATUS
 NTAPI
 
 NTSTATUS
 NTAPI
@@ -343,13 +362,13 @@ CsrLockThreadByClientId(IN HANDLE Tid,
 
 VOID
 NTAPI
 
 VOID
 NTAPI
-CsrMoveSatisfiedWait(IN PLIST_ENTRY NewEntry,
+CsrMoveSatisfiedWait(IN PLIST_ENTRY DestinationList,
                      IN PLIST_ENTRY WaitList);
 
 BOOLEAN
 NTAPI
 CsrNotifyWait(IN PLIST_ENTRY WaitList,
                      IN PLIST_ENTRY WaitList);
 
 BOOLEAN
 NTAPI
 CsrNotifyWait(IN PLIST_ENTRY WaitList,
-              IN ULONG WaitType,
+              IN BOOLEAN NotifyAll,
               IN PVOID WaitArgument1,
               IN PVOID WaitArgument2);
 
               IN PVOID WaitArgument1,
               IN PVOID WaitArgument2);