Marshal.GetComInterfaceForObject 메서드

정의

개체의 인터페이스를 나타내는 인터페이스 포인터를 반환합니다.Returns an interface pointer that represents an interface for an object.

오버로드

GetComInterfaceForObject(Object, Type)
사용되지 않습니다.

지정된 개체의 지정된 인터페이스를 나타내는 IUnknown 인터페이스에 대한 포인터를 반환합니다.Returns a pointer to an IUnknown interface that represents the specified interface on the specified object. 사용자 지정 쿼리 인터페이스 액세스가 기본적으로 사용됩니다.Custom query interface access is enabled by default.

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)
사용되지 않습니다.

지정된 개체의 지정된 인터페이스를 나타내는 IUnknown 인터페이스에 대한 포인터를 반환합니다.Returns a pointer to an IUnknown interface that represents the specified interface on the specified object. 사용자 지정 쿼리 인터페이스 액세스는 지정된 사용자 지정 모드에 의해 제어됩니다.Custom query interface access is controlled by the specified customization mode.

GetComInterfaceForObject<T,TInterface>(T)

[.NET Framework 4.5.1 이상 버전에서 지원됨][Supported in the .NET Framework 4.5.1 and later versions] 지정된 형식의 개체에 지정된 인터페이스를 나타내는 IUnknown 인터페이스에 대한 포인터를 반환합니다.Returns a pointer to an IUnknown interface that represents the specified interface on an object of the specified type. 사용자 지정 쿼리 인터페이스 액세스가 기본적으로 사용됩니다.Custom query interface access is enabled by default.

GetComInterfaceForObject(Object, Type)

주의

GetComInterfaceForObject(Object, Type) may be unavailable in future releases. Instead, use GetComInterfaceForObject<T,T2>(T). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296509

지정된 개체의 지정된 인터페이스를 나타내는 IUnknown 인터페이스에 대한 포인터를 반환합니다.Returns a pointer to an IUnknown interface that represents the specified interface on the specified object. 사용자 지정 쿼리 인터페이스 액세스가 기본적으로 사용됩니다.Custom query interface access is enabled by default.

public:
 static IntPtr GetComInterfaceForObject(System::Object ^ o, Type ^ T);
[System.Obsolete("GetComInterfaceForObject(Object, Type) may be unavailable in future releases. Instead, use GetComInterfaceForObject<T,T2>(T). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296509")]
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject (object o, Type T);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static IntPtr GetComInterfaceForObject (object o, Type T);
public static IntPtr GetComInterfaceForObject (object o, Type T);
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject (object o, Type T);
[<System.Obsolete("GetComInterfaceForObject(Object, Type) may be unavailable in future releases. Instead, use GetComInterfaceForObject<T,T2>(T). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296509")>]
[<System.Security.SecurityCritical>]
static member GetComInterfaceForObject : obj * Type -> nativeint
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member GetComInterfaceForObject : obj * Type -> nativeint
static member GetComInterfaceForObject : obj * Type -> nativeint
[<System.Security.SecurityCritical>]
static member GetComInterfaceForObject : obj * Type -> nativeint
Public Shared Function GetComInterfaceForObject (o As Object, T As Type) As IntPtr

매개 변수

o
Object

인터페이스를 제공하는 개체입니다.The object that provides the interface.

T
Type

요청된 인터페이스의 형식입니다.The type of interface that is requested.

반환

IntPtr

개체에 대해 지정된 인터페이스를 나타내는 인터페이스 포인터입니다.The interface pointer that represents the specified interface for the object.

특성

예외

T 매개 변수가 인터페이스가 아닌 경우The T parameter is not an interface.

또는-or- COM에 해당 형식이 표시되지 않는 경우The type is not visible to COM.

또는-or- T 매개 변수는 제네릭 형식 정의입니다.The T parameter is a generic type definition.

o 매개 변수가 요청된 인터페이스를 지원하지 않는 경우The o parameter does not support the requested interface.

o 매개 변수가 null인 경우The o parameter is null.

또는-or- T 매개 변수가 null인 경우The T parameter is null.

