Поделиться через


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

Внимание!

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

Внимание!

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

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

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