Super-crude implementation for NdrClientCall2.

Specs and headers for NdrClientInitializeNew,
NdrConformantStringMarshall, NdrGetBuffer, NdrFreeBuffer, and
NdrSendReceive.
This commit is contained in:
Greg Turner 2002-10-19 19:17:19 +00:00 committed by Alexandre Julliard
parent fc4e2fe74f
commit 1ecb22867f
3 changed files with 49 additions and 19 deletions

View File

@ -18,7 +18,9 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* *
* TODO: * TODO:
* - actually implement RPCRT4_NdrClientCall2 * - Exception handling
* - Context stuff
* - Who knows
*/ */
#include <stdio.h> #include <stdio.h>
@ -38,25 +40,40 @@
WINE_DEFAULT_DEBUG_CHANNEL(ole); WINE_DEFAULT_DEBUG_CHANNEL(ole);
LONG_PTR /* CLIENT_CALL_RETURN */ RPCRT4_NdrClientCall2(PMIDL_STUB_DESC pStubDesc, PFORMAT_STRING pFormat, va_list args) LONG_PTR /* CLIENT_CALL_RETURN */ RPCRT4_NdrClientCall2(PMIDL_STUB_DESC pStubDesc, PFORMAT_STRING pFormat, va_list args)
{ {
RPC_CLIENT_INTERFACE *rpc_cli_if = (RPC_CLIENT_INTERFACE *)(pStubDesc->RpcInterfaceInformation); RPC_CLIENT_INTERFACE *rpc_cli_if = (RPC_CLIENT_INTERFACE *)(pStubDesc->RpcInterfaceInformation);
LONG_PTR ret = 0;
RPC_BINDING_HANDLE handle = 0;
RPC_MESSAGE rpcmsg;
MIDL_STUB_MESSAGE stubmsg;
FIXME("(pStubDec == ^%p,pFormat = \"%s\",...): stub\n", pStubDesc, pFormat); TRACE("(pStubDec == ^%p,pFormat = ^%p,...): semi-stub\n", pStubDesc, pFormat);
TRACE("rpc_cli_if == ^%p\n", rpc_cli_if); if (rpc_cli_if) /* NULL for objects */ {
if (rpc_cli_if) /* for objects this is NULL */ TRACE(" *rpc_cli_if (== ^%p) == (RPC_CLIENT_INTERFACE):\n", pStubDesc);
TRACE("rpc_cli_if: Length == %d; InterfaceID == <%s,<%d.%d>>; TransferSyntax == <%s,<%d.%d>>; DispatchTable == ^%p; RpcProtseqEndpointCount == %d; RpcProtseqEndpoint == ^%p; Flags == %d\n", TRACE(" Length == %d\n", rpc_cli_if->Length);
rpc_cli_if->Length, TRACE(" InterfaceID == %s (%d.%d)\n", debugstr_guid(&rpc_cli_if->InterfaceId.SyntaxGUID),
debugstr_guid(&rpc_cli_if->InterfaceId.SyntaxGUID), rpc_cli_if->InterfaceId.SyntaxVersion.MajorVersion, rpc_cli_if->InterfaceId.SyntaxVersion.MinorVersion, rpc_cli_if->InterfaceId.SyntaxVersion.MajorVersion, rpc_cli_if->InterfaceId.SyntaxVersion.MinorVersion);
debugstr_guid(&rpc_cli_if->TransferSyntax.SyntaxGUID), rpc_cli_if->TransferSyntax.SyntaxVersion.MajorVersion, rpc_cli_if->TransferSyntax.SyntaxVersion.MinorVersion, TRACE(" TransferSyntax == %s (%d.%d)\n", debugstr_guid(&rpc_cli_if->TransferSyntax.SyntaxGUID),
rpc_cli_if->DispatchTable, rpc_cli_if->TransferSyntax.SyntaxVersion.MajorVersion, rpc_cli_if->TransferSyntax.SyntaxVersion.MinorVersion);
rpc_cli_if->RpcProtseqEndpointCount, TRACE(" DispatchTable == ^%p\n", rpc_cli_if->DispatchTable);
rpc_cli_if->RpcProtseqEndpoint, TRACE(" RpcProtseqEndpointCount == ^%d\n", rpc_cli_if->RpcProtseqEndpointCount);
rpc_cli_if->Flags); TRACE(" RpcProtseqEndpoint == ^%p\n", rpc_cli_if->RpcProtseqEndpoint);
TRACE(" Flags == ^%d\n", rpc_cli_if->Flags);
}
return 0; NdrClientInitializeNew( &rpcmsg, &stubmsg, pStubDesc, 0 );
handle = (RPC_BINDING_HANDLE)0xdeadbeef; /* FIXME: dce uses interop_binding_handle; */
stubmsg.BufferLength = 0; /* FIXME */
NdrGetBuffer( &stubmsg, stubmsg.BufferLength, handle );
NdrSendReceive( &stubmsg, stubmsg.Buffer );
NdrFreeBuffer( &stubmsg );
return ret;
} }
/*********************************************************************** /***********************************************************************

View File

@ -206,7 +206,7 @@ init RPCRT4_LibMain
@ stub NdrClientCall @ stub NdrClientCall
@ varargs NdrClientCall2(ptr ptr) NdrClientCall2 @ varargs NdrClientCall2(ptr ptr) NdrClientCall2
@ stub NdrClientInitialize @ stub NdrClientInitialize
@ stub NdrClientInitializeNew @ stdcall NdrClientInitializeNew(ptr ptr ptr long) NdrClientInitializeNew
@ stub NdrContextHandleInitialize @ stub NdrContextHandleInitialize
@ stub NdrContextHandleSize @ stub NdrContextHandleSize
@ stub NdrConvert @ stub NdrConvert
@ -216,14 +216,14 @@ init RPCRT4_LibMain
@ stub NdrCorrelationPass @ stub NdrCorrelationPass
@ stub NdrDcomAsyncClientCall @ stub NdrDcomAsyncClientCall
@ stub NdrDcomAsyncStubCall @ stub NdrDcomAsyncStubCall
@ stub NdrFreeBuffer @ stdcall NdrFreeBuffer(ptr) NdrFreeBuffer
@ stub NdrFullPointerFree @ stub NdrFullPointerFree
@ stub NdrFullPointerInsertRefId @ stub NdrFullPointerInsertRefId
@ stub NdrFullPointerQueryPointer @ stub NdrFullPointerQueryPointer
@ stub NdrFullPointerQueryRefId @ stub NdrFullPointerQueryRefId
@ stub NdrFullPointerXlatFree @ stub NdrFullPointerXlatFree
@ stub NdrFullPointerXlatInit @ stub NdrFullPointerXlatInit
@ stub NdrGetBuffer @ stdcall NdrGetBuffer(ptr long ptr) NdrGetBuffer
@ stub NdrGetDcomProtocolVersion @ stub NdrGetDcomProtocolVersion
@ stub NdrGetPartialBuffer @ stub NdrGetPartialBuffer
@ stub NdrGetPipeBuffer @ stub NdrGetPipeBuffer
@ -265,7 +265,7 @@ init RPCRT4_LibMain
@ stub NdrRpcSsDefaultFree @ stub NdrRpcSsDefaultFree
@ stub NdrRpcSsDisableAllocate @ stub NdrRpcSsDisableAllocate
@ stub NdrRpcSsEnableAllocate @ stub NdrRpcSsEnableAllocate
@ stub NdrSendReceive @ stdcall NdrSendReceive(ptr ptr) NdrSendReceive
@ stub NdrServerCall @ stub NdrServerCall
@ stub NdrServerCall2 @ stub NdrServerCall2
@ stub NdrStubCall @ stub NdrStubCall
@ -298,7 +298,7 @@ init RPCRT4_LibMain
@ stub NdrConformantArrayMemorySize @ stub NdrConformantArrayMemorySize
@ stub NdrConformantArrayUnmarshall @ stub NdrConformantArrayUnmarshall
@ stub NdrConformantStringBufferSize @ stub NdrConformantStringBufferSize
@ stub NdrConformantStringMarshall @ stdcall NdrConformantStringMarshall(ptr ptr ptr) NdrConformantStringMarshall
@ stub NdrConformantStringMemorySize @ stub NdrConformantStringMemorySize
@ stub NdrConformantStringUnmarshall @ stub NdrConformantStringUnmarshall
@ stub NdrConformantStructBufferSize @ stub NdrConformantStructBufferSize

View File

@ -296,4 +296,17 @@ RPCRTAPI void* RPC_ENTRY
RPCRTAPI void RPC_ENTRY RPCRTAPI void RPC_ENTRY
NdrOleFree( void* NodeToFree ); NdrOleFree( void* NodeToFree );
RPCRTAPI void RPC_ENTRY
NdrClientInitializeNew( PRPC_MESSAGE pRpcMessage, PMIDL_STUB_MESSAGE pStubMsg,
PMIDL_STUB_DESC pStubDesc, int unknown );
RPCRTAPI void RPC_ENTRY
NdrConformantStringMarshall( MIDL_STUB_MESSAGE *pStubMsg, unsigned char *pszMessage,
PFORMAT_STRING pFormat);
RPCRTAPI void RPC_ENTRY
NdrGetBuffer( MIDL_STUB_MESSAGE *stubmsg, unsigned long buflen, RPC_BINDING_HANDLE handle );
RPCRTAPI void RPC_ENTRY
NdrFreeBuffer( MIDL_STUB_MESSAGE *pStubMsg );
RPCRTAPI void RPC_ENTRY
NdrSendReceive( MIDL_STUB_MESSAGE *stubmsg, unsigned char *buffer );
#endif /*__WINE_RPCNDR_H */ #endif /*__WINE_RPCNDR_H */