Fonctions d’assistance de création d’instance
Dans les versions précédentes de COM, le mécanisme principal utilisé pour créer une instance d’objet était la fonction CoCreateInstance. Cette fonction encapsule le processus de création d’un objet de classe, à l’aide de celle-ci pour créer une instance et libérer l’objet de classe. Une autre fonction de ce type est la oleCreateplus spécifique, l’assistance de document composé OLE qui crée un objet de classe et récupère un pointeur vers un objet demandé.
Pour faciliter le processus de création d’instances sur les systèmes distribués, COM a introduit quatre mécanismes importants de création d’instance :
- Monikers de classe et IClassActivator
- CoCreateInstanceEx
- CoGetInstanceFromFile
- CoGetInstanceFromIStorage
Un moniker de classe vous permet d’identifier la classe d’un objet et est généralement utilisé avec un autre moniker, comme un moniker de fichier, pour indiquer l’emplacement de l’objet. Cela vous permet de lier à un objet et de spécifier le serveur à lancer pour cet objet. Les monikers de classe peuvent également être composés à droite des monikers prenant en charge la liaison à l’interface IClassActivator. Pour plus d’informations, consultez Monikers de classe.
CoCreateInstanceEx étend CoCreateInstance pour permettre de créer un seul objet non initialisé associé au CLSID donné sur un ordinateur distant spécifié. En outre, au lieu de demander une seule interface et d’obtenir un pointeur unique vers cette interface, CoCreateInstanceEx permet d’interroger plusieurs interfaces et (le cas échéant) de recevoir des pointeurs vers eux dans un seul aller-retour, ce qui permet d’effectuer moins d’allers-retours entre les machines. Cela peut rendre l’interaction d’objet distant beaucoup plus efficace. Pour ce faire, la fonction utilise un tableau de structures MULTI_QI.
La création d’un objet via CoCreateInstanceEx nécessite toujours que l’objet soit initialisé via un appel à l’une des interfaces d’initialisation (par exemple, IPersistStorage ::Load). Les fonctions d’assistance CoGetInstanceFromFile et CoGetInstanceFromIStorage encapsulent à la fois la puissance de création d’instance de CoCreateInstanceEx et l’initialisation, l’ancienne d’un fichier et celle-ci à partir d’un stockage.
Rubriques connexes