IMarshal::ReleaseMarshalData
Destroys a
marshaled data packet.
HRESULT ReleaseMarshalData(
IStream * pStm |
//Pointer to stream used for unmarshaling |
); |
|
Parameter
pStm
[in] Pointer
to a stream that contains the data packet to be destroyed.
Return Values
The method
supports the standard return value E_FAIL, as well as the following:
S_OK
The data
packet was released successfully.
IStream errors
This function
can also return any of the stream-access error values for the IStream
Remarks
If an
object s marshaled data packet does not get unmarshaled in the client process
space, and the packet is no longer needed. The client calls ReleaseMarshalData
on the proxy s IMarshal implementation to instruct the object to destroy
the data packet. The call occurs within the CoReleaseMarshalData
If the marshaled
data packet somehow does not arrive in the client process, or ReleaseMarshalData
is not successfully re-created in the proxy, COM can call this method on the object
itself.
Notes to Callers
You will
rarely if ever have occasion to call this method yourself. A possible exception
would be if you were to implement IMarshal on a class factory for a
class object on which you are also implementing IMarshal. In this case,
if you are marshaling the object to a table, where it can be retrieved by
multiple clients, you might, as part of your unmarshaling routine, call ReleaseMarshalData
to release the data packet for each proxy.
Notes to Implementers
If your
implementation stores state information about marshaled data packets, you can
use this method to release the state information associated with the data
packet represented by pStm. Your implementation should also position the
seek pointer in the stream past the last byte of data.
See Also