| /* | 
 |  * 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 | 
 |  */ | 
 |  | 
 | #ifndef __WINE_RPCDCEP_H | 
 | #define __WINE_RPCDCEP_H | 
 |  | 
 | #ifdef __cplusplus | 
 | extern "C" { | 
 | #endif | 
 |  | 
 | typedef struct _RPC_VERSION { | 
 |     unsigned short MajorVersion; | 
 |     unsigned short MinorVersion; | 
 | } RPC_VERSION; | 
 |  | 
 | typedef struct _RPC_SYNTAX_IDENTIFIER { | 
 |     GUID SyntaxGUID; | 
 |     RPC_VERSION SyntaxVersion; | 
 | } RPC_SYNTAX_IDENTIFIER, *PRPC_SYNTAX_IDENTIFIER; | 
 |  | 
 | typedef struct _RPC_MESSAGE | 
 | { | 
 |     RPC_BINDING_HANDLE Handle; | 
 |     ULONG DataRepresentation; | 
 |     void* Buffer; | 
 |     unsigned int BufferLength; | 
 |     unsigned int ProcNum; | 
 |     PRPC_SYNTAX_IDENTIFIER TransferSyntax; | 
 |     void* RpcInterfaceInformation; | 
 |     void* ReservedForRuntime; | 
 |     RPC_MGR_EPV* ManagerEpv; | 
 |     void* ImportContext; | 
 |     ULONG RpcFlags; | 
 | } RPC_MESSAGE, *PRPC_MESSAGE; | 
 |  | 
 | /* or'ed with ProcNum */ | 
 | #define RPC_FLAGS_VALID_BIT         0x00008000 | 
 |  | 
 | #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 RPC_STATUS (RPC_ENTRY *RPC_FORWARD_FUNCTION)(UUID *InterfaceId, RPC_VERSION *InterfaceVersion, UUID *ObjectId, unsigned char *Rpcpro, void **ppDestEndpoint); | 
 |  | 
 | 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_RpcNegotiateTransferSyntax( RPC_MESSAGE* Message ); | 
 | 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 proxies | 
 |  *  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 ); | 
 |  | 
 | #endif | 
 |  | 
 | #else | 
 |  | 
 | /* 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, ULONG 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, ULONG lParam ); | 
 |  | 
 | #endif | 
 |  | 
 | RPCRTAPI RPC_STATUS RPC_ENTRY | 
 |   I_RpcBindingInqTransportType( RPC_BINDING_HANDLE Binding, unsigned int* Type ); | 
 |  | 
 | RPCRTAPI LONG RPC_ENTRY I_RpcMapWin32Status(RPC_STATUS); | 
 |  | 
 | #ifdef __cplusplus | 
 | } | 
 | #endif | 
 |  | 
 | #endif /*__WINE_RPCDCEP_H */ |