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 por 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, IUnknownvocê pode passar qualquer interface COM para esse método. O objeto retornado é GetObjectForIUnknown um Wrapper Callable do Runtime, 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 com limite tardio 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 contendo 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.