Marshal.GetComInterfaceForObject 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
返回一个接口指针,该接口指针表示对象的接口。
重载
GetComInterfaceForObject(Object, Type) |
已过时.
返回一个指向 IUnknown 接口的指针,该指针表示指定对象上的指定接口。 默认情况下,启用自定义查询接口访问。 |
GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) |
已过时.
返回一个指向 IUnknown 接口的指针,该指针表示指定对象上的指定接口。 自定义查询接口访问由指定的自定义模式控制。 |
GetComInterfaceForObject<T,TInterface>(T) |
返回一个指向 IUnknown 接口的指针,该指针表示指定类型的对象上的指定接口。 默认情况下,启用自定义查询接口访问。 |
GetComInterfaceForObject(Object, Type)
- Source:
- Marshal.NoCom.cs
- Source:
- Marshal.NoCom.cs
- Source:
- 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
所请求接口的类型。
返回
nativeint
表示对象的指定接口的接口指针。
- 属性
例外
o
参数不支持请求的接口。
注解
此方法返回一个接口指针,该指针表示指定对象上请求的接口。 如果有希望传递接口指针的非托管方法,则此方法特别有用。 使用此方法调用 对象会导致接口指针上的引用计数在返回指针之前递增。 使用完指针后,始终使用 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 可调用包装器 和 运行时可调用包装器 文章。
另请参阅
- GetComInterfaceForObjectInContext(Object, Type)
- ComImportAttribute
- Release(IntPtr)
- UCOMIConnectionPointContainer
- GetIDispatchForObject(Object)
适用于
GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)
- Source:
- Marshal.NoCom.cs
- Source:
- Marshal.NoCom.cs
- Source:
- 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
所请求接口的类型。
枚举值之一,用于指示是否要应用 ICustomQueryInterface 提供的 IUnknown::QueryInterface
自定义。
返回
nativeint
表示对象的接口的接口指针。
- 属性
例外
对象 o
不支持请求的接口。
注解
GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) 允许指定是否应用查询接口自定义。 默认情况下,使用 GetComInterfaceForObject(Object, Type) 重载应用查询接口自定义。
适用于
GetComInterfaceForObject<T,TInterface>(T)
- Source:
- Marshal.NoCom.cs
- Source:
- Marshal.NoCom.cs
- Source:
- 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
提供接口的对象。
返回
nativeint
表示 TInterface
接口的接口指针。
- 属性
例外
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 可调用包装器 和 运行时可调用包装器 文章。