설명

이 메서드는 지정 된 개체의 요청 된 인터페이스를 나타내는 인터페이스 포인터를 반환 합니다.This method returns an interface pointer that represents the requested interface on the specified object. 인터페이스 포인터를 전달 해야 하는 관리 되지 않는 메서드가 있는 경우 특히 유용 합니다.It is particularly useful if you have an unmanaged method that expects to be passed an interface pointer. 이 메서드를 사용 하 여 개체를 호출 하면 포인터를 반환 하기 전에 인터페이스 포인터에서 참조 횟수가 증가 합니다.Calling an object with this method causes the reference count to increment on the interface pointer before the pointer is returned. 포인터를 사용 하 Marshal.Release 여 완료 한 후에는 항상를 사용 하 여 참조 횟수를 감소 시킵니다.Always use Marshal.Release to decrement the reference count once you have finished with the pointer. 원시 COM 인터페이스 포인터를 사용할 때 COM에서 정의 된 규칙을 따라야 합니다.You must adhere to the rules defined by COM when using raw COM interface pointers.

GetComInterfaceForObject(Object, Type) 는 COM 개체 매개 변수를 형식으로 노출 하는 메서드를 호출 IntPtr 하거나 사용자 지정 마샬링을 사용 하는 경우에 유용 합니다.GetComInterfaceForObject(Object, Type) is useful when calling a method that exposes a COM object parameter as an IntPtr type, or with custom marshaling. 일반적이 지는 않지만 관리 되는 개체에 대해이 메서드를 사용 하 여 개체의 COM 호출 가능 래퍼에 대 한 포인터를 가져올 수 있습니다.Although less common, you can use this method on a managed object to obtain a pointer to the object's COM callable wrapper. 예를 들어 GetComInterfaceForObject(Object, Type) COM으로 내보낸 관리 되는 개체에서를 사용 하 여에 대 한 인터페이스 포인터를 가져올 수 있습니다 System.Runtime.InteropServices.UCOMIConnectionPointContainer .For example, you can use GetComInterfaceForObject(Object, Type) on a managed object that is exported to COM to obtain an interface pointer for System.Runtime.InteropServices.UCOMIConnectionPointContainer. 클래스 인터페이스에 해당 형식이 없으므로 두 번째 매개 변수 ()에 전달할 수 없으므로 클래스 인터페이스에 대 한 포인터를 가져올 수 없습니다 t .You cannot obtain a pointer to a class interface since a class interface lacks the corresponding type to pass to the second parameter (t). 대신를 사용 Marshal.GetIDispatchForObject 하 여 COM 호출 가능 래퍼의 기본 인터페이스 (일반적으로 자동 디스패치 클래스 인터페이스)의 멤버를 호출 합니다.Instead, use Marshal.GetIDispatchForObject to invoke the members on the default interface of the COM callable wrapper, which is usually an auto-dispatch class interface.

GetComInterfaceForObject(Object, Type)메서드 오버 로드는 기본적으로 쿼리 인터페이스 사용자 지정을 허용 합니다.The GetComInterfaceForObject(Object, Type) method overload allows query interface customization by default. 쿼리 인터페이스 사용자 지정을 적용할지 여부를 지정 하려면 GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) 메서드 오버 로드를 사용 합니다.To specify whether to apply query interface customization, use the GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) method overload.

자세한 내용은 COM 호출 가능 래퍼런타임 호출 가능 래퍼 문서를 참조 하세요.For additional information, see the COM Callable Wrapper and Runtime Callable Wrapper articles.

추가 정보

적용 대상

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)

주의

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) and support for ICustomQueryInterface may be unavailable in future releases.

지정된 개체의 지정된 인터페이스를 나타내는 IUnknown 인터페이스에 대한 포인터를 반환합니다.Returns a pointer to an IUnknown interface that represents the specified interface on the specified object. 사용자 지정 쿼리 인터페이스 액세스는 지정된 사용자 지정 모드에 의해 제어됩니다.Custom query interface access is controlled by the specified customization mode.

