Marshal.GetObjectForIUnknown(IntPtr) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
pUnk
é Zero.
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:
Implemente a interface IProvideClassInfo para o objeto COM.
Registre o assembly recipiente com o Regasm.exe (Ferramenta de Registro de Assembly).
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 .