- Add more defines from Wine.
[reactos.git] / reactos / include / psdk / rpcdcep.h
index d6da3e9..4699dff 100644 (file)
-#ifndef _RPCDCEP_H
-#define _RPCDCEP_H
-#if __GNUC__ >=3
-#pragma GCC system_header
-#endif
+/*
+ * Copyright (C) 2000 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
 
-#ifdef __cplusplus
-extern "C" {
-#endif
-#define RPC_NCA_FLAGS_DEFAULT 0
-#define RPC_NCA_FLAGS_IDEMPOTENT 1
-#define RPC_NCA_FLAGS_BROADCAST 2
-#define RPC_NCA_FLAGS_MAYBE 4
-#define RPCFLG_ASYNCHRONOUS 0x40000000
-#define RPCFLG_INPUT_SYNCHRONOUS 0x20000000
-#define RPC_FLAGS_VALID_BIT 0x8000
-#define TRANSPORT_TYPE_CN 1
-#define TRANSPORT_TYPE_DG 2
-#define TRANSPORT_TYPE_LPC 4
-#define TRANSPORT_TYPE_WMSG 8
+#ifndef __WINE_RPCDCEP_H
+#define __WINE_RPCDCEP_H
 
 typedef struct _RPC_VERSION {
-       unsigned short MajorVersion;
-       unsigned short MinorVersion;
+    unsigned short MajorVersion;
+    unsigned short MinorVersion;
 } RPC_VERSION;
+
 typedef struct _RPC_SYNTAX_IDENTIFIER {
-       GUID SyntaxGUID;
-       RPC_VERSION SyntaxVersion;
+    GUID SyntaxGUID;
+    RPC_VERSION SyntaxVersion;
 } RPC_SYNTAX_IDENTIFIER, *PRPC_SYNTAX_IDENTIFIER;
-typedef struct _RPC_MESSAGE {
-       HANDLE Handle;
-       unsigned long DataRepresentation;
-       void *Buffer;
-       unsigned int BufferLength;
-       unsigned int ProcNum;
-       PRPC_SYNTAX_IDENTIFIER TransferSyntax;
-       void *RpcInterfaceInformation;
-       void *ReservedForRuntime;
-       void *ManagerEpv;
-       void *ImportContext;
-       unsigned long RpcFlags;
-} RPC_MESSAGE,*PRPC_MESSAGE;
-typedef long __stdcall RPC_FORWARD_FUNCTION(GUID*,RPC_VERSION*,GUID*,unsigned char*,void**);
-typedef void(__stdcall *RPC_DISPATCH_FUNCTION) ( PRPC_MESSAGE Message);
-typedef struct {
-       unsigned int DispatchTableCount;
-       RPC_DISPATCH_FUNCTION *DispatchTable;
-       int Reserved;
-} RPC_DISPATCH_TABLE,*PRPC_DISPATCH_TABLE;
-typedef struct _RPC_PROTSEQ_ENDPOINT {
-       unsigned char *RpcProtocolSequence;
-       unsigned char *Endpoint;
-} RPC_PROTSEQ_ENDPOINT,*PRPC_PROTSEQ_ENDPOINT;
-typedef struct _RPC_SERVER_INTERFACE {
-       unsigned int Length;
-       RPC_SYNTAX_IDENTIFIER InterfaceId;
-       RPC_SYNTAX_IDENTIFIER TransferSyntax;
-       PRPC_DISPATCH_TABLE DispatchTable;
-       unsigned int RpcProtseqEndpointCount;
-       PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
-       void *DefaultManagerEpv;
-       void const *InterpreterInfo;
-       unsigned int Flags;
-} RPC_SERVER_INTERFACE,*PRPC_SERVER_INTERFACE;
-typedef struct _RPC_CLIENT_INTERFACE {
-       unsigned int Length;
-       RPC_SYNTAX_IDENTIFIER InterfaceId;
-       RPC_SYNTAX_IDENTIFIER TransferSyntax;
-       PRPC_DISPATCH_TABLE DispatchTable;
-       unsigned int RpcProtseqEndpointCount;
-       PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
-       unsigned long Reserved;
-       void const *InterpreterInfo;
-       unsigned int Flags;
-} RPC_CLIENT_INTERFACE,*PRPC_CLIENT_INTERFACE;
-typedef void *I_RPC_MUTEX;
-typedef struct _RPC_TRANSFER_SYNTAX {
-       GUID Uuid;
-       unsigned short VersMajor;
-       unsigned short VersMinor;
-} RPC_TRANSFER_SYNTAX;
-typedef RPC_STATUS (*RPC_BLOCKING_FN)(void*,void*,void*);
-
-long __stdcall I_RpcGetBuffer(RPC_MESSAGE*);
-long __stdcall I_RpcSendReceive(RPC_MESSAGE*);
-long __stdcall I_RpcSend(RPC_MESSAGE*);
-long __stdcall I_RpcFreeBuffer(RPC_MESSAGE*);
-void __stdcall I_RpcRequestMutex(I_RPC_MUTEX*);
-void __stdcall I_RpcClearMutex(I_RPC_MUTEX);
-void __stdcall I_RpcDeleteMutex(I_RPC_MUTEX);
-DECLARE_STDCALL_P(void *) I_RpcAllocate(unsigned int);
-void __stdcall I_RpcFree(void*);
-void __stdcall I_RpcPauseExecution(unsigned long);
-typedef void(__stdcall *PRPC_RUNDOWN) (void*);
-long __stdcall I_RpcMonitorAssociation(HANDLE,PRPC_RUNDOWN,void*);
-long __stdcall I_RpcStopMonitorAssociation(HANDLE);
-HANDLE __stdcall I_RpcGetCurrentCallHandle(void);
-long __stdcall I_RpcGetAssociationContext(void**);
-long __stdcall I_RpcSetAssociationContext(void*);
-#ifdef __RPC_NT__
-long __stdcall I_RpcNsBindingSetEntryName(HANDLE,unsigned long,unsigned short*);
-long __stdcall I_RpcBindingInqDynamicEndpoint(HANDLE, unsigned short**);
-#else
-long __stdcall I_RpcNsBindingSetEntryName(HANDLE,unsigned long,unsigned char*);
-long __stdcall I_RpcBindingInqDynamicEndpoint(HANDLE,unsigned char**);
+
+typedef struct _RPC_MESSAGE
+{
+    RPC_BINDING_HANDLE Handle;
+    unsigned long DataRepresentation;
+    void* Buffer;
+    unsigned int BufferLength;
+    unsigned int ProcNum;
+    PRPC_SYNTAX_IDENTIFIER TransferSyntax;
+    void* RpcInterfaceInformation;
+    void* ReservedForRuntime;
+    RPC_MGR_EPV* ManagerEpv;
+    void* ImportContext;
+    unsigned long RpcFlags;
+} RPC_MESSAGE, *PRPC_MESSAGE;
+
+#define RPC_CONTEXT_HANDLE_DEFAULT_GUARD ((void *)0xfffff00d)
+
+#define RPC_CONTEXT_HANDLE_DEFAULT_FLAGS    0x00000000
+#define RPC_CONTEXT_HANDLE_FLAGS            0x30000000
+#define RPC_CONTEXT_HANDLE_SERIALIZE        0x10000000
+#define RPC_CONTEXT_HANDLE_DONT_SERIALIZE   0x20000000
+#define RPC_TYPE_STRICT_CONTEXT_HANDLE      0x40000000
+
+#define RPC_NCA_FLAGS_DEFAULT       0x00000000
+#define RPC_NCA_FLAGS_IDEMPOTENT    0x00000001
+#define RPC_NCA_FLAGS_BROADCAST     0x00000002
+#define RPC_NCA_FLAGS_MAYBE         0x00000004
+
+#define RPC_BUFFER_COMPLETE         0x00001000
+#define RPC_BUFFER_PARTIAL          0x00002000
+#define RPC_BUFFER_EXTRA            0x00004000
+#define RPC_BUFFER_ASYNC            0x00008000
+#define RPC_BUFFER_NONOTIFY         0x00010000
+
+#define RPCFLG_MESSAGE              0x01000000
+#define RPCFLG_HAS_MULTI_SYNTAXES   0x02000000
+#define RPCFLG_HAS_CALLBACK         0x04000000
+#define RPCFLG_AUTO_COMPLETE        0x08000000
+#define RPCFLG_LOCAL_CALL           0x10000000
+#define RPCFLG_INPUT_SYNCHRONOUS    0x20000000
+#define RPCFLG_ASYNCHRONOUS         0x40000000
+#define RPCFLG_NON_NDR              0x80000000
+
+typedef void  (__RPC_STUB *RPC_DISPATCH_FUNCTION)(PRPC_MESSAGE Message);
+
+typedef struct
+{
+    unsigned int DispatchTableCount;
+    RPC_DISPATCH_FUNCTION* DispatchTable;
+    LONG_PTR Reserved;
+} RPC_DISPATCH_TABLE, *PRPC_DISPATCH_TABLE;
+
+typedef struct _RPC_PROTSEQ_ENDPOINT
+{
+    unsigned char* RpcProtocolSequence;
+    unsigned char* Endpoint;
+} RPC_PROTSEQ_ENDPOINT, *PRPC_PROTSEQ_ENDPOINT;
+
+#define NT351_INTERFACE_SIZE 0x40
+#define RPC_INTERFACE_HAS_PIPES 0x0001
+
+typedef struct _RPC_SERVER_INTERFACE
+{
+    unsigned int Length;
+    RPC_SYNTAX_IDENTIFIER InterfaceId;
+    RPC_SYNTAX_IDENTIFIER TransferSyntax;
+    PRPC_DISPATCH_TABLE DispatchTable;
+    unsigned int RpcProtseqEndpointCount;
+    PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
+    RPC_MGR_EPV* DefaultManagerEpv;
+    void const* InterpreterInfo;
+    unsigned int Flags;
+} RPC_SERVER_INTERFACE, *PRPC_SERVER_INTERFACE;
+
+typedef struct _RPC_CLIENT_INTERFACE
+{
+    unsigned int Length;
+    RPC_SYNTAX_IDENTIFIER InterfaceId;
+    RPC_SYNTAX_IDENTIFIER TransferSyntax;
+    PRPC_DISPATCH_TABLE DispatchTable;
+    unsigned int RpcProtseqEndpointCount;
+    PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
+    ULONG_PTR Reserved;
+    void const* InterpreterInfo;
+    unsigned int Flags;
+} RPC_CLIENT_INTERFACE, *PRPC_CLIENT_INTERFACE;
+
+#define TRANSPORT_TYPE_CN   0x01
+#define TRANSPORT_TYPE_DG   0x02
+#define TRANSPORT_TYPE_LPC  0x04
+#define TRANSPORT_TYPE_WMSG 0x08
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcGetBuffer( RPC_MESSAGE* Message );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcGetBufferWithObject( RPC_MESSAGE* Message, UUID* ObjectUuid );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcSendReceive( RPC_MESSAGE* Message );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcFreeBuffer( RPC_MESSAGE* Message );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcSend( RPC_MESSAGE* Message );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcReceive( RPC_MESSAGE* Message );
+
+RPCRTAPI void* RPC_ENTRY
+  I_RpcAllocate( unsigned int Size );
+RPCRTAPI void RPC_ENTRY
+  I_RpcFree( void* Object );
+
+RPCRTAPI RPC_BINDING_HANDLE RPC_ENTRY
+  I_RpcGetCurrentCallHandle( void );
+
+/*
+ * The platform SDK headers don't define these functions at all if WINNT is defined
+ * The MSVC6 headers define two different sets of functions :
+ *  If WINNT and MSWMSG are defined, the NT versions are defined
+ *  If WINNT is not defined, the windows 9x versions are defined.
+ * Note that the prototypes for I_RpcBindingSetAsync are different for each case.
+ *
+ * Wine defaults to the WinNT case and only defines these function is MSWMSG is
+ *  defined. Defining the NT functions by default causes MIDL generated proxys
+ *  to not compile.
+ */
+
+#if 1  /* WINNT */
+#ifdef MSWMSG
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcServerStartListening( HWND hWnd );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcServerStopListening( void );
+/* WINNT */
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_GetThreadWindowHandle( HWND* hWnd );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcAsyncSendReceive( RPC_MESSAGE* Message, void* Context, HWND hWnd );
+
+typedef RPC_STATUS (*RPC_BLOCKING_FN)(void* hWnd, void* Context, HANDLE hSyncEvent);
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcBindingSetAsync( RPC_BINDING_HANDLE Binding, RPC_BLOCKING_FN BlockingFn );
+
+RPCRTAPI UINT RPC_ENTRY
+  I_RpcWindowProc( void* hWnd, UINT Message, UINT wParam, ULONG lParam );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcSetWMsgEndpoint( WCHAR* Endpoint );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcBindingInqTransportType( RPC_BINDING_HANDLE Binding, unsigned int* Type );
+
 #endif
