diff --git a/dlls/rpcrt4/cstub.c b/dlls/rpcrt4/cstub.c index 98c7553f321..13004dd0e02 100644 --- a/dlls/rpcrt4/cstub.c +++ b/dlls/rpcrt4/cstub.c @@ -109,6 +109,13 @@ ULONG WINAPI NdrCStdStubBuffer_Release(LPRPCSTUBBUFFER iface, return This->RefCount; } +ULONG WINAPI NdrCStdStubBuffer2_Release(LPRPCSTUBBUFFER iface, + LPPSFACTORYBUFFER pPSF) +{ + FIXME("Not implemented\n"); + return 0; +} + HRESULT WINAPI CStdStubBuffer_Connect(LPRPCSTUBBUFFER iface, LPUNKNOWN lpUnkServer) { diff --git a/dlls/rpcrt4/ndr_midl.c b/dlls/rpcrt4/ndr_midl.c index 6f3133f231a..01d3feefe4e 100644 --- a/dlls/rpcrt4/ndr_midl.c +++ b/dlls/rpcrt4/ndr_midl.c @@ -301,3 +301,13 @@ RPC_STATUS RPC_ENTRY NdrMapCommAndFaultStatus( PMIDL_STUB_MESSAGE pStubMsg, return RPC_S_OK; } + +/************************************************************************ + * NdrStubForwardingFunction [RPCRT4.@] + */ +void __RPC_STUB NdrStubForwardingFunction( IRpcStubBuffer *This, IRpcChannelBuffer *pChannel, + PRPC_MESSAGE pMsg, DWORD *pdwStubPhase ) +{ + FIXME("Not implemented\n"); + return; +} diff --git a/dlls/rpcrt4/rpcrt4.spec b/dlls/rpcrt4/rpcrt4.spec index 97c7609ac16..11750679766 100644 --- a/dlls/rpcrt4/rpcrt4.spec +++ b/dlls/rpcrt4/rpcrt4.spec @@ -154,7 +154,7 @@ @ stdcall NdrByteCountPointerFree(ptr ptr ptr) @ stdcall NdrByteCountPointerMarshall(ptr ptr ptr) @ stdcall NdrByteCountPointerUnmarshall(ptr ptr ptr long) -@ stub NdrCStdStubBuffer2_Release +@ stdcall NdrCStdStubBuffer2_Release(ptr ptr) @ stdcall NdrCStdStubBuffer_Release(ptr ptr) @ stdcall NdrClearOutParameters(ptr ptr ptr) @ varargs NdrClientCall2(ptr ptr) @@ -325,7 +325,7 @@ @ stdcall NdrSimpleTypeUnmarshall(ptr ptr long) @ stub NdrStubCall2 @ stub NdrStubCall -@ stub NdrStubForwardingFunction +@ stdcall NdrStubForwardingFunction(ptr ptr ptr ptr) @ stdcall NdrStubGetBuffer(ptr ptr ptr) @ stdcall NdrStubInitialize(ptr ptr ptr ptr) @ stub NdrStubInitializeMarshall diff --git a/include/rpcproxy.h b/include/rpcproxy.h index cd88d1f7816..dc5cbb60d4b 100644 --- a/include/rpcproxy.h +++ b/include/rpcproxy.h @@ -119,6 +119,14 @@ typedef struct tagCStdPSFactoryBuffer long Filler1; } CStdPSFactoryBuffer; +#define STUB_FORWARDING_FUNCTION NdrStubForwardingFunction + +ULONG STDMETHODCALLTYPE CStdStubBuffer2_Release(IRpcStubBuffer *This); +ULONG STDMETHODCALLTYPE NdrCStdStubBuffer2_Release(IRpcStubBuffer *This, IPSFactoryBuffer *pPSF); + +#define CStdStubBuffer_DELEGATING_METHODS 0, 0, CStdStubBuffer2_Release, 0, 0, 0, 0, 0, 0, 0 + + HRESULT WINAPI CStdStubBuffer_QueryInterface( IRpcStubBuffer *This, REFIID riid, void **ppvObject ); ULONG WINAPI @@ -195,6 +203,14 @@ RPCRTAPI HRESULT RPC_ENTRY ULONG WINAPI CStdStubBuffer_Release(IRpcStubBuffer *This) \ { return NdrCStdStubBuffer_Release(This, (IPSFactoryBuffer *)pFactory); } +#ifdef PROXY_DELEGATION +#define CSTDSTUBBUFFER2RELEASE(pFactory) \ +ULONG WINAPI CStdStubBuffer2_Release(IRpcStubBuffer *This) \ + { return NdrCStdStubBuffer2_Release(This, (IPSFactoryBuffer *)pFactory); } +#else +#define CSTDSTUBBUFFER2RELEASE(pFactory) +#endif + #define IID_GENERIC_CHECK_IID(name,pIID,index) memcmp(pIID, name##_ProxyVtblList[index]->header.piid, sizeof(IID)) /*