Marshal.GetIUnknownForObject(Object) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Yönetilen nesneden bir 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
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 arabirimiyle 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. Bu yöntemle bir nesnenin çağrılması, başvuru sayısının işaretçi döndürülmeden önce arabirim işaretçisinde artmalarına neden olur. İşaretçiyle işiniz bittiğinde başvuru sayısını azaltmaya yönelik her zaman kullanın Marshal.Release . Bu yöntem, yönteminin ters işlevselliğini Marshal.GetObjectForIUnknown sağlar.
Bu yöntemi yönetilen bir nesnede kullanarak nesne için COM Çağrılabilen Sarmalayıcı'ya bir arabirim işaretçisi de alabilirsiniz.