Condividi tramite


Marshal.GetIUnknownForObject(Object) Metodo

Definizione

Restituisce un'interfaccia IUnknown da un oggetto gestito.

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

Parametri

o
Object

Oggetto di cui è richiesta l'interfaccia IUnknown.

Restituisce

IntPtr

nativeint

Puntatore IUnknown per il parametro o.

Attributi

Esempio

Nell'esempio seguente viene illustrato come recuperare un'interfaccia IUnknown per un oggetto gestito usando il GetIUnknownForObject metodo .

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

Commenti

Nel codice gestito, raramente si lavora direttamente con l'interfaccia IUnknown . Tuttavia, GetIUnknownForObject è utile quando si chiama un metodo che espone un parametro dell'oggetto COM come IntPtr tipo o con il marshalling personalizzato. La chiamata di un oggetto con questo metodo causa l'incremento del conteggio dei riferimenti sul puntatore dell'interfaccia prima che venga restituito il puntatore. Usare Marshal.Release sempre per decrerere il conteggio dei riferimenti dopo aver completato il puntatore. Questo metodo fornisce la funzionalità opposta del Marshal.GetObjectForIUnknown metodo.

È anche possibile usare questo metodo in un oggetto gestito per ottenere un puntatore dell'interfaccia al wrapper chiamabile COM per l'oggetto .

Si applica a

Vedi anche