Marshal.GetComInterfaceForObject Marshal.GetComInterfaceForObject Marshal.GetComInterfaceForObject Marshal.GetComInterfaceForObject Method

Определение

Возвращает указатель интерфейса, представляющий интерфейс для объекта.Returns an interface pointer that represents an interface for an object.

Перегрузки

GetComInterfaceForObject(Object, Type) GetComInterfaceForObject(Object, Type) GetComInterfaceForObject(Object, Type) 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) GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) 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) GetComInterfaceForObject<T,TInterface>(T) GetComInterfaceForObject<T,TInterface>(T) 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) GetComInterfaceForObject(Object, Type) GetComInterfaceForObject(Object, Type)

Предупреждение

Этот API устарел.

Возвращает указатель на интерфейс 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);
static member GetComInterfaceForObject : obj * Type -> nativeint
Public Shared Function GetComInterfaceForObject (o As Object, T As Type) As IntPtr

Параметры

o
Object Object Object Object

Объект, предоставляющий интерфейс.The object that provides the interface.

T
Type Type Type Type

Тип запрашиваемого интерфейса.The type of interface that is requested.

Возвраты

Указатель интерфейса, представляющий заданный интерфейс для объекта.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.UCOMIConnectionPointContainerFor 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.

Безопасность

SecurityCriticalAttribute
требуется полное доверие для немедленного вызывающего объекта.requires full trust for the immediate caller. Этот член не может использоваться частично доверенным или прозрачным кодом.This member cannot be used by partially trusted or transparent code.

Дополнительно

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)

Предупреждение

Этот API устарел.

Возвращает указатель на интерфейс 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);
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 Object Object Object

Объект, предоставляющий интерфейс.The object that provides the interface.

T
Type Type Type Type

Тип запрашиваемого интерфейса.The type of interface that is requested.

mode
CustomQueryInterfaceMode CustomQueryInterfaceMode CustomQueryInterfaceMode CustomQueryInterfaceMode

Одно из значений перечисления, определяющее, нужно ли применять пользовательскую настройку IUnknown::QueryInterface, предоставленную в интерфейсе ICustomQueryInterface.One of the enumeration values that indicates whether to apply an IUnknown::QueryInterface customization that is supplied by an ICustomQueryInterface.

Возвраты

Указатель интерфейса, представляющий интерфейс для объекта.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.

Безопасность

SecurityCriticalAttribute
требуется полное доверие для немедленного вызывающего объекта.requires full trust for the immediate caller. Этот член не может использоваться частично доверенным или прозрачным кодом.This member cannot be used by partially trusted or transparent code.

GetComInterfaceForObject<T,TInterface>(T) GetComInterfaceForObject<T,TInterface>(T) GetComInterfaceForObject<T,TInterface>(T) 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);
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 T T T

Объект, предоставляющий интерфейс.The object that provides the interface.

Возвраты

Указатель интерфейса, представляющий интерфейс 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.UCOMIConnectionPointContainerFor 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.

Безопасность

SecurityCriticalAttribute
требуется полное доверие для немедленного вызывающего объекта.requires full trust for the immediate caller. Этот член не может использоваться частично доверенным или прозрачным кодом.This member cannot be used by partially trusted or transparent code.

Применяется к