Partager via


Marshal.GetIUnknownForObject(Object) Méthode

Définition

Retourne une interface IUnknown à partir d’un objet managé.

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

Paramètres

o
Object

Objet dont l'interface IUnknown est demandée.

Retours

IntPtr

nativeint

Pointeur IUnknown pour le paramètre o.

Attributs

Exemples

L’exemple suivant montre comment récupérer une interface IUnknown pour un objet managé à l’aide de la GetIUnknownForObject méthode .

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

Remarques

Dans le code managé, vous travaillez rarement directement avec l’interface IUnknown . Toutefois, GetIUnknownForObject est utile lors de l’appel d’une méthode qui expose un paramètre d’objet COM en tant que IntPtr type ou avec un marshaling personnalisé. L’appel d’un objet avec cette méthode entraîne l’incrémentation du nombre de références sur le pointeur d’interface avant que le pointeur ne soit retourné. Marshal.Release Utilisez toujours pour décrémenter le nombre de références une fois que vous avez terminé avec le pointeur. Cette méthode fournit les fonctionnalités opposées de la Marshal.GetObjectForIUnknown méthode.

Vous pouvez également utiliser cette méthode sur un objet managé pour obtenir un pointeur d’interface vers le wrapper COM Callable pour l’objet.

S’applique à

Voir aussi