Returns an IUnknown interface from a managed object.
Assemblies: System.Runtime.InteropServices (in System.Runtime.InteropServices.dll)
mscorlib (in mscorlib.dll)
In managed code, you seldom work directly with the IUnknown interface. However, is useful when calling a method that exposes a COM object parameter as an IntPtr type, or with custom marshaling. 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. This method provides the opposite functionality of the Marshal.GetObjectForIUnknown method.
You can also use this method on a managed object to obtain an interface pointer to the COM Callable Wrapper for the object.
The following example demonstrates how to retrieve an IUnknown interface for a managed object using the method.
Imports System.Runtime.InteropServices Module Program Sub Run() ' Dim an Integer object Dim IntegerObject As Integer = 1 ' Dim a pointer Dim pointer As IntPtr Console.WriteLine("Calling Marshal.GetIUnknownForObject...") ' Get the IUnKnown pointer for the Integer object pointer = Marshal.GetIUnknownForObject(IntegerObject) Console.WriteLine("Calling Marshal.Release...") ' Always call Marshal.Release to decrement the reference count. Marshal.Release(pointer) End Sub Sub Main(ByVal args() As String) Run() End Sub End Module
requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.