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(
  _In_  LPSTREAM pStm,
  _In_  REFIID   iid,
  _Out_ LPVOID   *ppv
);

Parameters

pStm [in]

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

iid [in]

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

ppv [out]

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

Minimum supported client

Windows 2000 Professional [desktop apps | Windows Store apps]

Minimum supported server

Windows 2000 Server [desktop apps | Windows Store apps]

Minimum supported phone

Windows Phone 8

Header

Objbase.h

Library

Ole32.lib

DLL

Ole32.dll

See also

CoMarshalInterThreadInterfaceInStream
CoUnmarshalInterface

 

 

Show: