160 lines
4.7 KiB
C
160 lines
4.7 KiB
C
#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 */
|