Marshal.GetIUnknownForObject(Object) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
관리되는 개체에서 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
인터페이스가 요청되는 개체입니다.
반환
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 호출 가능 래퍼 에 대한 인터페이스 포인터를 가져올 수도 있습니다.
적용 대상
추가 정보
.NET