Robert Shearman
62bbaf70b3
rpcrt4: Fix the wire protocol of the user marshal functions to match MS/RPC.
2006-05-18 10:34:09 +02:00
Robert Shearman
4fae04b2f5
rpcrt4: Fix NdrConformantArrayMemorySize.
2006-05-18 10:33:39 +02:00
Robert Shearman
c4fbad1d11
rpcrt4: Implement NdrUserMarshalMemorySize.
2006-05-18 10:33:00 +02:00
Huw Davies
effac656bb
rpcrt4: Don't update StubMsg->MemorySize while unmarshaling.
...
Add a bunch of marshaling tests (based on a program by Rob Shearman).
2006-05-17 21:46:43 +02:00
Robert Shearman
45ee17899a
rpcrt4: Make some functions that aren't used outside of the file static.
2006-05-17 21:01:02 +02:00
Robert Shearman
b52ae402ad
rpcrt4: Fill out more of the function tables with functions that already exist.
2006-05-17 21:00:42 +02:00
Robert Shearman
ecd3780cc0
rpcrt4: Raise an exception if there is no default handler for a union.
2006-05-17 21:00:35 +02:00
Robert Shearman
0f7e4a877a
rpcrt4: Implement fixed array functions.
2006-05-16 12:51:30 +02:00
Robert Shearman
c27db4cde6
rpcrt4: Remove the BUFFER_PARANOIA overestimates for string memory sizes.
2006-05-16 12:51:19 +02:00
Robert Shearman
4c0b0e0069
rpcrt4: Implement computing of conformance from a correlation descriptor for conformant strings.
2006-05-16 12:51:09 +02:00
Robert Shearman
124acc9b67
rpcrt4: Fix conformant varying structs to comply to the DCE/RPC spec.
2006-05-16 12:50:54 +02:00
Robert Shearman
e6120f2029
rpcrt4: Don't duplicate the conformance calculating code, just use the
...
common ComputeConformance function to store the result in
pStubMsg->MaxCount (as this is what callback function store the
conformance value into anyway).
2006-05-16 12:50:42 +02:00
Robert Shearman
ecdd09b1b2
rpcrt4: Implement conformant varying struct functions.
2006-05-16 12:50:27 +02:00
Robert Shearman
63aaf8dbd7
rpcrt4: Implement more conformance operations and more types.
2006-05-16 12:50:19 +02:00
Robert Shearman
b96d630022
rpcrt4: Implement NdrSimpleStructMemorySize.
2006-05-15 16:08:45 +02:00
Robert Shearman
2aff761dfd
rpcrt4: Fix the conformant struct functions to not call conformant array functions.
...
The conformance has to be the first thing in the buffer, in accordance
with the DCE/RPC spec and to be compatible with the pointer layout
format strings that MIDL generates.
2006-05-15 16:08:36 +02:00
Robert Shearman
4af0a6b805
rpcrt4: In NdrConformantBufferSize, SizeConformance should be called, not SizeVariance.
2006-05-15 16:08:28 +02:00
Robert Shearman
2479aec4af
rpcrt4: Save pStubMsg->ActualCount in a local variable in the complex
...
array functions, before calling a function that could change it and
cause the wrong number of loop iterations.
2006-05-15 16:08:19 +02:00
Robert Shearman
345c92643e
rpcrt4: Dereference the memory for pointers in NdrNonEncapsulatedUnionUnmarshall.
...
Pointers in a non-encapsulated union behave like embedded pointers, so
don't rely on the NdrPointer* functions doing the right thing in this
case and call the Pointer* functions directly.
2006-05-15 16:08:04 +02:00
Robert Shearman
f0aea2d5ee
rpcrt4: Rename ComplexStructSize to ComplexStructMemorySize to reflect the fact that it increments the buffer.
...
Replace the code in EmbeddedComplexSize that sizes non-encapsulated
unions without using a memory sizer routine, since this function
shouldn't touch the buffer.
Add a new function EmbeddedComplexMemorySize and use it in some memory
sizer routines where EmbeddedComplexSize was previously used.
2006-05-15 16:07:54 +02:00
Robert Shearman
788ce20dea
rpcrt4: Fix embedded pointers in arrays by taking into account the iteration when calculating the appropriate memory and buffer pointers.
2006-05-15 16:07:42 +02:00
Robert Shearman
07d032b24b
rpcrt4: The arm type mask should be comparing the highest byte against 0x80, as documented on MSDN.
...
Fix base type arm handling on little-endian machines, as the current
code would always pass in the address to the format char of 0x80
instead of the base type format char.
2006-05-15 14:07:59 +02:00
Robert Shearman
5cdfeeeed3
rpcrt4: Make ComplexStructSize increment the buffer.
2006-05-15 14:07:36 +02:00
Robert Shearman
3e988bfc4f
rpcrt4: Pass in the buffer value before incrementing to PointerMarshall in NdrPointerMarshall.
2006-05-15 14:07:25 +02:00
Robert Shearman
22bf15049c
rpcrt4: Implement NdrComplexStructMemorySize.
2006-05-15 14:07:13 +02:00
Robert Shearman
cedbddbfde
rpcrt4: Implement NdrComplexArrayMemorySize.
2006-05-15 14:06:55 +02:00
Robert Shearman
628c5e9baf
rpcrt4: The NDR memory sizing functions should increment the buffer pointer, so make sure to save it before calling one of these and restore it afterwards.
2006-05-15 14:06:41 +02:00
Robert Shearman
dcd0a39d4c
rpcrt4: Make NdrBaseTypeMemorySize increment the buffer and memory size fields of MIDL_STUB_MESSAGE.
2006-05-15 14:06:31 +02:00
Robert Shearman
4d65110b90
rpcrt4: Make NdrConformantStringUnmarshall use the new Read{Variance,Conformance}
...
functions and adapt them to be callable without having a correlation
descriptor.
2006-05-15 14:06:05 +02:00
Robert Shearman
ababfdef82
rpcrt4: Use the buffer passed in as an argument and don't increment
...
the buffer in the MIDL_STUB_MESSAGE in the inner pointer
marshalling/unmarshalling routines as these can be used for embedded
pointers, which handle the allocating or finding of the buffer
themselves. Do the incrementing in the outer
NdrPointerMarshall/Unmarshall/BufferSize routines instead.
2006-05-10 19:26:10 +02:00
Robert Shearman
c3a087eb45
rpcrt4: Align conformances and variances correctly, according the the DCE/RPC spec.
2006-05-10 19:25:45 +02:00
Robert Shearman
265045d251
rpcrt4: Move the writing and sizing of variances and conformances to common functions.
2006-05-10 19:25:37 +02:00
Robert Shearman
4b4192f3a5
rpcrt4: Correctly align the buffer to read/write array data to.
2006-05-10 19:25:26 +02:00
Robert Shearman
95d79e2c58
rpcrt4: Correctly align the buffer before reading/writing structure data.
2006-05-10 19:25:16 +02:00
Robert Shearman
5616c4150c
rpcrt4: Rename NonEncapsulatedUnionSize to NdrNonEncapsulatedUnionMemorySize.
2006-05-10 19:25:06 +02:00
Robert Shearman
75fe824e89
rpcrt4: Remove unintuitive requirement to pass the required alignment boundary minus one into the alignment macros.
2006-05-10 19:24:50 +02:00
Robert Shearman
772eb9bdf9
rpcrt4: Implement NdrConformantVaryingArrayFree.
2006-05-07 10:03:01 +02:00
Robert Shearman
b43e799486
rpcrt4: Dereference the pointer if necessary only after doing the
...
pointer checks and writing the pointer ID to the wire.
2006-05-07 10:02:05 +02:00
Robert Shearman
9519004b1a
rpcrt4: Improve the traces in the pointer functions.
2006-05-07 10:01:37 +02:00
Huw Davies
b1d5158980
rpcrt4: Support for non-encapsulated unions.
2006-05-05 16:55:49 +02:00
Robert Shearman
0ced865aa1
rpcrt4: Don't apply the offset to the pointer passed to callback conformance functions.
2006-04-20 15:12:20 +02:00
Robert Shearman
8d36337644
rpcrt4: Free all pointers by default, except for conformant strings.
...
Free all pointers by default, except for conformant strings.
Conformant arrays should always be freed.
Add FC_CVARRAY to list of known types to avoid a FIXME.
2006-04-20 15:12:07 +02:00
Dmitry Timoshkov
590f6faee1
rpcrt4: Constify NDR function tables.
2006-04-14 19:36:09 +02:00
Robert Shearman
e8877ede80
rpcrt4: Implement marshaling and unmarshaling for enum types.
2006-03-01 19:53:35 +01:00
Robert Shearman
5b629e9509
rpc: Skip over the right number of bytes in new correlation descriptors.
...
Skip over 6 bytes of the format descriptor if new correlation
descriptors are being used, instead of 4.
2006-01-20 16:15:11 +01:00
Robert Shearman
68b9225022
rpcrt4: Clear the newly allocated memory used for complex arrays and structs.
2006-01-18 11:29:50 +01:00
Robert Shearman
1926b6da63
rpcrt4: Improve ReadVariance.
...
Extend ReadVariance to read the offset as well as the actual count,
since these always come in pairs.
Handle the variance not being present in ReadVariance and always call
it from the unmarshalling functions to simplify the code there and
also to fix a bug where the format pointer wasn't advanced properly
for complex arrays (introduced in the previous patch when implementing
variance).
2006-01-09 17:21:01 +01:00
Robert Shearman
2e875d5d35
rpcrt4: Validate complex array format string.
...
Verify that the format string being passed into the complex array
functions is a complex array one.
2006-01-09 17:20:19 +01:00
Robert Shearman
c96e102fff
rpcrt4: Compute variance for complex arrays
2006-01-06 21:07:27 +01:00
Robert Shearman
03060551d6
rpcrt4: Implement callback conformance.
2006-01-03 12:07:17 +01:00
Robert Shearman
552f18211d
Fix the overflow check to not depend on pStubMsg->BufferStart and
...
pStubMsg->BufferEnd being valid, because they aren't filled in when
using MIDL-generated server stubs.
Don't set the pointer to NULL on unmarshaling because we may want to
unmarshal the value to an existing pointer instead of allocating a new
one.
2005-11-29 10:41:17 +01:00
Robert Shearman
d9896dec47
Implement conformant varying array functions.
2005-11-28 11:30:32 +01:00
Robert Shearman
bc16c66736
Implement conformant struct functions.
2005-11-28 11:30:12 +01:00
Robert Shearman
d42ff35087
Implement FC_STRUCTPAD2 for complex types.
2005-11-28 11:28:45 +01:00
Robert Shearman
5ed6dc2c1b
Add functions for marshaling base types (ints, floats, etc.).
2005-11-28 11:24:21 +01:00
Robert Shearman
fc17683f7d
Extend conformance computation function to also compute variances.
...
MSDN suggests that conformance and variance are pretty much the same,
but there may be some subtleties to it.
2005-11-28 11:16:44 +01:00
Robert Shearman
b73a4a9528
Fix NdrConformantArrayBufferSize to include the size of the
...
conformance value.
Make NdrConformantArrayMemorySize do something more useful, like
actually return the required memory.
Conformance offset can be negative and should only be two bytes.
2005-11-28 10:58:40 +01:00
Robert Shearman
a1758ed6e0
We should always allocate in NdrConformantStringUnmarshal if the
...
memory pointer is NULL.
2005-11-28 10:39:10 +01:00
Huw Davies
c7462e431f
Marshal enums.
2005-10-31 21:05:00 +00:00
Ge van Geldorp
94dc00c558
Fix NdrServerContextMarshall prototype.
2005-09-08 11:02:38 +00:00
Robert Shearman
0aef679535
- Implement most of the details around unmarshalling of an object
...
pointer.
- Fix allocation scheme in NdrConformantArrayUnmarshal to allocate if
*ppMemory is NULL, like complex struct and user type unmarshalling.
2005-09-02 11:19:26 +00:00
Mike McCormack
4a5378efcd
Fix some gcc 4.0 warnings.
2005-08-30 08:56:35 +00:00
Robert Shearman
037bbdaf24
Add stubs for NdrMapCommAndFaultStatus, conformant string marshaling
...
and context handle functions.
2005-08-03 14:55:57 +00:00
Robert Shearman
8c02f6367e
Add stubs for most of the NDR marshaling functions.
2005-07-18 13:14:05 +00:00
Robert Shearman
acbb3f2f8d
- Improve tracing.
...
- Implement FC_UP and partially FC_OP.
- Don't needlessly marshal 4 bytes in NdrPointer*.
2005-06-01 11:04:03 +00:00
Alexandre Julliard
d0ee9f9309
Avoid spaces before preprocessor directives, that's not portable.
2005-03-02 12:23:20 +00:00
Eric Pouech
0a258964c2
Const correctness fixes.
2004-11-30 21:38:57 +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
Ove Kaaven
a3f6bb8294
Implemented "dereference" pointer flag.
...
Added NdrClearOutParameters stub.
2003-05-20 02:17:49 +00:00
Alexandre Julliard
056e4197f9
Added a few stubs needed by the generated oaidl_p.c.
2003-04-26 02:12:14 +00:00
Ove Kaaven
cf2dea09af
NDR marshalling fixes.
2003-02-17 01:48:24 +00:00
Marcus Meissner
e1c7202716
Fixed undefined operation compiler warning.
2003-02-11 22:20:24 +00:00
Ove Kaaven
0e85f48f9d
Implemented marshalling of pointers, simple and complex structures,
...
conformant and complex arrays, and user-marshalled types.
Improved marshalling of conformant strings and interface pointers a
bit.
2003-02-01 00:44:51 +00:00
Ove Kaaven
1f5315c80f
Make sure that no files except unknwn.h include wine/obj_base.h
...
directly.
2002-12-05 20:33:07 +00:00
Greg Turner
d4730de333
Fix stupid clone of broken macro, found by Marcus.
2002-11-01 01:47:04 +00:00
Greg Turner
f71a83a1e9
- Use appropriate per-platform NDR_LOCAL Data Representation.
...
- Minor housekeeping changes.
2002-10-31 23:35:46 +00:00
Greg Turner
3eafbfcd56
- Fix offset bug in the conformant string unmarshall routine.
...
- Fix discrepancy between headers and implementation of
I_RpcBindingSetAsync when compiling under WINNT.
- Eliminate race conditions in the relationship between "listen_count"
and "std_listen" in rpc_server.h.
- Code-stubs for RpcServerUnregisterIf, RpcServerUnregisterIfEx.
- Attempt to implement RpcMgmtStopServerListening (definitely not
happy just yet).
- RpcServerUnregisterIfEx wasn't xp-sepcific after all; this leads me to
suspect there are more such mistakes in the spec-file comments, but I
haven't looked into it or fixed them yet (coming soon).
- Cleanups, trace-enhancements, etc.
2002-10-31 22:45:12 +00:00
Greg Turner
dc3e6c571b
Rename the *_32_READ macros to *_UINT32_READ for clarity.
2002-10-31 22:04:08 +00:00
Marcus Meissner
f99c03b972
Fixed LITTLE_ENDIAN_32_READ macro to at least compile.
2002-10-30 20:26:51 +00:00
Greg Turner
70bb478134
- more comments and comment-cleanup
...
- attempt to implement NdrConformantStringMemorySize
- fix NdrConformantStringUnMarshall
- w00t!
2002-10-29 23:07:33 +00:00
Greg Turner
7ac58a4dc9
- Pull the buffer from the rpc message into the midl stub message
...
during RpcServerInitializeNew.
- Attempt to implement NdrConformantStringUnmarshall.
- More assertions.
- Comments and cleanups.
2002-10-28 23:53:23 +00:00
Greg Turner
a215f6b21a
- Clean up and add some comments.
...
- Add NDR Data representation constants.
- Propagate DataRepresentation into and out of packet headers.
- Implement NdrServerInitializeNew
2002-10-28 21:14:16 +00:00
Greg Turner
6abd817d8e
- Distinguish between actual paranoia and meaningful buffer space.
...
- No need to #undef BUFFER_PARANOIA here.
2002-10-28 20:40:59 +00:00
Greg Turner
fc55077e52
- Clean up and enhance some traces.
...
- Stubs for NdrConvert, NdrConvert2, and NdrServerInitializeNew.
2002-10-28 20:07:01 +00:00
Greg Turner
c36d63f436
Fix endianness dependency in the (there is only one :) ) marshall
...
function.
2002-10-28 18:47:41 +00:00
Greg Turner
461708c142
- Use memset instead of ZeroMemory, just to be consistent with Ove's
...
code.
- Add some assertions where assumptions are made (need way more).
- Plug the binding handle into the RPC_MESSAGE during NdrGetBuffer.
- Implement NdrSendReceive.
- Attempt to support client and server bindings in I_RpcSend[Receive].
2002-10-25 21:02:02 +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
0e2bec0e70
- Use Ove-style macros for NdrConformantStringMarshall definition.
...
- Move NdrConformantStringMarshall to new ndr_marshall.c.
- Stubs for NdrConformantStringBufferSize,
NdrConformantStringMemorySize, and NdrConformantStringUnmarshall.
2002-10-22 00:41:17 +00:00