Marshal.GetObjectForIUnknown(IntPtr) Metodo

Definizione

Restituisce un'istanza di un tipo che rappresenta un oggetto COM tramite un puntatore alla relativa interfaccia 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

Parametri

pUnk
IntPtr

nativeint

Puntatore all'interfaccia IUnknown.

Restituisce

Oggetto che rappresenta l'oggetto COM non gestito specificato.

Attributi

Eccezioni

Commenti

Questo metodo esegue il IUnknown wrapping in un oggetto gestito. Questo ha l'effetto di incrementare il conteggio dei riferimenti del componente COM. Il conteggio dei riferimenti verrà decrementato quando il runtime esegue l'operazione di Garbage Collection sull'oggetto gestito che rappresenta l'oggetto COM.

Il pUnk parametro rappresenta un IUnknown puntatore all'interfaccia. Tuttavia, poiché tutte le interfacce COM derivano direttamente o indirettamente da IUnknown, è possibile passare qualsiasi interfaccia COM a questo metodo. L'oggetto restituito da GetObjectForIUnknown è un Runtime Callable Wrapper, che Common Language Runtime gestisce come qualsiasi altro oggetto gestito. Il tipo di questo wrapper è spesso un tipo di base System.__ComObject , che è un tipo nascosto usato quando il tipo wrapper è ambiguo. È comunque possibile effettuare chiamate ad associazione tardiva a un tipo di base, purché l'oggetto COM implementi l'interfaccia IDispatch . Analogamente, è possibile eseguire il cast dell'oggetto restituito in un'interfaccia COM appropriata.

Affinché un oggetto venga sottoposto a wrapping con un tipo di classe gestito specifico (e non con un tipo wrapper generico), è necessario rispettare i requisiti seguenti:

In alternativa, è possibile evitare questi requisiti e ottenere comunque un oggetto di cui è stato eseguito il wrapping con un tipo di classe gestito specifico usando il Marshal.GetTypedObjectForIUnknown metodo .

Si applica a

Vedi anche