ICallFrame::ReleaseMarshalData method (callobj.h)

Releases resources that are held by interface pointers residing in a packet of marshaled data. This method finds all interface pointers in the packet, and calls the CoReleaseMarshalData function on each one.

Syntax

HRESULT ReleaseMarshalData(
  [in] PVOID                    pBuffer,
  [in] ULONG                    cbBuffer,
  [in] ULONG                    ibFirstRelease,
  [in] RPCOLEDATAREP            dataRep,
  [in] CALLFRAME_MARSHALCONTEXT *pcontext
);

Parameters

[in] pBuffer

A pointer to the buffer containing the marshaled [out] values.

[in] cbBuffer

The size of the buffer, in bytes.

[in] ibFirstRelease

The first byte in the buffer, which is to be released. A value of zero implies that the interface pointers in the whole buffer are to be released. The marshaled interface pointers are assumed to have been released by some other mechanism.

[in] dataRep

The data representation with which the data was marshaled.

[in] pcontext

A pointer to the CALLFRAME_MARSHALCONTEXT structure containing context information about how un-marshalling is carried out.

Return value

This method can return the following values.

Return code Description
S_OK
The method completed successfully.
E_UNEXPECTED
An unexpected error has occurred.

Remarks

The ReleaseMarshalData method must be called exactly once to clean up the resources held in a marshaled buffer. However when the MSHLFLAGS enumeration is set to MSHLFLAGS_NORMAL, this is done automatically during un-marshaling and so need not be carried out explicitly.

This method can function correctly on both marshaled [in] and [out] parameters.

Requirements

Requirement Value
Minimum supported client Windows 2000 Professional [desktop apps only]
Minimum supported server Windows 2000 Server [desktop apps only]
Target Platform Windows
Header callobj.h

See also

ICallFrame