Commit Graph

152 Commits

Author SHA1 Message Date
Alexandre Julliard f3734fd687 rpcrt4: Pass the full argument format to the size/marshall/unmarshall wrappers to greatly simplify the argument processing. 2011-07-28 22:13:49 +02:00
Alexandre Julliard ad7cb0cf6c rpcrt4: Convert old-style arguments for stub calls. 2011-07-28 17:48:19 +02:00
Alexandre Julliard 348f00e116 rpcrt4: Convert old-style arguments for NdrMesProcEncodeDecode. 2011-07-28 17:30:40 +02:00
Alexandre Julliard e8e3a2da83 rpcrt4: Convert old-style argument formats to new style so that the client call implementation can be shared. 2011-07-28 16:54:01 +02:00
Alexandre Julliard cf930f1fc9 rpcrt4: Simplify tracing of function parameters and flags. 2011-07-28 13:01:30 +02:00
Alexandre Julliard 064a81782c rpcrt4: Fetch the arguments address from the StubMsg structure. 2011-07-28 12:48:39 +02:00
Alexandre Julliard 4447f221db rpcrt4: Use a single structure for all parameter types in new format descriptors. 2011-07-28 12:43:27 +02:00
Alexandre Julliard 781ff545cf rpcrt4: Make sure we don't try to free a pointer twice. 2011-06-20 19:32:04 +02:00
Alexandre Julliard a75402af96 rpcrt4: Add a wrapper for NdrAsyncClientCall too. 2011-06-16 14:30:34 +02:00
Alexandre Julliard ffb8f4bedf rpcrt4: Add support for float parameters in client calls on x86_64. 2011-06-16 14:30:28 +02:00
Alexandre Julliard 0ce27385fd rpcrt4: Implement calling server functions on x86_64. 2011-06-14 16:12:04 +02:00
Alexandre Julliard b6599bd7df rpcrt4: Add an assembly wrapper to implement the NdrClientCall2 calling convention on x86_64. 2011-06-14 16:12:04 +02:00
Alexandre Julliard 379479a973 rpcrt4: Add a wrapper for NdrClientCall2 to isolate calling convention differences. 2011-06-14 16:12:04 +02:00
Alexandre Julliard e8567110b3 rpcrt4: Also check base types for null ref pointers. 2011-06-13 11:49:14 +02:00
Alexandre Julliard b0f8586078 rpcrt4: Fix handling of complex types of return values on the client side. 2011-06-13 11:48:49 +02:00
Alexandre Julliard 1c632ffe8e rpcrt4: Fix handling of complex types of return values on the server side. 2011-06-13 11:48:24 +02:00
Alexandre Julliard cdf457774d rpcrt4: Don't try to bind to a null handle. 2011-06-10 11:42:19 +02:00
Alexandre Julliard c8d787dba8 rpcrt4: Add support for the argument size of varying arrays. 2011-06-10 11:41:58 +02:00
Alexandre Julliard 87cf6ec75d rpcrt4: Fix parameter stack size computation in the old-style stubless marshaller. 2011-06-10 11:41:38 +02:00
Alexandre Julliard 5d7e4da81a rpcrt4: Fix handling of arguments passed by value in the old-style stubless marshaller. 2011-06-10 11:35:53 +02:00
Alexandre Julliard 0941644db7 rpcrt4: Don't marshall out-only parameters in the old-style stubless marshaller. 2011-06-10 11:35:24 +02:00
Alexandre Julliard 69bc4da51a rpcrt4: Add entry points for the old-style stubless Ndr calls. 2011-06-02 17:26:59 +02:00
Alexandre Julliard f061917296 include: Make CLIENT_CALL_RETURN definition platform-specific to handle the return type incompatibility in NdrClientCall. 2011-06-02 16:22:43 +02:00
Huw Davies e0a60312d1 rpcrt4: Handle non-conformant bogus structures. 2011-04-27 11:55:01 +02:00
Alexandre Julliard 9de9cbb324 rpcrt4: Retrieve the stack argument pointer in a more portable way in NdrClientCall. 2010-08-26 17:21:09 +02:00
Huw Davies 300536d88e rpcrt4: Add a missing STUBLESS_INITOUT case. 2010-08-02 17:40:34 +02:00
Michael Stefaniuc 943eefc8fc rpcrt4: Avoid using long. 2010-05-17 15:41:33 +02:00
Rob Shearman d412bcc3ae rpcrt4: Handle [out]-only non-conformant strings in stubless servers. 2009-12-14 12:04:05 +01:00
Rob Shearman b24aa1c153 rpcrt4: Add support for context handles in stubless servers. 2009-12-14 12:04:05 +01:00
Rob Shearman 438f2a52a6 rpcrt4: Implement comm_status and fault_status handling for stubless procedures. 2009-11-16 17:16:33 +01:00
Huw Davies da86e727bd rpcrt4: Move the full pointer table init to after a potential call to NdrServerInitializeNew(). 2009-10-26 13:38:10 +01:00
Alexandre Julliard b6efd13ef5 rpcrt4: Add call frame annotations in x86 assembly code. 2009-06-25 12:05:09 +02:00
Rob Shearman 834c5b4275 rpcrt4: Implement stubless asynchronous NDR interpreter.
CodeWeavers did this work for supporting Outlook 2007.
2009-03-25 15:20:44 +01:00
Michael Stefaniuc e3bb1c8243 rpcrt4: Remove superfluous pointer casts. 2009-02-16 16:01:37 +01:00
Rob Shearman bcca81f4f4 rpcrt4: Remove the NDR version check from NdrClientCall2 and NdrStubCall2.
It does more harm than good, since we can't get any information about
what new features are being used by the caller, if any, by bailing at
this early point.
2009-01-23 16:14:00 +01:00
Francois Gouget bbc4413548 rpcrt4: Remove WINAPI on static functions where not needed. 2008-11-26 12:10:54 +01:00
Alexandre Julliard 83b6c8a5fa rpcrt4: Convert source files to utf-8. 2008-10-18 19:20:44 +02:00
Rob Shearman 09f343b135 rpcrt4: Ignore the return value of functions when unmarshalling a pickled procedure. 2008-07-14 11:48:25 +02:00
Rob Shearman 734094ed2c rpcrt4: Implement NdrMesProcEncodeDecode. 2008-07-14 11:48:08 +02:00
Austin English 313a85f163 Spelling fixes. 2008-04-17 12:25:57 +02:00
Rob Shearman 0e7b25349d rpcrt4: Fix the pointer level being passed into call_unmarshaller in client_do_args_old_format for base return parameters.
NdrBaseTypeUnmarshall expects a pointer to a pointer to a base type. 
pRetVal contains a pointer to a base type, so we need to pass the 
address of pRetVal into call_unmarshaller here.
2008-03-10 19:25:55 +01:00
Rob Shearman 259ccc573c rpcrt4: Fix -Oi interpreter for base types.
Don't call memory sizing rountines to compute the size of a type, since
memory sizing routines have side effects like checking there is enough
space in the buffer for the type and incrementing the buffer pointer.
Instead, create a function which returns the necessary size of the
limited set of types we can encounter and remove call_memory_sizer which
is no longer needed.
2008-03-10 19:12:54 +01:00
Rob Shearman 8608e895eb Add a new convenience macro for an exception handler that handles all exceptions.
When using native compiler exceptions, the previous method of doing 
this, __EXCEPT(NULL), would expand to __except( 
(NULL)(GetExceptionInformation())) which doesn't compile as NULL isn't a 
function.

