Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

IMarshal::UnmarshalInterface method

Unmarshals an interface pointer.

Syntax


HRESULT UnmarshalInterface(
  [in]   IStream *pStm,
  [in]   REFIID riid,
  [out]  void **ppv
);

Parameters

pStm [in]

A pointer to the stream from which the interface pointer is to be unmarshaled.

riid [in]

A reference to the identifier of the interface to be unmarshaled.

ppv [out]

The address of pointer variable that receives the interface pointer. Upon successful return, *ppv contains the requested interface pointer of the interface to be unmarshaled.

Return value

This method can return the standard return value E_FAIL, as well as the following values.

Return codeDescription
S_OK

The interface pointer was unmarshaled successfully.

E_NOINTERFACE

The specified interface is not supported.

 

Remarks

The COM library in the process where unmarshaling is to occur calls the proxy's implementation of this method.

Notes to Callers

You do not call this method directly. There are, however, some situations in which you might call it indirectly through a call to CoUnmarshalInterface. For example, if you are implementing a stub, your implementation would call CoUnmarshalInterface when the stub receives an interface pointer as a parameter in a method call.

Notes to Implementers

The proxy's implementation should read the data written to the stream by the original object's implementation of IMarshal::MarshalInterface and use that data to initialize the proxy object whose CLSID was returned by the marshaling stub's call to the original object's implementation of IMarshal::GetUnmarshalClass.

To return the appropriate interface pointer, the proxy implementation can simply call QueryInterface on itself, passing the riid and ppv parameters. However, your implementation of UnmarshalInterface is free to create a different object and, if necessary, return a pointer to it.

Just before exiting, even if exiting with an error, your implementation should reposition the seek pointer in the stream immediately after the last byte of data read.

Requirements

Minimum supported client

Windows 2000 Professional [desktop apps | Windows Store apps]

Minimum supported server

Windows 2000 Server [desktop apps | Windows Store apps]

Header

ObjIdl.h

IDL

ObjIdl.idl

IID

IID_IMarshal is defined as 00000003-0000-0000-C000-000000000046

See also

CoUnmarshalInterface
IMarshal

 

 

Community Additions

Show:
© 2014 Microsoft