Marshal.GetComInterfaceForObject Método

Definição

Retorna um ponteiro de interface que representa uma interface para um objeto.Returns an interface pointer that represents an interface for an object.

Sobrecargas

GetComInterfaceForObject(Object, Type)

Retorna um ponteiro para uma interface IUnknown que representa a interface especificada no objeto especificado.Returns a pointer to an IUnknown interface that represents the specified interface on the specified object. O acesso à interface de consulta personalizada é habilitada por padrão.Custom query interface access is enabled by default.

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)

Retorna um ponteiro para uma interface IUnknown que representa a interface especificada no objeto especificado.Returns a pointer to an IUnknown interface that represents the specified interface on the specified object. O acesso à interface de consulta personalizada é controlado pelo modo de personalização especificado.Custom query interface access is controlled by the specified customization mode.

GetComInterfaceForObject<T,TInterface>(T)

[Suporte somente no .NET Framework 4.5.1 e versões posteriores][Supported in the .NET Framework 4.5.1 and later versions] Retorna um ponteiro para uma interface IUnknown que representa a interface especificada em um objeto do tipo especificado.Returns a pointer to an IUnknown interface that represents the specified interface on an object of the specified type. O acesso à interface de consulta personalizada é habilitada por padrão.Custom query interface access is enabled by default.

GetComInterfaceForObject(Object, Type)

Aviso

Esta API agora é obsoleta.

Retorna um ponteiro para uma interface IUnknown que representa a interface especificada no objeto especificado.Returns a pointer to an IUnknown interface that represents the specified interface on the specified object. O acesso à interface de consulta personalizada é habilitada por padrão.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 https://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

Parâmetros

o
Object

O objeto que fornece a interface.The object that provides the interface.

T
Type

O tipo de interface solicitado.The type of interface that is requested.

Retornos

O ponteiro da interface que representa a interface especificada para o objeto.The interface pointer that represents the specified interface for the object.

Atributos

Exceções

O parâmetro T não é uma interface.The T parameter is not an interface.

- ou --or- O tipo não é visível para COM.The type is not visible to COM.

- ou --or- O parâmetro T é uma definição de tipo genérico.The T parameter is a generic type definition.

O parâmetro o não dá suporte à interface solicitada.The o parameter does not support the requested interface.

O parâmetro o é null.The o parameter is null.

- ou --or- O parâmetro T é null.The T parameter is null.

Comentários

Esse método retorna um ponteiro de interface que representa a interface solicitada no objeto especificado.This method returns an interface pointer that represents the requested interface on the specified object. Isso é particularmente útil se você tiver um método não gerenciado que espera ser passado para um ponteiro de interface.It is particularly useful if you have an unmanaged method that expects to be passed an interface pointer. Chamar um objeto com esse método faz com que a contagem de referência seja incrementada no ponteiro da interface antes que o ponteiro seja retornado.Calling an object with this method causes the reference count to increment on the interface pointer before the pointer is returned. Sempre use Marshal.Release para decrementar a contagem de referência depois de terminar com o ponteiro.Always use Marshal.Release to decrement the reference count once you have finished with the pointer. Você deve aderir às regras definidas pelo COM ao usar ponteiros de interface COM brutos.You must adhere to the rules defined by COM when using raw COM interface pointers.

GetComInterfaceForObject(Object, Type) é útil ao chamar um método que expõe um parâmetro de objeto COM como um tipo de IntPtr ou com marshaling personalizado.GetComInterfaceForObject(Object, Type) is useful when calling a method that exposes a COM object parameter as an IntPtr type, or with custom marshaling. Embora menos comum, você pode usar esse método em um objeto gerenciado para obter um ponteiro para a COM Callable Wrapper do objeto.Although less common, you can use this method on a managed object to obtain a pointer to the object's COM callable wrapper. Por exemplo, você pode usar GetComInterfaceForObject(Object, Type) em um objeto gerenciado que é exportado para COM para obter um ponteiro de interface para 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. Você não pode obter um ponteiro para uma interface de classe, pois uma interface de classe não tem o tipo correspondente para passar para o segundo parâmetro (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). Em vez disso, use Marshal.GetIDispatchForObject para invocar os membros na interface padrão do COM Callable Wrapper, que geralmente é uma interface de classe de expedição automática.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.

A sobrecarga do método GetComInterfaceForObject(Object, Type) permite a personalização da interface de consulta por padrão.The GetComInterfaceForObject(Object, Type) method overload allows query interface customization by default. Para especificar se a personalização da interface de consulta deve ser aplicada, use a sobrecarga do método GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode).To specify whether to apply query interface customization, use the GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) method overload.

Para obter informações adicionais, consulte os artigos com callable wrapper e Runtime Callable Wrapper .For additional information, see the COM Callable Wrapper and Runtime Callable Wrapper articles.

Segurança

SecurityCriticalAttribute
requer confiança total para o chamador imediato.requires full trust for the immediate caller. Este membro não pode ser usado pelo código transparente ou parcialmente confiável.This member cannot be used by partially trusted or transparent code.

Veja também

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)

Aviso

Esta API agora é obsoleta.

Retorna um ponteiro para uma interface IUnknown que representa a interface especificada no objeto especificado.Returns a pointer to an IUnknown interface that represents the specified interface on the specified object. O acesso à interface de consulta personalizada é controlado pelo modo de personalização especificado.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

