ReactOS  0.4.14-dev-55-g2da92ac
rpcproxy.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2001 Ove Kaaven
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 __RPCPROXY_H_VERSION__
20 /* FIXME: Find an appropriate version number. I guess something is better than nothing */
21 #define __RPCPROXY_H_VERSION__ ( 399 )
22 #endif
23 
24 #ifndef __WINE_RPCPROXY_H
25 #define __WINE_RPCPROXY_H
26 
27 #define __midl_proxy
28 
29 #include <basetsd.h>
30 #ifndef GUID_DEFINED
31 #include <guiddef.h>
32 #endif
33 #include <rpc.h>
34 #include <rpcndr.h>
35 
36 #ifdef __cplusplus
37 extern "C" {
38 #endif
39 
42 typedef const char *PCInterfaceName;
43 typedef int __stdcall IIDLookupRtn( const IID *pIID, int *pIndex );
45 
46 typedef struct tagProxyFileInfo
47 {
53  unsigned short TableSize;
54  unsigned short TableVersion;
60 
62 
64 {
65 #ifdef USE_STUBLESS_PROXY
66  const void *pStublessProxyInfo;
67 #endif
68  const IID *piid;
70 
71 #define CINTERFACE_PROXY_VTABLE(n) \
72  struct \
73  { \
74  CInterfaceProxyHeader header; \
75  void *Vtbl[n]; \
76  }
77 
78 typedef struct tagCInterfaceProxyVtbl
79 {
81 #if defined(__GNUC__)
82  void *Vtbl[0];
83 #else
84  void *Vtbl[1];
85 #endif
87 
90  IRpcChannelBuffer *_pRpcChannelBuffer,
91  PRPC_MESSAGE _pRpcMessage,
92  DWORD *pdwStubPhase);
93 
95 {
96  const IID *piid;
101 
102 typedef struct tagCInterfaceStubVtbl
103 {
105  IRpcStubBufferVtbl Vtbl;
107 
108 typedef struct tagCStdStubBuffer
109 {
110  const IRpcStubBufferVtbl *lpVtbl;
113  const struct ICallFactoryVtbl *pCallFactoryVtbl;
114  const IID *pAsyncIID;
117 
119 {
120  const IPSFactoryBufferVtbl *lpVtbl;
125 
126 #define STUB_FORWARDING_FUNCTION NdrStubForwardingFunction
127 
130 
131 #define CStdStubBuffer_DELEGATING_METHODS 0, 0, CStdStubBuffer2_Release, 0, 0, 0, 0, 0, 0, 0
132 
133 
144 void WINAPI
147  CStdStubBuffer_Invoke( IRpcStubBuffer *This, RPCOLEMESSAGE *pRpcMsg, IRpcChannelBuffer *pRpcChannelBuffer );
154 void WINAPI
156 
157 #define CStdStubBuffer_METHODS \
158  CStdStubBuffer_QueryInterface, \
159  CStdStubBuffer_AddRef, \
160  CStdStubBuffer_Release, \
161  CStdStubBuffer_Connect, \
162  CStdStubBuffer_Disconnect, \
163  CStdStubBuffer_Invoke, \
164  CStdStubBuffer_IsIIDSupported, \
165  CStdStubBuffer_CountRefs, \
166  CStdStubBuffer_DebugServerQueryInterface, \
167  CStdStubBuffer_DebugServerRelease
168 
169 RPCRTAPI void RPC_ENTRY
170  NdrProxyInitialize( void *This, PRPC_MESSAGE pRpcMsg, PMIDL_STUB_MESSAGE pStubMsg,
171  PMIDL_STUB_DESC pStubDescriptor, unsigned int ProcNum );
172 RPCRTAPI void RPC_ENTRY
173  NdrProxyGetBuffer( void *This, PMIDL_STUB_MESSAGE pStubMsg );
174 RPCRTAPI void RPC_ENTRY
175  NdrProxySendReceive( void *This, PMIDL_STUB_MESSAGE pStubMsg );
176 RPCRTAPI void RPC_ENTRY
177  NdrProxyFreeBuffer( void *This, PMIDL_STUB_MESSAGE pStubMsg );
179  NdrProxyErrorHandler( DWORD dwExceptionCode );
180 
181 RPCRTAPI void RPC_ENTRY
183  PMIDL_STUB_DESC pStubDescriptor, IRpcChannelBuffer *pRpcChannelBuffer );
184 RPCRTAPI void RPC_ENTRY
186  PMIDL_STUB_DESC pStubDescriptor, IRpcChannelBuffer *pRpcChannelBuffer,
187  ULONG RequestedBufferSize );
189  PRPC_MESSAGE pMsg, DWORD *pdwStubPhase );
190 RPCRTAPI void RPC_ENTRY
191  NdrStubGetBuffer( IRpcStubBuffer *This, IRpcChannelBuffer *pRpcChannelBuffer, PMIDL_STUB_MESSAGE pStubMsg );
193  NdrStubErrorHandler( DWORD dwExceptionCode );
194 
196  NdrDllGetClassObject( REFCLSID rclsid, REFIID riid, void **ppv, const ProxyFileInfo **pProxyFileList,
197  const CLSID *pclsid, CStdPSFactoryBuffer *pPSFactoryBuffer );
199  NdrDllCanUnloadNow( CStdPSFactoryBuffer *pPSFactoryBuffer );
200 
202  NdrDllRegisterProxy( HMODULE hDll, const ProxyFileInfo **pProxyFileList, const CLSID *pclsid );
204  NdrDllUnregisterProxy( HMODULE hDll, const ProxyFileInfo **pProxyFileList, const CLSID *pclsid );
205 
208 
209 #define CSTDSTUBBUFFERRELEASE(pFactory) \
210 ULONG WINAPI CStdStubBuffer_Release(IRpcStubBuffer *This) \
211  { return NdrCStdStubBuffer_Release(This, (IPSFactoryBuffer *)pFactory); }
212 
213 #ifdef PROXY_DELEGATION
214 #define CSTDSTUBBUFFER2RELEASE(pFactory) \
215 ULONG WINAPI CStdStubBuffer2_Release(IRpcStubBuffer *This) \
216  { return NdrCStdStubBuffer2_Release(This, (IPSFactoryBuffer *)pFactory); }
217 #else
218 #define CSTDSTUBBUFFER2RELEASE(pFactory)
219 #endif
220 
221 #define IID_GENERIC_CHECK_IID(name,pIID,index) memcmp(pIID, name##_ProxyVtblList[index]->header.piid, sizeof(IID))
222 
223 /*
224  * In these macros, BS stands for Binary Search. MIDL uses these to
225  * "unroll" a binary search into the module's IID_Lookup function.
226  * However, I haven't bothered to reimplement that stuff yet;
227  * I've just implemented a linear search for now.
228  */
229 #define IID_BS_LOOKUP_SETUP \
230  int c;
231 #define IID_BS_LOOKUP_INITIAL_TEST(name, sz, split)
232 #define IID_BS_LOOKUP_NEXT_TEST(name, split)
233 #define IID_BS_LOOKUP_RETURN_RESULT(name, sz, index) \
234  for (c=0; c<sz; c++) if (!name##_CHECK_IID(c)) { (index)=c; return 1; } \
235  return 0;
236 
237 /* macros used in dlldata.c files */
238 #define EXTERN_PROXY_FILE(proxy) \
239  EXTERN_C const ProxyFileInfo proxy##_ProxyFileInfo DECLSPEC_HIDDEN;
240 
241 #define PROXYFILE_LIST_START \
242  const ProxyFileInfo * aProxyFileList[] DECLSPEC_HIDDEN = \
243  {
244 
245 #define REFERENCE_PROXY_FILE(proxy) \
246  & proxy##_ProxyFileInfo
247 
248 #define PROXYFILE_LIST_END \
249  NULL \
250  };
251 
252 
253 /* define PROXY_CLSID to use an existing CLSID */
254 /* define PROXY_CLSID_IS to specify the CLSID data of the PSFactoryBuffer */
255 /* define neither to use the GUID of the first interface */
256 #ifdef PROXY_CLSID
257 # define CLSID_PSFACTORYBUFFER extern CLSID PROXY_CLSID DECLSPEC_HIDDEN;
258 #else
259 # ifdef PROXY_CLSID_IS
260 # define CLSID_PSFACTORYBUFFER const CLSID CLSID_PSFactoryBuffer DECLSPEC_HIDDEN; \
261  const CLSID CLSID_PSFactoryBuffer = PROXY_CLSID_IS;
262 # define PROXY_CLSID CLSID_PSFactoryBuffer
263 # else
264 # define CLSID_PSFACTORYBUFFER
265 # endif
266 #endif
267 
268 #ifndef PROXY_CLSID
269 # define GET_DLL_CLSID (aProxyFileList[0]->pStubVtblList[0] ? \
270  aProxyFileList[0]->pStubVtblList[0]->header.piid : NULL)
271 #else
272 # define GET_DLL_CLSID &PROXY_CLSID
273 #endif
274 
275 #ifdef ENTRY_PREFIX
276 # define __rpc_macro_expand2(a, b) a##b
277 # define __rpc_macro_expand(a, b) __rpc_macro_expand2(a, b)
278 # define DLLREGISTERSERVER_ENTRY __rpc_macro_expand(ENTRY_PREFIX, DllRegisterServer)
279 # define DLLUNREGISTERSERVER_ENTRY __rpc_macro_expand(ENTRY_PREFIX, DllUnregisterServer)
280 # define DLLMAIN_ENTRY __rpc_macro_expand(ENTRY_PREFIX, DllMain)
281 # define DLLGETCLASSOBJECT_ENTRY __rpc_macro_expand(ENTRY_PREFIX, DllGetClassObject)
282 # define DLLCANUNLOADNOW_ENTRY __rpc_macro_expand(ENTRY_PREFIX, DllCanUnloadNow)
283 #else
284 # define DLLREGISTERSERVER_ENTRY DllRegisterServer
285 # define DLLUNREGISTERSERVER_ENTRY DllUnregisterServer
286 # define DLLMAIN_ENTRY DllMain
287 # define DLLGETCLASSOBJECT_ENTRY DllGetClassObject
288 # define DLLCANUNLOADNOW_ENTRY DllCanUnloadNow
289 #endif
290 
291 #ifdef WINE_REGISTER_DLL
292 # define WINE_DO_REGISTER_DLL(pfl, clsid) return __wine_register_resources( hProxyDll )
293 # define WINE_DO_UNREGISTER_DLL(pfl, clsid) return __wine_unregister_resources( hProxyDll )
294 #else
295 # define WINE_DO_REGISTER_DLL(pfl, clsid) return NdrDllRegisterProxy( hProxyDll, (pfl), (clsid) )
296 # define WINE_DO_UNREGISTER_DLL(pfl, clsid) return NdrDllUnregisterProxy( hProxyDll, (pfl), (clsid) )
297 #endif
298 
299 
300 #define DLLDATA_GETPROXYDLLINFO(pfl, rclsid) \
301  void RPC_ENTRY GetProxyDllInfo(const ProxyFileInfo ***ppProxyFileInfo, \
302  const CLSID **ppClsid) DECLSPEC_HIDDEN; \
303  void RPC_ENTRY GetProxyDllInfo(const ProxyFileInfo ***ppProxyFileInfo, \
304  const CLSID **ppClsid) \
305  { \
306  *ppProxyFileInfo = (pfl); \
307  *ppClsid = (rclsid); \
308  }
309 
310 #define DLLGETCLASSOBJECTROUTINE(pfl, factory_clsid, factory) \
311  HRESULT WINAPI DLLGETCLASSOBJECT_ENTRY(REFCLSID rclsid, REFIID riid, void **ppv) DECLSPEC_HIDDEN; \
312  HRESULT WINAPI DLLGETCLASSOBJECT_ENTRY(REFCLSID rclsid, REFIID riid, \
313  void **ppv) \
314  { \
315  return NdrDllGetClassObject(rclsid, riid, ppv, (pfl), \
316  (factory_clsid), factory); \
317  }
318 
319 #define DLLCANUNLOADNOW(factory) \
320  HRESULT WINAPI DLLCANUNLOADNOW_ENTRY(void) DECLSPEC_HIDDEN; \
321  HRESULT WINAPI DLLCANUNLOADNOW_ENTRY(void) \
322  { \
323  return NdrDllCanUnloadNow((factory)); \
324  }
325 
326 #define REGISTER_PROXY_DLL_ROUTINES(pfl, factory_clsid) \
327  HINSTANCE hProxyDll DECLSPEC_HIDDEN = NULL; \
328  \
329  BOOL WINAPI DLLMAIN_ENTRY(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) DECLSPEC_HIDDEN; \
330  BOOL WINAPI DLLMAIN_ENTRY(HINSTANCE hinstDLL, DWORD fdwReason, \
331  LPVOID lpvReserved) \
332  { \
333  if (fdwReason == DLL_PROCESS_ATTACH) \
334  { \
335  DisableThreadLibraryCalls(hinstDLL); \
336  hProxyDll = hinstDLL; \
337  } \
338  return TRUE; \
339  } \
340  \
341  HRESULT WINAPI DLLREGISTERSERVER_ENTRY(void) DECLSPEC_HIDDEN; \
342  HRESULT WINAPI DLLREGISTERSERVER_ENTRY(void) \
343  { \
344  WINE_DO_REGISTER_DLL( (pfl), (factory_clsid) ); \
345  } \
346  \
347  HRESULT WINAPI DLLUNREGISTERSERVER_ENTRY(void) DECLSPEC_HIDDEN; \
348  HRESULT WINAPI DLLUNREGISTERSERVER_ENTRY(void) \
349  { \
350  WINE_DO_UNREGISTER_DLL( (pfl), (factory_clsid) ); \
351  }
352 
353 #if defined(REGISTER_PROXY_DLL) || defined(WINE_REGISTER_DLL)
354 # define DLLREGISTRY_ROUTINES(pfl, factory_clsid) \
355  REGISTER_PROXY_DLL_ROUTINES(pfl, factory_clsid)
356 #else
357 # define DLLREGISTRY_ROUTINES(pfl, factory_clsid)
358 #endif
359 
360 #define DLLDATA_ROUTINES(pfl, factory_clsid) \
361  CLSID_PSFACTORYBUFFER \
362  CStdPSFactoryBuffer DECLSPEC_HIDDEN gPFactory = { NULL, 0, NULL, 0 }; \
363  DLLDATA_GETPROXYDLLINFO(pfl, factory_clsid) \
364  DLLGETCLASSOBJECTROUTINE(pfl, factory_clsid, &gPFactory) \
365  DLLCANUNLOADNOW(&gPFactory) \
366  CSTDSTUBBUFFERRELEASE(&gPFactory) \
367  CSTDSTUBBUFFER2RELEASE(&gPFactory) \
368  DLLREGISTRY_ROUTINES(pfl, factory_clsid)
369 
370 #if 0
371 
373  CreateProxyFromTypeInfo( LPTYPEINFO pTypeInfo, LPUNKNOWN pUnkOuter, REFIID riid,
374  LPRPCPROXYBUFFER *ppProxy, LPVOID *ppv );
376  CreateStubFromTypeInfo( LPTYPEINFO pTypeInfo, REFIID riid, LPUNKNOWN pUnkServer,
377  LPRPCSTUBBUFFER *ppStub );
378 
379 #endif
380 
381 #ifdef __cplusplus
382 }
383 #endif
384 
385 #endif /*__WINE_RPCPROXY_H */
#define REFIID
Definition: guiddef.h:118
RPCRTAPI void RPC_ENTRY NdrProxySendReceive(void *This, PMIDL_STUB_MESSAGE pStubMsg)
Definition: cproxy.c:497
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
Definition: typeof.h:49
struct tagCInterfaceProxyVtbl CInterfaceProxyVtbl
HRESULT __wine_register_resources(HMODULE module) DECLSPEC_HIDDEN
Definition: register.c:98
const ProxyFileInfo ** pProxyFileList
Definition: rpcproxy.h:122
RPCRTAPI HRESULT RPC_ENTRY NdrDllUnregisterProxy(HMODULE hDll, const ProxyFileInfo **pProxyFileList, const CLSID *pclsid)
Definition: cpsf.c:302
void __RPC_STUB NdrStubForwardingFunction(IRpcStubBuffer *This, IRpcChannelBuffer *pChannel, PRPC_MESSAGE pMsg, DWORD *pdwStubPhase)
Definition: cstub.c:610
REFIID riid
Definition: precomp.h:44
ProxyFileInfo ExtendedProxyFileInfo
Definition: rpcproxy.h:61
#define REFCLSID
Definition: guiddef.h:117
interface IRpcProxyBuffer * LPRPCPROXYBUFFER
Definition: objfwd.h:40
struct tagCStdPSFactoryBuffer CStdPSFactoryBuffer
const MIDL_SERVER_INFO * pServerInfo
Definition: rpcproxy.h:97
REFIID LPVOID * ppv
Definition: atlbase.h:39
struct tagProxyFileInfo ProxyFileInfo
const PIIDLookup pIIDLookupRtn
Definition: rpcproxy.h:52
HRESULT WINAPI CStdStubBuffer_Invoke(IRpcStubBuffer *This, RPCOLEMESSAGE *pRpcMsg, IRpcChannelBuffer *pRpcChannelBuffer)
RPCRTAPI void RPC_ENTRY NdrProxyInitialize(void *This, PRPC_MESSAGE pRpcMsg, PMIDL_STUB_MESSAGE pStubMsg, PMIDL_STUB_DESC pStubDescriptor, unsigned int ProcNum)
Definition: cproxy.c:451
const PRPC_STUB_FUNCTION * pDispatchTable
Definition: rpcproxy.h:99
struct tagCInterfaceStubVtbl CInterfaceStubVtbl
LONG_PTR Filler4
Definition: rpcproxy.h:58
struct IPSFactoryBuffer * pPSFactory
Definition: rpcproxy.h:115
RPCRTAPI HRESULT RPC_ENTRY NdrDllRegisterProxy(HMODULE hDll, const ProxyFileInfo **pProxyFileList, const CLSID *pclsid)
Definition: cpsf.c:225
void(__RPC_STUB * PRPC_STUB_FUNCTION)(IRpcStubBuffer *This, IRpcChannelBuffer *_pRpcChannelBuffer, PRPC_MESSAGE _pRpcMessage, DWORD *pdwStubPhase)
Definition: rpcproxy.h:88
const struct ICallFactoryVtbl * pCallFactoryVtbl
Definition: rpcproxy.h:113
ULONG WINAPI CStdStubBuffer_AddRef(IRpcStubBuffer *This)
unsigned short TableVersion
Definition: rpcproxy.h:54
const PCInterfaceName * pNamesArray
Definition: rpcproxy.h:50
RPCRTAPI HRESULT RPC_ENTRY NdrDllCanUnloadNow(CStdPSFactoryBuffer *pPSFactoryBuffer)
Definition: cpsf.c:216
const IPSFactoryBufferVtbl * lpVtbl
Definition: rpcproxy.h:120
CInterfaceStubHeader header
Definition: rpcproxy.h:104
int __stdcall IIDLookupRtn(const IID *pIID, int *pIndex)
Definition: rpcproxy.h:43
long LONG
Definition: pedump.c:60
RPCRTAPI void RPC_ENTRY NdrStubInitializePartial(PRPC_MESSAGE pRpcMsg, PMIDL_STUB_MESSAGE pStubMsg, PMIDL_STUB_DESC pStubDescriptor, IRpcChannelBuffer *pRpcChannelBuffer, ULONG RequestedBufferSize)
#define RPCRTAPI
Definition: rpc.h:82
static LPUNKNOWN
Definition: ndr_ole.c:49
struct tagCInterfaceStubHeader CInterfaceStubHeader
HRESULT WINAPI CreateProxyFromTypeInfo(ITypeInfo *typeinfo, IUnknown *outer, REFIID iid, IRpcProxyBuffer **proxy_buffer, void **out)
Definition: ndr_typelib.c:1010
IIDLookupRtn * PIIDLookup
Definition: rpcproxy.h:44
const IID * piid
Definition: rpcproxy.h:96
#define __RPC_STUB
Definition: rpc.h:66
const PCInterfaceStubVtblList * pStubVtblList
Definition: rpcproxy.h:49
const IID ** pAsyncIIDLookup
Definition: rpcproxy.h:55
CInterfaceProxyHeader header
Definition: rpcproxy.h:80
struct tagCStdStubBuffer CStdStubBuffer
HRESULT WINAPI CStdStubBuffer_QueryInterface(IRpcStubBuffer *This, REFIID riid, void **ppvObject)
RPCRTAPI void RPC_ENTRY NdrProxyFreeBuffer(void *This, PMIDL_STUB_MESSAGE pStubMsg)
Definition: cproxy.c:531
LONG HRESULT
Definition: typedefs.h:77
#define WINAPI
Definition: msvc.h:8
RPCRTAPI HRESULT RPC_ENTRY NdrProxyErrorHandler(DWORD dwExceptionCode)
Definition: cproxy.c:547
#define STDMETHODCALLTYPE
Definition: bdasup.h:9
void WINAPI CStdStubBuffer_DebugServerRelease(IRpcStubBuffer *This, void *pv)
unsigned long DWORD
Definition: ntddk_ex.h:95
struct tagCInterfaceStubVtbl * PCInterfaceStubVtblList
Definition: rpcproxy.h:40
#define __stdcall
Definition: typedefs.h:25
LONG_PTR Filler2
Definition: rpcproxy.h:56
IRpcStubBuffer *WINAPI CStdStubBuffer_IsIIDSupported(IRpcStubBuffer *This, REFIID riid)
RPCRTAPI void RPC_ENTRY NdrStubInitialize(PRPC_MESSAGE pRpcMsg, PMIDL_STUB_MESSAGE pStubMsg, PMIDL_STUB_DESC pStubDescriptor, IRpcChannelBuffer *pRpcChannelBuffer)
HRESULT __wine_unregister_resources(HMODULE module) DECLSPEC_HIDDEN
Definition: register.c:110
struct tagCInterfaceProxyVtbl * PCInterfaceProxyVtblList
Definition: rpcproxy.h:41
struct IUnknown * pvServerObject
Definition: rpcproxy.h:112
REFIID LPVOID * ppvObject
Definition: precomp.h:44
ULONG WINAPI CStdStubBuffer_CountRefs(IRpcStubBuffer *This)
const IID * pAsyncIID
Definition: rpcproxy.h:114
RPCRTAPI void RPC_ENTRY NdrStubGetBuffer(IRpcStubBuffer *This, IRpcChannelBuffer *pRpcChannelBuffer, PMIDL_STUB_MESSAGE pStubMsg)
LONG_PTR Filler3
Definition: rpcproxy.h:57
const PCInterfaceProxyVtblList * pProxyVtblList
Definition: rpcproxy.h:48
RPCRTAPI void RPC_ENTRY NdrProxyGetBuffer(void *This, PMIDL_STUB_MESSAGE pStubMsg)
Definition: cproxy.c:469
_Out_ PULONG _Out_ PULONG pIndex
Definition: ndis.h:4564
#define DECLSPEC_HIDDEN
Definition: precomp.h:8
const char * PCInterfaceName
Definition: rpcproxy.h:42
HRESULT WINAPI CStdStubBuffer_DebugServerQueryInterface(IRpcStubBuffer *This, void **ppv)
const IID ** pDelegatedIIDs
Definition: rpcproxy.h:51
#define RPC_ENTRY
Definition: rpc.h:67
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
unsigned short TableSize
Definition: rpcproxy.h:53
void WINAPI CStdStubBuffer_Disconnect(IRpcStubBuffer *This)
ULONG STDMETHODCALLTYPE CStdStubBuffer2_Release(IRpcStubBuffer *This) DECLSPEC_HIDDEN
unsigned int ULONG
Definition: retypes.h:1
interface IRpcStubBuffer * LPRPCSTUBBUFFER
Definition: objfwd.h:41
RPCRTAPI HRESULT RPC_ENTRY NdrDllGetClassObject(REFCLSID rclsid, REFIID riid, void **ppv, const ProxyFileInfo **pProxyFileList, const CLSID *pclsid, CStdPSFactoryBuffer *pPSFactoryBuffer)
ULONG WINAPI NdrCStdStubBuffer_Release(IRpcStubBuffer *This, IPSFactoryBuffer *pPSF)
HRESULT WINAPI CStdStubBuffer_Connect(IRpcStubBuffer *This, IUnknown *pUnkServer)
ULONG STDMETHODCALLTYPE NdrCStdStubBuffer2_Release(IRpcStubBuffer *This, IPSFactoryBuffer *pPSF)
ULONG WINAPI CStdStubBuffer_Release(IRpcStubBuffer *This) DECLSPEC_HIDDEN
RPCRTAPI HRESULT RPC_ENTRY NdrStubErrorHandler(DWORD dwExceptionCode)
HRESULT WINAPI CreateStubFromTypeInfo(ITypeInfo *typeinfo, REFIID iid, IUnknown *server, IRpcStubBuffer **stub_buffer)
Definition: ndr_typelib.c:1145
const IRpcStubBufferVtbl * lpVtbl
Definition: rpcproxy.h:110
IRpcStubBufferVtbl Vtbl
Definition: rpcproxy.h:105
struct tagCInterfaceProxyHeader CInterfaceProxyHeader