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. Ciò ha effetto dell'incremento del conteggio dei riferimenti del componente COM. Il conteggio dei riferimenti verrà decrementato quando il runtime esegue Garbage Collection nell'oggetto gestito che rappresenta l'oggetto COM.

Il pUnk parametro rappresenta un IUnknown puntatore dell'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 wrapper chiamabile runtime, che Common Language Runtime gestisce come fa 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 con associazione tardiva a un tipo di base di questo tipo, purché l'oggetto COM implementi l'interfaccia IDispatch . Analogamente, è possibile eseguire il cast dell'oggetto restituito in un'interfaccia COM appropriata.

Per eseguire il wrapping di un oggetto con un tipo di classe gestito specifico (e non un tipo di wrapper generico), è necessario rispettare i requisiti seguenti:

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

Si applica a

Vedi anche