public:
 static IntPtr GetComInterfaceForObject(System::Object ^ o, Type ^ T, System::Runtime::InteropServices::CustomQueryInterfaceMode mode);
[System.Obsolete("GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) and support for ICustomQueryInterface may be unavailable in future releases.")]
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject (object o, Type T, System.Runtime.InteropServices.CustomQueryInterfaceMode mode);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static IntPtr GetComInterfaceForObject (object o, Type T, System.Runtime.InteropServices.CustomQueryInterfaceMode mode);
public static IntPtr GetComInterfaceForObject (object o, Type T, System.Runtime.InteropServices.CustomQueryInterfaceMode mode);
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject (object o, Type T, System.Runtime.InteropServices.CustomQueryInterfaceMode mode);
[<System.Obsolete("GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) and support for ICustomQueryInterface may be unavailable in future releases.")>]
[<System.Security.SecurityCritical>]
static member GetComInterfaceForObject : obj * Type * System.Runtime.InteropServices.CustomQueryInterfaceMode -> nativeint
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member GetComInterfaceForObject : obj * Type * System.Runtime.InteropServices.CustomQueryInterfaceMode -> nativeint
static member GetComInterfaceForObject : obj * Type * System.Runtime.InteropServices.CustomQueryInterfaceMode -> nativeint
[<System.Security.SecurityCritical>]
static member GetComInterfaceForObject : obj * Type * System.Runtime.InteropServices.CustomQueryInterfaceMode -> nativeint
Public Shared Function GetComInterfaceForObject (o As Object, T As Type, mode As CustomQueryInterfaceMode) As IntPtr

매개 변수

o
Object

인터페이스를 제공하는 개체입니다.The object that provides the interface.

T
Type

요청된 인터페이스의 형식입니다.The type of interface that is requested.

mode
CustomQueryInterfaceMode

ICustomQueryInterface에서 제공하는 IUnknown::QueryInterface 사용자 지정을 적용하는지 여부를 나타내는 열거형 값 중 하나입니다.One of the enumeration values that indicates whether to apply an IUnknown::QueryInterface customization that is supplied by an ICustomQueryInterface.

반환

IntPtr

개체에 대한 인터페이스를 나타내는 인터페이스 포인터입니다.The interface pointer that represents the interface for the object.

특성

예외

T 매개 변수가 인터페이스가 아닌 경우The T parameter is not an interface.

또는-or- COM에 해당 형식이 표시되지 않는 경우The type is not visible to COM.

또는-or- T 매개 변수는 제네릭 형식 정의입니다.The T parameter is a generic type definition.

o 개체가 요청된 인터페이스를 지원하지 않는 경우The object o does not support the requested interface.

o 매개 변수가 null인 경우The o parameter is null.

또는-or- T 매개 변수가 null인 경우The T parameter is null.

설명

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) 쿼리 인터페이스 사용자 지정을 적용할지 여부를 지정할 수 있습니다.GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) lets you specify whether to apply query interface customization. GetComInterfaceForObject(Object, Type)오버 로드를 사용 하 여 기본적으로 쿼리 인터페이스 사용자 지정을 적용 합니다.Use the GetComInterfaceForObject(Object, Type) overload to apply query interface customization by default.

적용 대상

GetComInterfaceForObject<T,TInterface>(T)

[.NET Framework 4.5.1 이상 버전에서 지원됨][Supported in the .NET Framework 4.5.1 and later versions] 지정된 형식의 개체에 지정된 인터페이스를 나타내는 IUnknown 인터페이스에 대한 포인터를 반환합니다.Returns a pointer to an IUnknown interface that represents the specified interface on an object of the specified type. 사용자 지정 쿼리 인터페이스 액세스가 기본적으로 사용됩니다.Custom query interface access is enabled by default.

public:
generic <typename T, typename TInterface>
 static IntPtr GetComInterfaceForObject(T o);
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject<T,TInterface> (T o);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static IntPtr GetComInterfaceForObject<T,TInterface> (T o);
public static IntPtr GetComInterfaceForObject<T,TInterface> (T o);
[<System.Security.SecurityCritical>]
static member GetComInterfaceForObject : 'T -> nativeint
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member GetComInterfaceForObject : 'T -> nativeint
static member GetComInterfaceForObject : 'T -> nativeint
Public Shared Function GetComInterfaceForObject(Of T, TInterface) (o As T) As IntPtr

