Share via


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 호출 가능 래퍼 에 대한 인터페이스 포인터를 가져올 수도 있습니다.

적용 대상

추가 정보