-long __stdcall I_RpcBindingInqTransportType(HANDLE,unsigned int*);
-long __stdcall I_RpcIfInqTransferSyntaxes(HANDLE,RPC_TRANSFER_SYNTAX*,unsigned int,unsigned int*);
-long __stdcall I_UuidCreate(GUID*);
-long __stdcall I_RpcBindingCopy(HANDLE,HANDLE*);
-long __stdcall I_RpcBindingIsClientLocal(HANDLE,unsigned int*);
-void __stdcall I_RpcSsDontSerializeContext(void);
-long __stdcall I_RpcServerRegisterForwardFunction(RPC_FORWARD_FUNCTION*);
-long __stdcall I_RpcConnectionInqSockBuffSize(unsigned long*,unsigned long*);
-long __stdcall I_RpcConnectionSetSockBuffSize(unsigned long,unsigned long);
-long __stdcall I_RpcBindingSetAsync(HANDLE,RPC_BLOCKING_FN);
-long __stdcall I_RpcAsyncSendReceive(RPC_MESSAGE*,void*);
-long __stdcall I_RpcGetThreadWindowHandle(void**);
-long __stdcall I_RpcServerThreadPauseListening(void);
-long __stdcall I_RpcServerThreadContinueListening(void);
-long __stdcall I_RpcServerUnregisterEndpointA(unsigned char*,unsigned char*);
-long __stdcall I_RpcServerUnregisterEndpointW(unsigned short*,unsigned short*);
-#ifdef UNICODE
-#define I_RpcServerUnregisterEndpoint I_RpcServerUnregisterEndpointW
+
 #else
-#define I_RpcServerUnregisterEndpoint I_RpcServerUnregisterEndpointA
-#endif
-#ifdef __cplusplus
-}
-#endif
+
+/* WIN9x */
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcServerStartListening( void* hWnd );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcServerStopListening( void );
+
+typedef RPC_STATUS (*RPC_BLOCKING_FN)(void* hWnd, void* Context, void* hSyncEvent);
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcBindingSetAsync( RPC_BINDING_HANDLE Binding, RPC_BLOCKING_FN BlockingFn, unsigned long ServerTid );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  I_RpcSetThreadParams( int fClientFree, void* Context, void* hWndClient );
+
+RPCRTAPI UINT RPC_ENTRY
+  I_RpcWindowProc( void* hWnd, unsigned int Message, unsigned int wParam, unsigned long lParam );
+
 #endif
+
+#endif /*__WINE_RPCDCEP_H */