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 le 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 callable runtime, que le common language runtime gère comme n’importe quel 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 de wrapper est ambigu. Vous pouvez toujours effectuer des appels liés en retard à un tel type de base tant que l’objet COM implémente l’interface IDispatch . De même, vous pouvez caster l’objet retourné dans une interface COM appropriée.
Pour qu’un objet soit encapsulé avec un type de classe managé spécifique (et non un type de wrapper générique), vous devez respecter les exigences suivantes :
Implémentez l’interface IProvideClassInfo pour l’objet COM.
Inscrivez l’assembly contenant auprès de l'Regasm.exe (Outil d’inscription d’assembly).
Vous pouvez également éviter ces exigences et toujours obtenir un objet qui est encapsulé avec un type de classe managé spécifique à l’aide de la Marshal.GetTypedObjectForIUnknown méthode .