Marshal::QueryInterface Method (IntPtr, Guid%, IntPtr%)


Requests a pointer to a specified interface from a COM object.

Namespace:   System.Runtime.InteropServices
Assembly:  mscorlib (in mscorlib.dll)

static int QueryInterface(
	IntPtr pUnk,
	Guid% iid,
	[OutAttribute] IntPtr% ppv


Type: System::IntPtr

The interface to be queried.

Type: System::Guid%

The interface identifier (IID) of the requested interface.

Type: System::IntPtr%

When this method returns, contains a reference to the returned interface.

Return Value

Type: System::Int32

An HRESULT that indicates the success or failure of the call.

The QueryInterface method exposes the IUnknown::QueryInterface method of a COM object, which attempts to obtain a specific interface pointer. Using QueryInterface on a COM object is the same as performing a cast operation in managed code. Calling an object with this method causes the reference count to increment on the interface pointer before the pointer is returned. Always use Marshal::Release to decrement the reference count once you have finished with the pointer. To obtain an IntPtr value that represents a IUnknown interface pointer, you can call Marshal::GetComInterfaceForObject, Marshal::GetIUnknownForObject, or Marshal::GetIDispatchForObject.


requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.

Universal Windows Platform
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Windows Phone Silverlight
Available since 8.0
Windows Phone
Available since 8.1
Return to top