Fonctions d’assistance à la création d’instance

Dans les versions précédentes de COM, le mécanisme principal utilisé pour créer un objet instance était la fonction CoCreateInstance. Cette fonction encapsule le processus de création d’un objet de classe, en l’utilisant pour créer un instance et libérer l’objet de classe. Une autre fonction de ce type est oleCreate, plus spécifique, l’assistance de document composée 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 de instance sur des systèmes distribués, COM a introduit quatre nouveaux mécanismes importants de création de instance :

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 celles-ci dans un seul aller-retour, permettant ainsi 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 instance de CoCreateInstanceEx et l’initialisation, la première à partir d’un fichier et la seconde à partir d’un stockage.

Création d’un objet par le biais d’un objet Class