Partilhar via


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.

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

Parâmetros

pUnk
IntPtr

nativeint

Um ponteiro para a interface IUnknown.

Retornos

Um objeto que representa o objeto COM não gerenciado especificado.

Atributos

Exceções

Comentários

Esse método encapsula IUnknown em um objeto gerenciado. Isso tem o efeito de incrementar a contagem de referência do componente COM. A contagem de referência será decrementada quando o runtime executar a coleta de lixo no objeto gerenciado que representa o objeto COM.

O pUnk parâmetro representa um IUnknown ponteiro de interface; no entanto, como todas as interfaces COM derivam direta ou indiretamente de IUnknown, você pode passar qualquer interface COM para esse método. O objeto retornado por GetObjectForIUnknown é um Runtime Callable Wrapper, que o Common Language Runtime gerencia como faz com qualquer outro objeto gerenciado. O tipo desse wrapper geralmente é um tipo base System.__ComObject , que é um tipo oculto usado quando o tipo de wrapper é ambíguo. Você ainda pode fazer chamadas de associação tardia para um tipo base, desde que o objeto COM implemente a interface IDispatch . Da mesma forma, você pode converter o objeto retornado em uma interface COM apropriada.

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 seguir os seguintes requisitos:

Como alternativa, você pode evitar esses requisitos e ainda obter um objeto encapsulado com um tipo de classe gerenciada específico usando o Marshal.GetTypedObjectForIUnknown método .

Aplica-se a

Confira também