Marshal.GetIUnknownForObject(Object) 메서드

정의

관리되는 개체에서 IUnknown 인터페이스를 반환합니다.

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

매개 변수

o
Object

IUnknown 인터페이스가 요청되는 개체입니다.

반환

IntPtr

nativeint

o 매개 변수에 대한 IUnknown 포인터입니다.

특성

예제

다음 예제에서는 메서드를 사용하여 관리되는 개체에 대한 IUnknown 인터페이스를 검색하는 GetIUnknownForObject 방법을 보여 줍니다.

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

설명

관리 코드에서는 인터페이스를 직접 사용하는 일이 거의 없는 경우 IUnknown 입니다. 그러나 GetIUnknownForObject COM 개체 매개 변수를 형식 또는 사용자 지정 마샬링으로 노출하는 메서드를 IntPtr 호출할 때 유용합니다. 이 메서드를 사용하여 개체를 호출하면 포인터가 반환되기 전에 인터페이스 포인터에서 참조 수가 증가합니다. 포인터를 완료한 후에는 항상 참조 수를 감소하는 데 사용합니다 Marshal.Release . 이 메서드는 메서드의 Marshal.GetObjectForIUnknown 반대 기능을 제공합니다.

관리되는 개체에서 이 메서드를 사용하여 개체에 대한 COM 호출 가능 래퍼 에 대한 인터페이스 포인터를 가져올 수도 있습니다.

적용 대상

추가 정보