Marshal.GetIUnknownForObject(Object) Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Egy felügyelt objektumból származó IUnknown felületet ad vissza.
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éterek
- o
- Object
Az az objektum, amelynek IUnknown a felületét kérik.
Válaszok
nativeint
A IUnknown paraméter mutatója o .
- Attribútumok
Példák
Az alábbi példa bemutatja, hogyan lehet lekérni egy IUnknown felületet egy felügyelt objektumhoz a GetIUnknownForObject metódus használatával.
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
Megjegyzések
A felügyelt kódban ritkán dolgozik közvetlenül a IUnknown felülettel. Azonban akkor hasznos, ha olyan metódust hív meg, GetIUnknownForObject amely egy COM-objektumparamétert tesz elérhetővé típusként IntPtr vagy egyéni marsallással. Ha ezzel a metódussal meghív egy objektumot, a hivatkozásszám a mutató visszaadása előtt növekszik az illesztőmutatón.
Marshal.Release A hivatkozási szám mindig a mutatóval való befejezése után csökken. Ez a metódus a metódus ellentétes funkcióit Marshal.GetObjectForIUnknown biztosítja.
Ezzel a módszerrel felügyelt objektumokon is beszerezhet egy felületmutatót az objektum COM hívható burkolójára .