CoGetInterfaceAndReleaseStream function

Unmarshals a buffer containing an interface pointer and releases the stream when an interface pointer has been marshaled from another thread to the calling thread.

Syntax

HRESULT CoGetInterfaceAndReleaseStream(
  LPSTREAM pStm,
  REFIID   iid,
  LPVOID   *ppv
);

Parameters

pStm

A pointer to the IStream interface on the stream to be unmarshaled.

iid

A reference to the identifier of the interface requested from the unmarshaled object.

ppv

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

Return Value

This function can return the standard return values S_OK and E_INVALIDARG, as well as any of the values returned by CoUnmarshalInterface.

Remarks

Important  

Security Note: Calling this method with untrusted data is a security risk. Call this method only with trusted data. For more information, see Untrusted Data Security Risks.

 
The CoGetInterfaceAndReleaseStream function performs the following tasks:
  • Calls CoUnmarshalInterface to unmarshal an interface pointer previously passed in a call to CoMarshalInterThreadInterfaceInStream.
  • Releases the stream pointer. Even if the unmarshaling fails, the stream is still released because there is no effective way to recover from a failure of this kind.

Requirements

   
Windows version Windows 2000 Professional [desktop apps UWP apps] Windows 2000 Server [desktop apps UWP apps]
Target Platform Windows
Header combaseapi.h (include Objbase.h)
Library Ole32.lib
DLL Ole32.dll

See Also

CoMarshalInterThreadInterfaceInStream

CoUnmarshalInterface