Marshal.GetObjectForIUnknown(IntPtr) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Retourne une instance d’un type qui représente un objet COM par un pointeur vers son 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
Paramètres
- pUnk
-
IntPtr
nativeint
Pointeur vers l'interface IUnknown.
Retours
Objet qui représente l’objet COM non managé spécifié.
- Attributs
Exceptions
pUnk a la valeur Zero.
Remarques
Cette méthode est encapsulé IUnknown dans un objet managé. Cela a pour effet d’incrémenter le nombre de références du composant COM. Le nombre de références est décrémenté lorsque le runtime effectue un garbage collection sur l’objet managé qui représente l’objet COM.
Le pUnk paramètre représente un pointeur d’interface IUnknown ; toutefois, étant donné que toutes les interfaces COM dérivent directement ou indirectement de IUnknown, vous pouvez passer n’importe quelle interface COM à cette méthode. L’objet retourné par GetObjectForIUnknown est un wrapper pouvant être appelé au runtime, que le Common Language Runtime gère comme il le fait tout autre objet managé. Le type de ce wrapper est souvent un type de base System.__ComObject , qui est un type masqué utilisé lorsque le type wrapper est ambigu. Vous pouvez toujours effectuer des appels à liaison tardive vers un tel type de base tant que l’objet COM implémente l’interface IDispatch . De même, vous pouvez convertir l’objet retourné en une interface COM appropriée.
Pour qu’un objet soit encapsulé avec un type de classe managé spécifique (et non un type wrapper générique), vous devez respecter les exigences suivantes :
Implémentez l’interface IProvideClassInfo pour l’objet COM.
Inscrivez l’assembly conteneur auprès de l' Regasm.exe (outil d’inscription d’assembly).
Vous pouvez également éviter ces exigences et obtenir un objet encapsulé avec un type de classe managé spécifique à l’aide de la Marshal.GetTypedObjectForIUnknown méthode.