형식 매개 변수

T

o의 형식입니다.The type of o.

TInterface

반환할 인터페이스의 형식입니다.The type of interface to return.

매개 변수

o
T

인터페이스를 제공하는 개체입니다.The object that provides the interface.

반환

IntPtr

TInterface 인터페이스를 나타내는 인터페이스 포인터입니다.The interface pointer that represents the TInterface interface.

특성

예외

TInterface 매개 변수가 인터페이스가 아닌 경우The TInterface parameter is not an interface.

또는-or- COM에 해당 형식이 표시되지 않는 경우The type is not visible to COM.

또는-or- T 매개 변수는 개방형 제네릭 형식입니다.The T parameter is an open generic type.

o 매개 변수가 TInterface 인터페이스를 지원하지 않는 경우The o parameter does not support the TInterface interface.

o 매개 변수가 null인 경우The o parameter is null.

설명

이 메서드는 TInterface 지정 된 개체의 인터페이스를 나타내는 인터페이스 포인터를 반환 합니다.This method returns an interface pointer that represents the TInterface interface on the specified object. 인터페이스 포인터를 전달 해야 하는 관리 되지 않는 메서드가 있는 경우 특히 유용 합니다.It is particularly useful if you have an unmanaged method that expects to be passed an interface pointer. 이 메서드를 사용 하 여 개체를 호출 하면 포인터를 반환 하기 전에 인터페이스 포인터에서 참조 횟수가 증가 합니다.Calling an object with this method causes the reference count to increment on the interface pointer before the pointer is returned. 포인터를 사용한 후에는 항상 메서드를 사용 Marshal.Release 하 여 참조 횟수를 감소 시킵니다.Always use the Marshal.Release method to decrement the reference count when you have finished with the pointer. 원시 COM 인터페이스 포인터를 사용할 때 COM에서 정의 된 규칙을 따라야 합니다.You must adhere to the rules defined by COM when using raw COM interface pointers.

GetComInterfaceForObject<T,TInterface>(T) 는 COM 개체 매개 변수를 형식으로 노출 하는 메서드를 호출 IntPtr 하거나 사용자 지정 마샬링을 사용 하는 경우에 유용 합니다.GetComInterfaceForObject<T,TInterface>(T) is useful when calling a method that exposes a COM object parameter as an IntPtr type, or with custom marshaling. 관리 되는 개체에 대 한이 메서드를 사용 하 여 개체의 COM 호출 가능 래퍼에 대 한 포인터를 가져올 수도 있습니다 .이는 일반적이 지 않습니다.You can also use this method on a managed object to obtain a pointer to the object's COM callable wrapper, although this is less common. 예를 들어 GetComInterfaceForObject<T,TInterface>(T) COM으로 내보낸 관리 되는 개체에서를 사용 하 여에 대 한 인터페이스 포인터를 가져올 수 있습니다 System.Runtime.InteropServices.UCOMIConnectionPointContainer .For example, you can use GetComInterfaceForObject<T,TInterface>(T) on a managed object that is exported to COM to obtain an interface pointer for System.Runtime.InteropServices.UCOMIConnectionPointContainer.

GetComInterfaceForObject<T,TInterface>(T)메서드 오버 로드는 기본적으로 쿼리 인터페이스 사용자 지정을 허용 합니다.The GetComInterfaceForObject<T,TInterface>(T) method overload allows query interface customization by default. 쿼리 인터페이스 사용자 지정을 적용할지 여부를 지정 하려면 GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) 메서드 오버 로드를 사용 합니다.To specify whether to apply query interface customization, use the GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) method overload.

자세한 내용은 COM 호출 가능 래퍼런타임 호출 가능 래퍼 문서를 참조 하세요.For additional information, see the COM Callable Wrapper and Runtime Callable Wrapper articles.

적용 대상