Marshal.GetIUnknownForObject(Object) Yöntem

Tanım

Yönetilen bir nesneden IUnknown arabirimi döndürür.

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

Parametreler

o
Object

Arabirimi istenen nesne IUnknown .

Döndürülenler

IntPtr

nativeint

IUnknown Parametresinin işaretçisio.

Öznitelikler

Örnekler

Aşağıdaki örnek, yöntemini kullanarak yönetilen bir nesne için IUnknown arabiriminin nasıl alınduğunu GetIUnknownForObject gösterir.

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

Açıklamalar

Yönetilen kodda, nadiren doğrudan arabirimle IUnknown çalışırsınız. Ancak, GetIUnknownForObject bir COM nesne parametresini tür olarak veya özel hazırlama ile kullanıma sunan bir IntPtr yöntemi çağırırken yararlıdır. Bir nesneyi bu yöntemle çağırmak, işaretçi döndürülmeden önce arabirim işaretçisinde başvuru sayısının artmalarına neden olur. İşaretçiyle işiniz bittiğinde her zaman başvuru sayısını azaltmaya yönelik kullanın Marshal.Release . Bu yöntem, yönteminin karşıt işlevselliğini Marshal.GetObjectForIUnknown sağlar.

Bu yöntemi yönetilen bir nesne üzerinde kullanarak nesne için COM Çağrılabilen Sarmalayıcı'ya yönelik bir arabirim işaretçisi de elde edebilirsiniz.

Şunlara uygulanır

Ayrıca bkz.