Marshal.GetObjectForIUnknown(IntPtr) Método

Definição

Retorna uma instância de um tipo que representa um objeto COM de um ponteiro para sua interface IUnknown.Returns an instance of a type that represents a COM object by a pointer to its IUnknown interface.

public:
 static System::Object ^ GetObjectForIUnknown(IntPtr pUnk);
[System.Security.SecurityCritical]
public static object GetObjectForIUnknown (IntPtr pUnk);
static member GetObjectForIUnknown : nativeint -> obj
Public Shared Function GetObjectForIUnknown (pUnk As IntPtr) As Object

Parâmetros

pUnk
IntPtr

Um ponteiro para a interface IUnknown.A pointer to the IUnknown interface.

Retornos

Um objeto que representa o objeto COM não gerenciado especificado.An object that represents the specified unmanaged COM object.

Atributos

Exceções

pUnk é Zero.pUnk is Zero.

Comentários

Esse método encapsula IUnknown em um objeto gerenciado.This method wraps IUnknown in a managed object. Isso tem o efeito de incrementar a contagem de referência do componente COM.This has the effect of incrementing the reference count of the COM component. A contagem de referência será diminuída quando o tempo de execução executar a coleta de lixo no objeto gerenciado que representa o objeto COM.The reference count will be decremented when the runtime performs garbage collection on the managed object that represents the COM object.

O parâmetro pUnk representa um ponteiro de interface IUnknown; no entanto, como todas as interfaces COM derivam direta ou indiretamente do IUnknown, você pode passar qualquer interface COM para esse método.The pUnk parameter represents an IUnknown interface pointer; however, because all COM interfaces derive directly or indirectly from IUnknown, you can pass any COM interface to this method. O objeto retornado por GetObjectForIUnknown é um wrapperque poderia ser chamado por tempo de execução, que o Common Language Runtime gerencia como faz qualquer outro objeto gerenciado.The object returned by GetObjectForIUnknown is a Runtime Callable Wrapper, which the common language runtime manages as it does any other managed object. O tipo desse wrapper geralmente é um tipo de System.__ComObject base, que é um tipo oculto usado quando o tipo de wrapper é ambíguo.The type of this wrapper is often a base System.__ComObject type, which is a hidden type used when the wrapper type is ambiguous. Você ainda pode fazer chamadas de associação tardia para esse tipo base, contanto que o objeto COM implemente a interface IDispatch .You can still make late-bound calls to such a base type as long as the COM object implements the IDispatch interface. Da mesma forma, você pode converter o objeto retornado em uma interface COM apropriada.Likewise, you can cast the returned object to an appropriate COM interface.

Para que um objeto seja encapsulado com um tipo de classe gerenciada específico (e não um tipo de wrapper genérico), você deve obedecer aos seguintes requisitos:For an object to be wrapped with a specific managed class type (and not a generic wrapper type), you must adhere to the following requirements:

Como alternativa, você pode evitar esses requisitos e ainda obter um objeto encapsulado com um tipo de classe gerenciada específico usando o método Marshal.GetTypedObjectForIUnknown.Alternatively, you can avoid these requirements and still get an object that is wrapped with a specific managed class type by using the Marshal.GetTypedObjectForIUnknown method.

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

Veja também