Marshal.GetComInterfaceForObject Метод

Определение

Возвращает указатель интерфейса, представляющий интерфейс для объекта.

Перегрузки

Имя Описание
GetComInterfaceForObject(Object, Type)
Устаревшие..

Возвращает указатель на интерфейс IUnknown , представляющий указанный интерфейс для указанного объекта. Доступ к пользовательскому интерфейсу запросов включен по умолчанию.

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)
Устаревшие..

Возвращает указатель на интерфейс IUnknown , представляющий указанный интерфейс для указанного объекта. Доступ к пользовательскому интерфейсу запросов управляется указанным режимом настройки.

GetComInterfaceForObject<T,TInterface>(T)

Возвращает указатель на интерфейс IUnknown , представляющий указанный интерфейс для объекта указанного типа. Доступ к пользовательскому интерфейсу запросов включен по умолчанию.

GetComInterfaceForObject(Object, Type)

Исходный код:
Marshal.NoCom.cs
Исходный код:
Marshal.NoCom.cs
Исходный код:
Marshal.NoCom.cs
Исходный код:
Marshal.NoCom.cs
Исходный код:
Marshal.NoCom.cs

Внимание

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

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);
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject(object o, Type T);
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
[<System.Security.SecurityCritical>]
static member GetComInterfaceForObject : obj * Type -> nativeint
static member GetComInterfaceForObject : obj * Type -> nativeint
Public Shared Function GetComInterfaceForObject (o As Object, T As Type) As IntPtr

Параметры

o
Object

Объект, предоставляющий интерфейс.

T
Type

Тип запрошенного интерфейса.

Возвращаемое значение

IntPtr

nativeint

Указатель интерфейса, представляющий указанный интерфейс для объекта.

Атрибуты

Исключения

Параметр T не является интерфейсом.

–или–

Тип не отображается com.

–или–

Параметр T является определением универсального типа.

Параметр o не поддерживает запрошенный интерфейс.

Параметр o имеет значение null.

–или–

Параметр T имеет значение null.

Комментарии

Этот метод возвращает указатель интерфейса, представляющий запрошенный интерфейс для указанного объекта. Это особенно полезно, если у вас есть неуправляемый метод, который ожидает прохождения указателя интерфейса. Вызов объекта с этим методом приводит к добавочному числу ссылок на указатель интерфейса перед возвратом указателя. Всегда используется Marshal.Release для уменьшения количества ссылок после завершения работы с указателем. При использовании необработанных указателей COM необходимо придерживаться правил, определенных COM.

GetComInterfaceForObject(Object, Type) полезно при вызове метода, предоставляющего параметр COM-объекта в качестве IntPtr типа или с пользовательским маршалингом. Хотя и менее распространен, этот метод можно использовать в управляемом объекте для получения указателя на вызываемую оболочку COM объекта. Например, вы можете использовать GetComInterfaceForObject(Object, Type) управляемый объект, экспортируемый в COM, для получения указателя интерфейса.System.Runtime.InteropServices.UCOMIConnectionPointContainer Невозможно получить указатель на интерфейс класса, так как интерфейс класса не имеет соответствующего типа для передачи второму параметру (t). Вместо этого используйте для Marshal.GetIDispatchForObject вызова членов в интерфейсе по умолчанию вызываемого оболочки COM, который обычно является интерфейсом класса автоматической отправки.

Перегрузка GetComInterfaceForObject(Object, Type) метода позволяет настраивать интерфейс запроса по умолчанию. Чтобы указать, следует ли применять настройку интерфейса запроса, используйте перегрузку GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) метода.

Дополнительные сведения см. в статьях о вызываемой оболочке COM и вызываемой оболочке среды выполнения .

См. также раздел

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

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)

Исходный код:
Marshal.NoCom.cs
Исходный код:
Marshal.NoCom.cs
Исходный код:
Marshal.NoCom.cs
Исходный код:
Marshal.NoCom.cs
Исходный код:
Marshal.NoCom.cs

Внимание

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

Возвращает указатель на интерфейс IUnknown , представляющий указанный интерфейс для указанного объекта. Доступ к пользовательскому интерфейсу запросов управляется указанным режимом настройки.

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);
[System.Security.SecurityCritical]
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.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
[<System.Security.SecurityCritical>]
static member GetComInterfaceForObject : obj * Type * System.Runtime.InteropServices.CustomQueryInterfaceMode -> nativeint
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

Объект, предоставляющий интерфейс.

T
Type

Тип запрошенного интерфейса.

mode
CustomQueryInterfaceMode

Одно из значений перечисления, указывающее, следует ли применять настройку, предоставляемую IUnknown::QueryInterface объектом ICustomQueryInterface.

Возвращаемое значение

IntPtr

nativeint

Указатель интерфейса, представляющий интерфейс для объекта.

Атрибуты

Исключения

Параметр T не является интерфейсом.

–или–

Тип не отображается com.

–или–

Параметр T является определением универсального типа.

Объект o не поддерживает запрошенный интерфейс.

Параметр o имеет значение null.

–или–

Параметр T имеет значение null.

Комментарии

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) позволяет указать, следует ли применять настройку интерфейса запроса. Используйте перегрузку GetComInterfaceForObject(Object, Type) для применения настройки интерфейса запроса по умолчанию.

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

GetComInterfaceForObject<T,TInterface>(T)

Исходный код:
Marshal.NoCom.cs
Исходный код:
Marshal.NoCom.cs
Исходный код:
Marshal.NoCom.cs
Исходный код:
Marshal.NoCom.cs
Исходный код:
Marshal.NoCom.cs

Возвращает указатель на интерфейс IUnknown , представляющий указанный интерфейс для объекта указанного типа. Доступ к пользовательскому интерфейсу запросов включен по умолчанию.

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.

TInterface

Тип возвращаемого интерфейса.

Параметры

o
T

Объект, предоставляющий интерфейс.

Возвращаемое значение

IntPtr

nativeint

Указатель интерфейса, представляющий TInterface интерфейс.

Атрибуты

Исключения

Параметр TInterface не является интерфейсом.

–или–

Тип не отображается com.

–или–

Параметр T является открытым универсальным типом.

Параметр o не поддерживает TInterface интерфейс.

Параметр o имеет значение null.

Комментарии

Этот метод возвращает указатель интерфейса, представляющий TInterface интерфейс для указанного объекта. Это особенно полезно, если у вас есть неуправляемый метод, который ожидает прохождения указателя интерфейса. Вызов объекта с этим методом приводит к добавочному числу ссылок на указатель интерфейса перед возвратом указателя. Всегда используйте Marshal.Release метод для уменьшения количества ссылок после завершения работы с указателем. При использовании необработанных указателей COM необходимо придерживаться правил, определенных COM.

GetComInterfaceForObject<T,TInterface>(T) полезно при вызове метода, предоставляющего параметр COM-объекта в качестве IntPtr типа или с пользовательским маршалингом. Этот метод также можно использовать в управляемом объекте для получения указателя на вызываемую оболочку COM объекта, хотя это менее распространено. Например, вы можете использовать GetComInterfaceForObject<T,TInterface>(T) управляемый объект, экспортируемый в COM, для получения указателя интерфейса.System.Runtime.InteropServices.UCOMIConnectionPointContainer

Перегрузка GetComInterfaceForObject<T,TInterface>(T) метода позволяет настраивать интерфейс запроса по умолчанию. Чтобы указать, следует ли применять настройку интерфейса запроса, используйте перегрузку GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) метода.

Дополнительные сведения см. в статьях о вызываемой оболочке COM и вызываемой оболочке среды выполнения .

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