Partager via


Wrapper pouvant être appelé par COM

Mise à jour : novembre 2007

Lorsqu'un client COM appelle un objet .NET, le Common Language Runtime crée l'objet managé et un wrapper CCW (COM Callable Wrapper) pour cet objet. Ne pouvant pas référencer directement un objet .NET, les clients COM utilisent le wrapper CCW en tant que proxy pour le code managé.

Le runtime crée exactement un wrapper CCW pour chaque objet managé, indépendamment du nombre de clients COM demandant ses services. Comme le montre l'illustration suivante, plusieurs clients COM peuvent contenir une référence au wrapper CCW qui expose l'interface INew. Le wrapper CCW, à son tour, contient une référence unique à l'objet managé qui implémente l'interface et est récupéré par le garbage collector. Aussi bien les clients COM que .NET peuvent présenter simultanément des demandes portant sur le même objet managé.

Accès aux objets .NET par l'intermédiaire du wrapper CCW (COM Callable Wrapper)

Wrapper CCW (COM Callable Wrapper)

Les wrappers CCW (COM Callable Wrapper) sont invisibles aux autres classes s'exécutant dans l'environnement .NET Framework. Leur objectif principal est de marshaler les appels entre le code managé et le code non managé ; cependant, les wrappers CCW gèrent également l'identité et la durée de vie des objets managés qu'ils encapsulent.

Identité de l'objet

Le runtime alloue de la mémoire à l'objet .NET à partir du tas obtenu à l'issue d'une opération garbage collection ; le runtime peut ainsi déplacer l'objet dans la mémoire si nécessaire. En revanche, le runtime alloue de la mémoire au wrapper CCW à partir d'un tas non récupéré, ce qui permet aux clients COM de faire référence directement au wrapper.

Durée de vie de l'objet

Contrairement au client .NET qu'il enveloppe, le wrapper CCW fait l'objet d'un décompte de références selon le mode COM standard. Quand le décompte de références du wrapper CCW atteint zéro, le wrapper libère sa référence à l'objet managé. Un objet managé sans aucune référence restante est collecté lors du cycle garbage collection suivant.

Voir aussi

Concepts

Wrappers COM

Simulation d'interfaces COM

Wrapper pouvant être appelé par le runtime

Exposition de composants .NET Framework à COM

Référence

Wrapper CCW (COM Callable Wrapper)