Marshal.GetObjectForIUnknown(IntPtr) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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
pUnk
è Zero.
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:
Implementare l'interfaccia IProvideClassInfo per l'oggetto COM.
Registrare l'assembly contenente con l' Regasm.exe (strumento di registrazione assembly).
In alternativa, è possibile evitare questi requisiti e ottenere comunque un oggetto con un tipo di classe gestito specifico usando il Marshal.GetTypedObjectForIUnknown metodo .