Parâmetros

o
Object

O objeto que fornece a interface.The object that provides the interface.

T
Type

O tipo de interface solicitado.The type of interface that is requested.

mode
CustomQueryInterfaceMode

Um dos valores de enumeração que indica se é necessário aplicar uma personalização IUnknown::QueryInterface fornecida por um ICustomQueryInterface.One of the enumeration values that indicates whether to apply an IUnknown::QueryInterface customization that is supplied by an ICustomQueryInterface.

Retornos

O ponteiro de interface que representa a interface para o objeto.The interface pointer that represents the interface for the object.

Atributos

Exceções

O parâmetro T não é uma interface.The T parameter is not an interface.

- ou --or- O tipo não é visível para COM.The type is not visible to COM.

- ou --or- O parâmetro T é uma definição de tipo genérico.The T parameter is a generic type definition.

O objeto o não dá suporte à interface solicitada.The object o does not support the requested interface.

O parâmetro o é null.The o parameter is null.

- ou --or- O parâmetro T é null.The T parameter is null.

Comentários

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) permite que você especifique se deseja aplicar a personalização da interface de consulta.GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) lets you specify whether to apply query interface customization. Use a sobrecarga de GetComInterfaceForObject(Object, Type) para aplicar a personalização da interface de consulta por padrão.Use the GetComInterfaceForObject(Object, Type) overload to apply query interface customization by default.

Segurança

SecurityCriticalAttribute
requer confiança total para o chamador imediato.requires full trust for the immediate caller. Este membro não pode ser usado pelo código transparente ou parcialmente confiável.This member cannot be used by partially trusted or transparent code.

GetComInterfaceForObject<T,TInterface>(T)

[Suporte somente no .NET Framework 4.5.1 e versões posteriores][Supported in the .NET Framework 4.5.1 and later versions] Retorna um ponteiro para uma interface IUnknown que representa a interface especificada em um objeto do tipo especificado.Returns a pointer to an IUnknown interface that represents the specified interface on an object of the specified type. O acesso à interface de consulta personalizada é habilitada por padrão.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

Parâmetros de tipo

T

O tipo de o.The type of o.

TInterface

O tipo de interface a ser retornado.The type of interface to return.

Parâmetros

o
T

O objeto que fornece a interface.The object that provides the interface.

Retornos

O ponteiro de interface que representa a interface TInterface.The interface pointer that represents the TInterface interface.

Atributos

Exceções

O parâmetro TInterface não é uma interface.The TInterface parameter is not an interface.

- ou --or- O tipo não é visível para COM.The type is not visible to COM.

- ou --or- O parâmetro T é um tipo genérico aberto.The T parameter is an open generic type.

O parâmetro o não dá suporte à interface TInterface.The o parameter does not support the TInterface interface.

O parâmetro o é null.The o parameter is null.

Comentários

Esse método retorna um ponteiro de interface que representa a interface TInterface no objeto especificado.This method returns an interface pointer that represents the TInterface interface on the specified object. Isso é particularmente útil se você tiver um método não gerenciado que espera ser passado para um ponteiro de interface.It is particularly useful if you have an unmanaged method that expects to be passed an interface pointer. Chamar um objeto com esse método faz com que a contagem de referência seja incrementada no ponteiro da interface antes que o ponteiro seja retornado.Calling an object with this method causes the reference count to increment on the interface pointer before the pointer is returned. Sempre use o método Marshal.Release para decrementar a contagem de referência quando terminar com o ponteiro.Always use the Marshal.Release method to decrement the reference count when you have finished with the pointer. Você deve aderir às regras definidas pelo COM ao usar ponteiros de interface COM brutos.You must adhere to the rules defined by COM when using raw COM interface pointers.

GetComInterfaceForObject<T,TInterface>(T) é útil ao chamar um método que expõe um parâmetro de objeto COM como um tipo de IntPtr ou com marshaling personalizado.GetComInterfaceForObject<T,TInterface>(T) is useful when calling a method that exposes a COM object parameter as an IntPtr type, or with custom marshaling. Você também pode usar esse método em um objeto gerenciado para obter um ponteiro para a COM Callable Wrapper do objeto, embora isso seja menos comum.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. Por exemplo, você pode usar GetComInterfaceForObject<T,TInterface>(T) em um objeto gerenciado que é exportado para COM para obter um ponteiro de interface para 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.

A sobrecarga do método GetComInterfaceForObject<T,TInterface>(T) permite a personalização da interface de consulta por padrão.The GetComInterfaceForObject<T,TInterface>(T) method overload allows query interface customization by default. Para especificar se a personalização da interface de consulta deve ser aplicada, use a sobrecarga do método GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode).To specify whether to apply query interface customization, use the GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) method overload.

Para obter informações adicionais, consulte os artigos com callable wrapper e Runtime Callable Wrapper .For additional information, see the COM Callable Wrapper and Runtime Callable Wrapper articles.

Segurança

SecurityCriticalAttribute
requer confiança total para o chamador imediato.requires full trust for the immediate caller. Este membro não pode ser usado pelo código transparente ou parcialmente confiável.This member cannot be used by partially trusted or transparent code.

Aplica-se a