Marshal.GetIUnknownForObject(Object) Metódus

Definíció

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

IntPtr

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 .

A következőre érvényes:

Lásd még