CoMarshalInterThreadInterfaceInStream
Marshals an
interface pointer from one thread to another thread in the same process.
HRESULT CoMarshalInterThreadInterfaceInStream(
REFIID riid, |
//Reference to the identifier of the interface |
LPUNKNOWN pUnk, |
//Pointer to the interface to be marshaled |
LPSTREAM * ppStm |
//Indirect pointer |
); |
|
Parameters
riid
[in]
Reference to the identifier of the interface to be marshaled.
pUnk
[in] Pointer
to the interface to be marshaled, which must be derived from IUnknown
ppStm
[out]
Indirect pointer to the stream that contains the marshaled interface.
Return Values
This function
supports the standard return value E_OUTOFMEMORY, as well as the following:
S_OK
The interface
was marshaled successfully.
Remarks
The CoMarshalInterThreadInterfaceInStream
function enables an object to easily and reliably marshal an interface pointer
to another thread in the same process. The stream returned in ppStm is
guaranteed to behave correctly when a client running in the receiving thread
attempts to unmarshal the pointer. The client can then call the CoGetInterfaceAndReleaseStream
to unmarshal the interface pointer and release the stream object.
The CoMarshalInterThreadInterfaceInStream
function performs the following tasks:
1. Creates a stream object.
2. Passes the stream object s IStream
pointer to CoMarshalInterface.
3. Returns the IStream pointer to the
caller.
See Also