So add a new macro, __EXCEPT_ALL, which works correctly both when using 
native compiler exceptions and without and which makes the meaning of 
code in which it is used clearer.
2008-02-16 14:58:24 +01:00
Rob Shearman 426418f725 rpcrt4: Don't set BufferStart and BufferEnd in NdrStubCall2.
The operations peformed by the stubless code should roughly match what 
operations MIDL outputs in code, and it doesn't do this.
2008-01-22 11:18:56 +01:00
Rob Shearman 6ec9e0c77a rpcrt4: Add an exception handler for stubless object proxies. 2008-01-17 15:30:18 +01:00
Andrew Talbot 3c14ae6699 rpcrt4: Remove unneeded casts. 2008-01-17 13:42:14 +01:00
Rob Shearman ffffcfa239 rpcrt4: Move the setting of retval_ptr outside of any particular stub phase in stub_do_args and stub_do_old_args.
After the change in order of phases it was no longer being set in the 
last phase and so caused all stubless functions to appear to have no 
return value.
2008-01-16 12:15:51 +01:00
Rob Shearman ed5b296289 rpcrt4: The initialisation of [out] variables in the stubless code must be after the unmarshaling of [in] and [in, out] variables has been completed.
This is because the size of an [out] variable could depend on a
conformance value stored in an unmarshalled [in] or [in,out] variable.
2008-01-14 15:31:37 +01:00
Rob Shearman 4f6142b8d9 rpcrt4: Handle complex arrays in calc_arg_size. 2008-01-14 15:31:37 +01:00
Rob Shearman 807a203f77 rpcrt4: Call NdrCorrelationInitialize and NdrCorrelationFree from NdrClientCall2 if new correlation descriptors have been specified. 2008-01-07 22:55:37 +01:00
Rob Shearman f9a54a58d5 rpcrt4: ndr_stubless.h should include ndrtypes.h as it depends on types it defines. 2008-01-07 22:55:32 +01:00
Francois Gouget b6ad7b5ef7 rpcrt4: Add an API documentation stub to make winapi_check happy. 2007-11-13 13:37:24 +01:00
Rob Shearman c4a1a081a9 rpcrt4: Factorise out the argument processing from NdrStubCall2 into two functions. 2007-11-05 13:24:36 +01:00
Rob Shearman 83bc80ada0 rpcrt4: Move some type definitions from ndr_stubless.c to ndr_stubless.h. 2007-11-05 13:24:36 +01:00
Rob Shearman 3eac5b4e59 rpcrt4: Add a small bit of documentation as to what NdrStubCall2 does. 2007-11-05 13:24:36 +01:00
Rob Shearman 903fb72b21 rpcrt4: Add a STUBLESS_FREE phase for freeing the allocated memory in the server function. 2007-06-25 23:21:52 +02:00
Rob Shearman a1dca20dd7 rpcrt4: Add support for ServerAllocSize parameters. 2007-06-25 23:21:52 +02:00
Andrew Talbot d5d056ef75 rpcrt4: Exclude unused headers. 2007-05-18 14:11:22 +02:00
Joel Parker 2319999a05 Remove redundant semicolons for ANSI compatibility. 2007-01-17 11:58:15 +01:00
Francois Gouget bb8e625b5b Assorted spelling fixes. 2006-12-05 10:31:47 +01:00
Andrew Talbot fcb5bc6a1f rpcrt4: Cast-qual warnings fix. 2006-11-13 12:47:00 +01:00
Michael Stefaniuc de21efbadd rpcrt4: Win64 printf format warning fixes. 2006-11-10 11:31:59 +01:00
Michael Stefaniuc 32ec528405 rpcrt4: Bring the function definitions in sync with their declaration.
They got out of sync due to the unsigned long to ULONG changes in the headers.
2006-11-10 11:31:37 +01:00
Andrew Talbot 3f123e51bf rpcrt4: Cast-qual warnings fix. 2006-09-26 11:40:47 +02:00
Robert Shearman 4bbc3ca8dc rpcrt4: Move processing of the arguments from NdrClientCall2 to two new functions. 2006-08-16 16:41:42 +02:00
Robert Shearman f953cc406a rpcrt4: Add some more traces and make the stack offsets easier to read in the stubless interpreter. 2006-08-09 20:41:21 +02:00
Robert Shearman 88bbbed176 rpcrt4: Change call_memory_sizer to preserve the buffer contents and
initialise the memory size field to zero before calling the memory
sizer function.
2006-08-09 20:41:13 +02:00
Robert Shearman d29108c396 rpcrt4: Set retval_ptr and allocate memory for out pointers for the old format stubless intepreter. 2006-08-09 20:41:01 +02:00
Robert Shearman 3db5f872a0 rpcrt4: Support fixed arrays in calc_arg_size. 2006-08-09 20:40:40 +02:00
Robert Shearman e26bcb7fb2 rpcrt4: Complex types should be dereferenced an extra time in the old format stubless code. 2006-08-09 20:40:30 +02:00
Robert Shearman 64828b7520 rpcrt4: Fix the stack offset for the old format stubless code when an object's method is being called. 2006-08-09 20:40:25 +02:00
Huw Davies 93fb9d10f5 rpcrt4: Calculate size of FC_STRUCT arguments correctly. 2006-06-26 12:36:10 +02:00
Huw Davies 26c2953e58 rpcrt4: Fix the argument size of conformant arrays. 2006-06-16 14:42:36 +02:00
Robert Shearman e3df112a39 rpcrt4: Don't raise an exception if there is no freer function - not all types have a freer. 2006-06-09 21:07:37 +02:00
Robert Shearman 1412c47a50 rpcrt4: Fix the retrieval of This for interpreted proxies. 2006-06-08 10:15:36 +02:00
Robert Shearman 7ef5c3c772 rpcrt4: Implement full-pointer support for interpreted stubs.
Move the calls to the full pointer init functions before
NdrClient/ServerInitializeNew, like in MIDL-generated code.
2006-06-08 10:15:22 +02:00
Robert Shearman 4e85273086 rpcrt4: Implement explicit generic binding handles. 2006-05-25 10:40:23 +02:00
Robert Shearman 0030b6dacd rpcrt4: Move the getting of the client binding handle to a separate function. 2006-05-25 10:40:09 +02:00
Robert Shearman fdda17deea rpcrt4: Move the initialising of the stub message structure nearer to the top of NdrClientCall2.
Set stubMsg.StackTop after calling the initialise function.
2006-05-25 10:39:50 +02:00
Robert Shearman 9d87447455 rpcrt4: Store the arguments exclusively in stubMsg.StackTop. 2006-05-25 10:39:22 +02:00
Jonathan Ernst 360a3f9142 Update the address of the Free Software Foundation. 2006-05-23 14:11:13 +02:00
Robert Shearman 6e7d06ad34 rpcrt4: Handle pointers to context handles in the stubless code.
Implement check for NULL context handles if requested.
2006-05-20 17:37:36 +02:00
Robert Shearman 98facf4d0f rpcrt4: Use the documented NDR_PROC_HEADER_EXTS structure.
Use the documented NDR_PROC_HEADER_EXTS structure instead of the
current NDR_PROC_EXTENSIONS structure currently in ndr_stubless.c.
2006-04-20 15:11:34 +02:00
Robert Shearman 28f494e31a rpcrt4: Use INTERPRETER_OPT_FLAGS in ndrtypes.h instead of flags on an unsigned char. 2006-04-20 15:11:24 +02:00
Robert Shearman 312df9bf7f rpcrt4: Store the return value on the stack for interpreted stubs.
Store the return value on the stack for stubs, as MIDL reserves space
for it and gives us a stack offset. This fixes calling methods with
thunks that assume that the return value will be stored on the stack.
2006-04-20 15:10:25 +02:00
Robert Shearman f4de78babe rpcrt4: Correctly fill in StackTop for stubless clients/servers.
Correctly fill in StackTop for stubless clients/servers so that
conformance for top-level parameters works.
2006-04-20 15:10:09 +02:00
Robert Shearman 727e25d673 rpcrt4: There's no need to set stubMsg.StackTop twice. 2006-04-20 15:09:49 +02:00
Robert Shearman a674ec0fda rpcrt4: Fix the MSVC version of call_server_func.
Fix the MSVC version of call_server_func to pop the registers in the
same order they were pushed.
2006-04-20 15:09:39 +02:00
Robert Shearman 4253b01239 rpcrt4: Change the stubless parameter attributes to using a bitfield
(as defined by the PSDK) so the ServerAllocSize part is easier to
calculate.
2006-03-01 19:54:00 +01:00
Robert Shearman 4d25edc298 rpcrt4: Restrict stubless FC types to the range of the type function table. 2006-02-03 18:46:40 +01:00
Robert Shearman 7f15d9bc4f rpcrt4: Handle the RPC_FC_PROC_BYVAL flag correctly in stubless
proxies and stubs.
2006-01-31 12:21:20 +01:00
Alexandre Julliard 49c7bbe0de rpcrt4: Fixed asm syntax for rep; movsl. 2006-01-14 17:07:28 +01:00
Robert Shearman be77b87600 rpcrt4: Implement NdrClientCall2 and NdrServerCall2. 2006-01-05 12:19:05 +01:00
Vincent Béron 4440a7278f Provide minimal API documentation in advapi/eventlog.c to silence some
winapi_check output.
Move around functions in riched20, richedit and rpcrt4 to achieve the
same goal.
2005-05-16 08:51:19 +00:00
Alexandre Julliard e37c6e18d0 Fixed header dependencies to be fully compatible with the Windows
headers (with help from Dimitrie O. Paun).
2003-09-05 23:08:26 +00:00
Gregory M. Turner 7120b6ea4b RPCRT4_NdrClientCall2 is ATM hardly "semi-stub". 2003-07-16 23:30:18 +00:00
Greg Turner 4a37d84a9d - Make explicit some missing include dependencies.
- Implement NdrGetBuffer, NdrFreeBuffer, NdrConformantStringBufferSize
  and NdrConformantStringMarshall.
- Define the RPC_FC_C_CSTRING constant.
- Perhaps I don't want those MIDL_*_FORMAT_STRING structs, after
  all. Removed.
- Add RPC todo list.
- MIDL_STUB_MESSAGE.uFlags aren't.
- Comment out the NdrClientCall2 mock-up since that stuff is in the
  process of being implemented and might cause problems.
2002-10-25 19:03:43 +00:00
Greg Turner 36fa7d50a7 - ClientCall2 still deserves a FIXME.
- Complete bindings with NULL endpoints.
- Implement RpcServerUseProtseqA, RpcServerUseProtseqW.
2002-10-22 00:40:01 +00:00
Greg Turner 1ecb22867f Super-crude implementation for NdrClientCall2.
Specs and headers for NdrClientInitializeNew,
NdrConformantStringMarshall, NdrGetBuffer, NdrFreeBuffer, and
NdrSendReceive.
2002-10-19 19:17:19 +00:00
Greg Turner 034e4df6e7 - (try to) implement RpcMgmtWaitServerListen
- remove duplicate RpcServerListen declaration in rpcdce.h
- some TRACEs
2002-10-18 03:56:56 +00:00