Bagikan melalui


Marshal.GetIUnknownForObject(Object) Metode

Definisi

Mengembalikan antarmuka IUnknown dari objek terkelola.

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

Parameter

o
Object

Objek yang antarmukanya IUnknown diminta.

Mengembalikan

IntPtr

nativeint

Penunjuk IUnknown untuk o parameter .

Atribut

Contoh

Contoh berikut menunjukkan cara mengambil antarmuka IUnknown untuk objek terkelola menggunakan GetIUnknownForObject metode .

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

Keterangan

Dalam kode terkelola, Anda jarang bekerja langsung dengan IUnknown antarmuka. Namun, GetIUnknownForObject berguna saat memanggil metode yang mengekspos parameter objek COM sebagai IntPtr jenis, atau dengan marshaling kustom. Memanggil objek dengan metode ini menyebabkan jumlah referensi bertambah pada penunjuk antarmuka sebelum penunjuk dikembalikan. Selalu gunakan Marshal.Release untuk mengurangi jumlah referensi setelah Anda selesai dengan penunjuk. Metode ini menyediakan fungsionalitas metode yang berlawanan Marshal.GetObjectForIUnknown .

Anda juga dapat menggunakan metode ini pada objek terkelola untuk mendapatkan penunjuk antarmuka ke COM Callable Wrapper untuk objek.

Berlaku untuk

Lihat juga