ReactOS 0.4.15-dev-7788-g1ad9096
rpcdcep.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2000 Francois Gouget
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 */
18
19#ifndef __WINE_RPCDCEP_H
20#define __WINE_RPCDCEP_H
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
26typedef struct _RPC_VERSION {
27 unsigned short MajorVersion;
28 unsigned short MinorVersion;
30
31typedef struct _RPC_SYNTAX_IDENTIFIER {
35
36typedef struct _RPC_MESSAGE
37{
40 void* Buffer;
41 unsigned int BufferLength;
42 unsigned int ProcNum;
50
51/* or'ed with ProcNum */
52#define RPC_FLAGS_VALID_BIT 0x00008000
53
54#define RPC_CONTEXT_HANDLE_DEFAULT_GUARD ((void *)0xfffff00d)
55
56#define RPC_CONTEXT_HANDLE_DEFAULT_FLAGS 0x00000000
57#define RPC_CONTEXT_HANDLE_FLAGS 0x30000000
58#define RPC_CONTEXT_HANDLE_SERIALIZE 0x10000000
59#define RPC_CONTEXT_HANDLE_DONT_SERIALIZE 0x20000000
60#define RPC_TYPE_STRICT_CONTEXT_HANDLE 0x40000000
61
62#define RPC_NCA_FLAGS_DEFAULT 0x00000000
63#define RPC_NCA_FLAGS_IDEMPOTENT 0x00000001
64#define RPC_NCA_FLAGS_BROADCAST 0x00000002
65#define RPC_NCA_FLAGS_MAYBE 0x00000004
66
67#define RPC_BUFFER_COMPLETE 0x00001000
68#define RPC_BUFFER_PARTIAL 0x00002000
69#define RPC_BUFFER_EXTRA 0x00004000
70#define RPC_BUFFER_ASYNC 0x00008000
71#define RPC_BUFFER_NONOTIFY 0x00010000
72
73#define RPCFLG_MESSAGE 0x01000000
74#define RPCFLG_HAS_MULTI_SYNTAXES 0x02000000
75#define RPCFLG_HAS_CALLBACK 0x04000000
76#define RPCFLG_AUTO_COMPLETE 0x08000000
77#define RPCFLG_LOCAL_CALL 0x10000000
78#define RPCFLG_INPUT_SYNCHRONOUS 0x20000000
79#define RPCFLG_ASYNCHRONOUS 0x40000000
80#define RPCFLG_NON_NDR 0x80000000
81
83typedef RPC_STATUS (RPC_ENTRY *RPC_FORWARD_FUNCTION)(UUID *InterfaceId, RPC_VERSION *InterfaceVersion, UUID *ObjectId, unsigned char *Rpcpro, void **ppDestEndpoint);
84
85typedef struct
86{
87 unsigned int DispatchTableCount;
91
93{
94 unsigned char* RpcProtocolSequence;
95 unsigned char* Endpoint;
97
98#define NT351_INTERFACE_SIZE 0x40
99#define RPC_INTERFACE_HAS_PIPES 0x0001
100
102{
103 unsigned int Length;
110 void const* InterpreterInfo;
111 unsigned int Flags;
113
115{
116 unsigned int Length;
123 void const* InterpreterInfo;
124 unsigned int Flags;
126
127#define RPC_C_OPT_COOKIE_AUTH 7
128
130{
132 char *Buffer;
134
135#define TRANSPORT_TYPE_CN 0x01
136#define TRANSPORT_TYPE_DG 0x02
137#define TRANSPORT_TYPE_LPC 0x04
138#define TRANSPORT_TYPE_WMSG 0x08
139
154
156 I_RpcAllocate( unsigned int Size );
158 I_RpcFree( void* Object );
159
162
163/*
164 * The platform SDK headers don't define these functions at all if WINNT is defined
165 * The MSVC6 headers define two different sets of functions :
166 * If WINNT and MSWMSG are defined, the NT versions are defined
167 * If WINNT is not defined, the windows 9x versions are defined.
168 * Note that the prototypes for I_RpcBindingSetAsync are different for each case.
169 *
170 * Wine defaults to the WinNT case and only defines these function is MSWMSG is
171 * defined. Defining the NT functions by default causes MIDL generated proxies
172 * to not compile.
173 */
174
175#if 1 /* WINNT */
176#ifdef MSWMSG
177
182/* WINNT */
184 I_GetThreadWindowHandle( HWND* hWnd );
186 I_RpcAsyncSendReceive( RPC_MESSAGE* Message, void* Context, HWND hWnd );
187
188typedef RPC_STATUS (*RPC_BLOCKING_FN)(void* hWnd, void* Context, HANDLE hSyncEvent);
189
191 I_RpcBindingSetAsync( RPC_BINDING_HANDLE Binding, RPC_BLOCKING_FN BlockingFn );
192
195
197 I_RpcSetWMsgEndpoint( WCHAR* Endpoint );
198
199#endif
200
201#else
202
203/* WIN9x */
206
209
210typedef RPC_STATUS (*RPC_BLOCKING_FN)(void* hWnd, void* Context, void* hSyncEvent);
211
213 I_RpcBindingSetAsync( RPC_BINDING_HANDLE Binding, RPC_BLOCKING_FN BlockingFn, ULONG ServerTid );
214
216 I_RpcSetThreadParams( int fClientFree, void* Context, void* hWndClient );
217
219 I_RpcWindowProc( void* hWnd, unsigned int Message, unsigned int wParam, ULONG lParam );
220
221#endif
222
225
227
228#ifdef __cplusplus
229}
230#endif
231
232#endif /*__WINE_RPCDCEP_H */
Type
Definition: Type.h:7
HWND hWnd
Definition: settings.c:17
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
static const WCHAR Message[]
Definition: register.c:74
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
unsigned int UINT
Definition: ndis.h:50
long LONG
Definition: pedump.c:60
RPC_STATUS WINAPI I_RpcBindingSetAsync(RPC_BINDING_HANDLE Binding, RPC_BLOCKING_FN BlockingFn)
Definition: rpc_binding.c:975
RPC_STATUS WINAPI I_RpcServerStopListening(void)
Definition: rpc_server.c:1630
UINT WINAPI I_RpcWindowProc(void *hWnd, UINT Message, UINT wParam, ULONG lParam)
Definition: rpc_server.c:1640
RPC_STATUS WINAPI I_RpcServerStartListening(HWND hWnd)
Definition: rpc_server.c:1620
#define RPC_MGR_EPV
Definition: rpcdce.h:53
struct _RPC_SERVER_INTERFACE * PRPC_SERVER_INTERFACE
RPCRTAPI void *RPC_ENTRY I_RpcAllocate(unsigned int Size)
Definition: rpcrt4_main.c:716
void(__RPC_STUB * RPC_DISPATCH_FUNCTION)(PRPC_MESSAGE Message)
Definition: rpcdcep.h:82
RPC_STATUS(RPC_ENTRY * RPC_FORWARD_FUNCTION)(UUID *InterfaceId, RPC_VERSION *InterfaceVersion, UUID *ObjectId, unsigned char *Rpcpro, void **ppDestEndpoint)
Definition: rpcdcep.h:83
struct _RPC_C_OPT_COOKIE_AUTH_DESCRIPTOR RPC_C_OPT_COOKIE_AUTH_DESCRIPTOR
RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcFreeBuffer(RPC_MESSAGE *Message)
struct _RPC_VERSION RPC_VERSION
RPCRTAPI RPC_BINDING_HANDLE RPC_ENTRY I_RpcGetCurrentCallHandle(void)
Definition: rpc_server.c:1743
RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcSendReceive(RPC_MESSAGE *Message)
struct RPC_DISPATCH_TABLE * PRPC_DISPATCH_TABLE
struct _RPC_SYNTAX_IDENTIFIER * PRPC_SYNTAX_IDENTIFIER
struct _RPC_CLIENT_INTERFACE RPC_CLIENT_INTERFACE
RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcGetBuffer(RPC_MESSAGE *Message)
struct _RPC_CLIENT_INTERFACE * PRPC_CLIENT_INTERFACE
struct _RPC_MESSAGE * PRPC_MESSAGE
struct _RPC_MESSAGE RPC_MESSAGE
RPCRTAPI LONG RPC_ENTRY I_RpcMapWin32Status(RPC_STATUS)
Definition: rpcrt4_main.c:740
RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcReceive(RPC_MESSAGE *Message)
RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcNegotiateTransferSyntax(RPC_MESSAGE *Message)
RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcGetBufferWithObject(RPC_MESSAGE *Message, UUID *ObjectUuid)
RPCRTAPI void RPC_ENTRY I_RpcFree(void *Object)
Definition: rpcrt4_main.c:724
RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcBindingInqTransportType(RPC_BINDING_HANDLE Binding, unsigned int *Type)
Definition: rpc_binding.c:961
RPCRTAPI RPC_STATUS RPC_ENTRY I_RpcSend(RPC_MESSAGE *Message)
struct _RPC_PROTSEQ_ENDPOINT RPC_PROTSEQ_ENDPOINT
struct _RPC_PROTSEQ_ENDPOINT * PRPC_PROTSEQ_ENDPOINT
struct _RPC_SERVER_INTERFACE RPC_SERVER_INTERFACE
struct _RPC_SYNTAX_IDENTIFIER RPC_SYNTAX_IDENTIFIER
#define RPC_ENTRY
Definition: rpc.h:67
#define __RPC_STUB
Definition: rpc.h:66
long RPC_STATUS
Definition: rpc.h:52
#define RPCRTAPI
Definition: rpc.h:82
unsigned int DispatchTableCount
Definition: rpcdcep.h:87
LONG_PTR Reserved
Definition: rpcdcep.h:89
RPC_DISPATCH_FUNCTION * DispatchTable
Definition: rpcdcep.h:88
ULONG_PTR Reserved
Definition: rpcdcep.h:122
unsigned int RpcProtseqEndpointCount
Definition: rpcdcep.h:120
unsigned int Flags
Definition: rpcdcep.h:124
RPC_SYNTAX_IDENTIFIER InterfaceId
Definition: rpcdcep.h:117
RPC_SYNTAX_IDENTIFIER TransferSyntax
Definition: rpcdcep.h:118
PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint
Definition: rpcdcep.h:121
PRPC_DISPATCH_TABLE DispatchTable
Definition: rpcdcep.h:119
unsigned int Length
Definition: rpcdcep.h:116
void const * InterpreterInfo
Definition: rpcdcep.h:123
unsigned int BufferLength
Definition: rpcdcep.h:41
void * ImportContext
Definition: rpcdcep.h:47
unsigned int ProcNum
Definition: rpcdcep.h:42
PRPC_SYNTAX_IDENTIFIER TransferSyntax
Definition: rpcdcep.h:43
void * RpcInterfaceInformation
Definition: rpcdcep.h:44
void * Buffer
Definition: rpcdcep.h:40
ULONG DataRepresentation
Definition: rpcdcep.h:39
void * ReservedForRuntime
Definition: rpcdcep.h:45
RPC_BINDING_HANDLE Handle
Definition: rpcdcep.h:38
ULONG RpcFlags
Definition: rpcdcep.h:48
RPC_MGR_EPV * ManagerEpv
Definition: rpcdcep.h:46
unsigned char * Endpoint
Definition: rpcdcep.h:95
unsigned char * RpcProtocolSequence
Definition: rpcdcep.h:94
unsigned int Length
Definition: rpcdcep.h:103
unsigned int Flags
Definition: rpcdcep.h:111
unsigned int RpcProtseqEndpointCount
Definition: rpcdcep.h:107
RPC_SYNTAX_IDENTIFIER InterfaceId
Definition: rpcdcep.h:104
RPC_MGR_EPV * DefaultManagerEpv
Definition: rpcdcep.h:109
PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint
Definition: rpcdcep.h:108
RPC_SYNTAX_IDENTIFIER TransferSyntax
Definition: rpcdcep.h:105
PRPC_DISPATCH_TABLE DispatchTable
Definition: rpcdcep.h:106
void const * InterpreterInfo
Definition: rpcdcep.h:110
RPC_VERSION SyntaxVersion
Definition: rpcdcep.h:33
unsigned short MajorVersion
Definition: rpcdcep.h:27
unsigned short MinorVersion
Definition: rpcdcep.h:28
uint32_t ULONG_PTR
Definition: typedefs.h:65
uint32_t ULONG
Definition: typedefs.h:59
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Definition: wdfdevice.h:4533
__wchar_t WCHAR
Definition: xmlstorage.h:180