ICallFrame::Unmarshal method (callobj.h)

Unmarshals a packet of data containing the previously marshaled [out] parameters of a call into this already existing activation record.


HRESULT Unmarshal(
  [in]  PVOID                    pBuffer,
  [in]  ULONG                    cbBuffer,
  [in]  RPCOLEDATAREP            dataRep,
  [out] ULONG                    *pcbUnmarshalled


[in] pBuffer

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

[in] cbBuffer

The size of the buffer, in bytes.

[in] dataRep

The NDR data representation with which the data was marshaled. For more information, see IRpcChannelBuffer::GetBuffer.

[in] pcontext

A pointer to the CALLFRAME_MARSHALCONTEXT structure containing context information about how unmarshalling is carried out.

[out] pcbUnmarshalled

Receives the number of bytes that were successfully unmarshaled. This parameter is returned even in error situations. This parameter is optional.

Return value

This method can return the following values.

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


When unmarshalling, the [in] versions of [in, out] parameters are freed and interface pointers are released and replaced with their [out] versions. All the [in, out] and [out] parameters will always be set to reasonable [in], [in, out] values, [out] values successfully unmarshaled from the returned data, or a value explicitly initialized to NULL. On failure return, the caller will typically want to call ICallFrame::Free in order to clean up the values that are not NULL.


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