|  | #ifndef __WINE_RPCPROXY_H | 
|  | #define __WINE_RPCPROXY_H | 
|  |  | 
|  | #include "basetsd.h" | 
|  | #include "guiddef.h" | 
|  |  | 
|  | typedef struct tagCInterfaceStubVtbl *PCInterfaceStubVtblList; | 
|  | typedef struct tagCInterfaceProxyVtbl *PCInterfaceProxyVtblList; | 
|  | typedef const char *PCInterfaceName; | 
|  | typedef int __stdcall IIDLookupRtn( const IID *pIID, int *pIndex ); | 
|  | typedef IIDLookupRtn *PIIDLookup; | 
|  |  | 
|  | typedef struct tagProxyFileInfo | 
|  | { | 
|  | const PCInterfaceProxyVtblList *pProxyVtblList; | 
|  | const PCInterfaceStubVtblList *pStubVtblList; | 
|  | const PCInterfaceName *pNamesArray; | 
|  | const IID **pDelegatedIIDs; | 
|  | const PIIDLookup pIIDLookupRtn; | 
|  | unsigned short TableSize; | 
|  | unsigned short TableVersion; | 
|  | const IID **pAsyncIIDLookup; | 
|  | LONG_PTR Filler2; | 
|  | LONG_PTR Filler3; | 
|  | LONG_PTR Filler4; | 
|  | } ProxyFileInfo; | 
|  |  | 
|  | typedef ProxyFileInfo ExtendedProxyFileInfo; | 
|  |  | 
|  | #include "rpc.h" | 
|  | #include "rpcndr.h" | 
|  |  | 
|  | typedef struct tagCInterfaceProxyHeader | 
|  | { | 
|  | #ifdef USE_STUBLESS_PROXY | 
|  | const void *pStublessProxyInfo; | 
|  | #endif | 
|  | const IID *piid; | 
|  | } CInterfaceProxyHeader; | 
|  |  | 
|  | #define CINTERFACE_PROXY_VTABLE(n) \ | 
|  | struct \ | 
|  | { \ | 
|  | CInterfaceProxyHeader header; \ | 
|  | void *Vtbl[n]; \ | 
|  | } | 
|  |  | 
|  | typedef struct tagCInterfaceProxyVtbl | 
|  | { | 
|  | CInterfaceProxyHeader header; | 
|  | #if defined(__GNUC__) | 
|  | void *Vtbl[0]; | 
|  | #else | 
|  | void *Vtbl[1]; | 
|  | #endif | 
|  | } CInterfaceProxyVtbl; | 
|  |  | 
|  | typedef void (__RPC_STUB *PRPC_STUB_FUNCTION)( | 
|  | IRpcStubBuffer *This, | 
|  | IRpcChannelBuffer *_pRpcChannelBuffer, | 
|  | PRPC_MESSAGE _pRpcMessage, | 
|  | DWORD *pdwStubPhase); | 
|  |  | 
|  | typedef struct tagCInterfaceStubHeader | 
|  | { | 
|  | const IID *piid; | 
|  | const MIDL_SERVER_INFO *pServerInfo; | 
|  | unsigned long DispatchTableCount; | 
|  | const PRPC_STUB_FUNCTION *pDispatchTable; | 
|  | } CInterfaceStubHeader; | 
|  |  | 
|  | typedef struct tagCInterfaceStubVtbl | 
|  | { | 
|  | CInterfaceStubHeader header; | 
|  | ICOM_VTABLE(IRpcStubBuffer) Vtbl; | 
|  | } CInterfaceStubVtbl; | 
|  |  | 
|  | typedef struct tagCStdStubBuffer | 
|  | { | 
|  | const ICOM_VTABLE(IRpcStubBuffer) *lpVtbl; | 
|  | long RefCount; | 
|  | struct IUnknown *pvServerObject; | 
|  | const struct ICallFactoryVtbl *pCallFactoryVtbl; | 
|  | const IID *pAsyncIID; | 
|  | struct IPSFactoryBuffer *pPSFactory; | 
|  | } CStdStubBuffer; | 
|  |  | 
|  | typedef struct tagCStdPSFactoryBuffer | 
|  | { | 
|  | const IPSFactoryBufferVtbl *lpVtbl; | 
|  | long RefCount; | 
|  | const ProxyFileInfo **pProxyFileList; | 
|  | long Filler1; | 
|  | } CStdPSFactoryBuffer; | 
|  |  | 
|  | HRESULT WINAPI | 
|  | CStdStubBuffer_QueryInterface( IRpcStubBuffer *This, REFIID riid, void **ppvObject ); | 
|  | ULONG WINAPI | 
|  | CStdStubBuffer_AddRef( IRpcStubBuffer *This ); | 
|  | ULONG WINAPI | 
|  | CStdStubBuffer_Release( IRpcStubBuffer *This ); | 
|  | ULONG WINAPI | 
|  | NdrCStdStubBuffer_Release( IRpcStubBuffer *This, IPSFactoryBuffer *pPSF ); | 
|  | HRESULT WINAPI | 
|  | CStdStubBuffer_Connect( IRpcStubBuffer *This, IUnknown *pUnkServer ); | 
|  | void WINAPI | 
|  | CStdStubBuffer_Disconnect( IRpcStubBuffer *This ); | 
|  | HRESULT WINAPI | 
|  | CStdStubBuffer_Invoke( IRpcStubBuffer *This, RPCOLEMESSAGE *pRpcMsg, IRpcChannelBuffer *pRpcChannelBuffer ); | 
|  | IRpcStubBuffer * WINAPI | 
|  | CStdStubBuffer_IsIIDSupported( IRpcStubBuffer *This, REFIID riid ); | 
|  | ULONG WINAPI | 
|  | CStdStubBuffer_CountRefs( IRpcStubBuffer *This ); | 
|  | HRESULT WINAPI | 
|  | CStdStubBuffer_DebugServerQueryInterface( IRpcStubBuffer *This, void **ppv ); | 
|  | void WINAPI | 
|  | CStdStubBuffer_DebugServerRelease( IRpcStubBuffer *This, void *pv ); | 
|  |  | 
|  | #define CStdStubBuffer_METHODS \ | 
|  | ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE \ | 
|  | CStdStubBuffer_QueryInterface, \ | 
|  | CStdStubBuffer_AddRef, \ | 
|  | CStdStubBuffer_Release, \ | 
|  | CStdStubBuffer_Connect, \ | 
|  | CStdStubBuffer_Disconnect, \ | 
|  | CStdStubBuffer_Invoke, \ | 
|  | CStdStubBuffer_IsIIDSupported, \ | 
|  | CStdStubBuffer_CountRefs, \ | 
|  | CStdStubBuffer_DebugServerQueryInterface, \ | 
|  | CStdStubBuffer_DebugServerRelease | 
|  |  | 
|  | RPCRTAPI HRESULT RPC_ENTRY | 
|  | NdrDllGetClassObject( REFCLSID rclsid, REFIID riid, void **ppv, const ProxyFileInfo **pProxyFileList, | 
|  | const CLSID *pclsid, CStdPSFactoryBuffer *pPSFactoryBuffer ); | 
|  | RPCRTAPI HRESULT RPC_ENTRY | 
|  | NdrDllCanUnloadNow( CStdPSFactoryBuffer *pPSFactoryBuffer ); | 
|  |  | 
|  | RPCRTAPI HRESULT RPC_ENTRY | 
|  | NdrDllRegisterProxy( HMODULE hDll, const ProxyFileInfo **pProxyFileList, const CLSID *pclsid ); | 
|  | RPCRTAPI HRESULT RPC_ENTRY | 
|  | NdrDllUnregisterProxy( HMODULE hDll, const ProxyFileInfo **pProxyFileList, const CLSID *pclsid ); | 
|  |  | 
|  | #define CSTDSTUBBUFFERRELEASE(pFactory) \ | 
|  | ULONG WINAPI CStdStubBuffer_Release(IRpcStubBuffer *This) \ | 
|  | { return NdrCStdStubBuffer_Release(This, (IPSFactoryBuffer *)pFactory); } | 
|  |  | 
|  | #if defined(__WINE__) && defined(__WINE_WINE_OBJ_OLEAUT_H) | 
|  | /* see http://msdn.microsoft.com/library/en-us/dnmsj99/html/com0199.asp?frame=true */ | 
|  |  | 
|  | RPCRTAPI HRESULT RPC_ENTRY | 
|  | CreateProxyFromTypeInfo( LPTYPEINFO pTypeInfo, LPUNKNOWN pUnkOuter, REFIID riid, | 
|  | LPRPCPROXYBUFFER *ppProxy, LPVOID *ppv ); | 
|  | RPCRTAPI HRESULT RPC_ENTRY | 
|  | CreateStubFromTypeInfo( LPTYPEINFO pTypeInfo, REFIID riid, LPUNKNOWN pUnkServer, | 
|  | LPRPCSTUBBUFFER *ppStub ); | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #endif /*__WINE_RPCDCE_H */ |