6 #define RPC_NCA_FLAGS_DEFAULT 0
7 #define RPC_NCA_FLAGS_IDEMPOTENT 1
8 #define RPC_NCA_FLAGS_BROADCAST 2
9 #define RPC_NCA_FLAGS_MAYBE 4
10 #define RPCFLG_ASYNCHRONOUS 0x40000000
11 #define RPCFLG_INPUT_SYNCHRONOUS 0x20000000
12 #define RPC_FLAGS_VALID_BIT 0x8000
13 #define TRANSPORT_TYPE_CN 1
14 #define TRANSPORT_TYPE_DG 2
15 #define TRANSPORT_TYPE_LPC 4
16 #define TRANSPORT_TYPE_WMSG 8
18 typedef struct _RPC_VERSION
{
19 unsigned short MajorVersion
;
20 unsigned short MinorVersion
;
22 typedef struct _RPC_SYNTAX_IDENTIFIER
{
24 RPC_VERSION SyntaxVersion
;
25 } RPC_SYNTAX_IDENTIFIER
, *PRPC_SYNTAX_IDENTIFIER
;
26 typedef struct _RPC_MESSAGE
{
28 unsigned long DataRepresentation
;
30 unsigned int BufferLength
;
32 PRPC_SYNTAX_IDENTIFIER TransferSyntax
;
33 void *RpcInterfaceInformation
;
34 void *ReservedForRuntime
;
37 unsigned long RpcFlags
;
38 } RPC_MESSAGE
,*PRPC_MESSAGE
;
39 typedef long __stdcall
RPC_FORWARD_FUNCTION(GUID
*,RPC_VERSION
*,GUID
*,unsigned char*,void**);
40 typedef void(__stdcall
*RPC_DISPATCH_FUNCTION
) ( PRPC_MESSAGE Message
);
42 unsigned int DispatchTableCount
;
43 RPC_DISPATCH_FUNCTION
*DispatchTable
;
45 } RPC_DISPATCH_TABLE
,*PRPC_DISPATCH_TABLE
;
46 typedef struct _RPC_PROTSEQ_ENDPOINT
{
47 unsigned char *RpcProtocolSequence
;
48 unsigned char *Endpoint
;
49 } RPC_PROTSEQ_ENDPOINT
,*PRPC_PROTSEQ_ENDPOINT
;
50 typedef struct _RPC_SERVER_INTERFACE
{
52 RPC_SYNTAX_IDENTIFIER InterfaceId
;
53 RPC_SYNTAX_IDENTIFIER TransferSyntax
;
54 PRPC_DISPATCH_TABLE DispatchTable
;
55 unsigned int RpcProtseqEndpointCount
;
56 PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint
;
57 void *DefaultManagerEpv
;
58 void const *InterpreterInfo
;
59 } RPC_SERVER_INTERFACE
,*PRPC_SERVER_INTERFACE
;
60 typedef struct _RPC_CLIENT_INTERFACE
{
62 RPC_SYNTAX_IDENTIFIER InterfaceId
;
63 RPC_SYNTAX_IDENTIFIER TransferSyntax
;
64 PRPC_DISPATCH_TABLE DispatchTable
;
65 unsigned int RpcProtseqEndpointCount
;
66 PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint
;
67 unsigned long Reserved
;
68 void const *InterpreterInfo
;
69 } RPC_CLIENT_INTERFACE
,*PRPC_CLIENT_INTERFACE
;
70 typedef void *I_RPC_MUTEX
;
71 typedef struct _RPC_TRANSFER_SYNTAX
{
73 unsigned short VersMajor
;
74 unsigned short VersMinor
;
75 } RPC_TRANSFER_SYNTAX
;
76 typedef long(__stdcall
*RPC_BLOCKING_FUNCTION
)(void*,void*);
78 long __stdcall
I_RpcGetBuffer(RPC_MESSAGE
*);
79 long __stdcall
I_RpcSendReceive(RPC_MESSAGE
*);
80 long __stdcall
I_RpcFreeBuffer(RPC_MESSAGE
*);
81 void __stdcall
I_RpcRequestMutex(I_RPC_MUTEX
*);
82 void __stdcall
I_RpcClearMutex(I_RPC_MUTEX
);
83 void __stdcall
I_RpcDeleteMutex(I_RPC_MUTEX
);
84 DECLARE_STDCALL_P(void *) I_RpcAllocate(unsigned int);
85 void __stdcall
I_RpcFree(void*);
86 void __stdcall
I_RpcPauseExecution(unsigned long);
87 typedef void(__stdcall
*PRPC_RUNDOWN
) (void*);
88 long __stdcall
I_RpcMonitorAssociation(HANDLE
,PRPC_RUNDOWN
,void*);
89 long __stdcall
I_RpcStopMonitorAssociation(HANDLE
);
90 HANDLE __stdcall
I_RpcGetCurrentCallHandle(void);
91 long __stdcall
I_RpcGetAssociationContext(void**);
92 long __stdcall
I_RpcSetAssociationContext(void*);
94 long __stdcall
I_RpcNsBindingSetEntryName(HANDLE
,unsigned long,unsigned short*);
95 long __stdcall
I_RpcBindingInqDynamicEndpoint(HANDLE
, unsigned short**);
97 long __stdcall
I_RpcNsBindingSetEntryName(HANDLE
,unsigned long,unsigned char*);
98 long __stdcall
I_RpcBindingInqDynamicEndpoint(HANDLE
,unsigned char**);
100 long __stdcall
I_RpcBindingInqTransportType(HANDLE
,unsigned int*);
101 long __stdcall
I_RpcIfInqTransferSyntaxes(HANDLE
,RPC_TRANSFER_SYNTAX
*,unsigned int,unsigned int*);
102 long __stdcall
I_UuidCreate(GUID
*);
103 long __stdcall
I_RpcBindingCopy(HANDLE
,HANDLE
*);
104 long __stdcall
I_RpcBindingIsClientLocal(HANDLE
,unsigned int*);
105 void __stdcall
I_RpcSsDontSerializeContext(void);
106 long __stdcall
I_RpcServerRegisterForwardFunction(RPC_FORWARD_FUNCTION
*);
107 long __stdcall
I_RpcConnectionInqSockBuffSize(unsigned long*,unsigned long*);
108 long __stdcall
I_RpcConnectionSetSockBuffSize(unsigned long,unsigned long);
109 long __stdcall
I_RpcBindingSetAsync(HANDLE
,RPC_BLOCKING_FUNCTION
);
110 long __stdcall
I_RpcAsyncSendReceive(RPC_MESSAGE
*,void*);
111 long __stdcall
I_RpcGetThreadWindowHandle(void**);
112 long __stdcall
I_RpcServerThreadPauseListening(void);
113 long __stdcall
I_RpcServerThreadContinueListening(void);
114 long __stdcall
I_RpcServerUnregisterEndpointA(unsigned char*,unsigned char*);
115 long __stdcall
I_RpcServerUnregisterEndpointW(unsigned short*,unsigned short*);
117 #define I_RpcServerUnregisterEndpoint I_RpcServerUnregisterEndpointW
119 #define I_RpcServerUnregisterEndpoint I_RpcServerUnregisterEndpointA