Marshal.GetIUnknownForObject(Object) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt een IUnknown-interface van een beheerd object geretourneerd.
public:
static IntPtr GetIUnknownForObject(System::Object ^ o);
[System.Security.SecurityCritical]
public static IntPtr GetIUnknownForObject(object o);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static IntPtr GetIUnknownForObject(object o);
public static IntPtr GetIUnknownForObject(object o);
[<System.Security.SecurityCritical>]
static member GetIUnknownForObject : obj -> nativeint
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member GetIUnknownForObject : obj -> nativeint
static member GetIUnknownForObject : obj -> nativeint
Public Shared Function GetIUnknownForObject (o As Object) As IntPtr
Parameters
- o
- Object
Het object waarvan IUnknown de interface is aangevraagd.
Retouren
nativeint
De IUnknown aanwijzer voor de o parameter.
- Kenmerken
Voorbeelden
In het volgende voorbeeld ziet u hoe u een IUnknown-interface voor een beheerd object ophaalt met behulp van de GetIUnknownForObject methode.
using System;
using System.Runtime.InteropServices;
class Program
{
static void Run()
{
// Create an int object
int obj = 1;
Console.WriteLine("Calling Marshal.GetIUnknownForObject...");
// Get the IUnKnown pointer for the Integer object
IntPtr pointer = Marshal.GetIUnknownForObject(obj);
Console.WriteLine("Calling Marshal.Release...");
// Always call Marshal.Release to decrement the reference count.
Marshal.Release(pointer);
}
static void Main(string[] args)
{
Run();
}
}
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
Opmerkingen
In beheerde code werkt u zelden rechtstreeks met de IUnknown interface.
GetIUnknownForObject Het is echter handig wanneer u een methode aanroept waarmee een COM-objectparameter als een IntPtr type of met aangepaste marshaling wordt weergegeven. Als u een object aanroept met deze methode, wordt het aantal verwijzingen verhoogd op de interfaceaanwijzer voordat de aanwijzer wordt geretourneerd. Gebruik Marshal.Release altijd om het aantal verwijzingen te verlagen zodra u klaar bent met de aanwijzer. Deze methode biedt de tegenovergestelde functionaliteit van de Marshal.GetObjectForIUnknown methode.
U kunt deze methode ook gebruiken voor een beheerd object om een interfaceaanwijzer te verkrijgen naar de COM Callable Wrapper voor het object.