OVH Cloud OVH Cloud

CoCreateInstance

3 réponses
Avatar
PurL
Bonjour,

Quand on créé une instance d'un objet COM avec CoCreateInstance, comment
détruit-on cette dernière ?

Merci,

PurL

3 réponses

Avatar
Christian ASTOR
PurL a écrit:


Quand on créé une instance d'un objet COM avec CoCreateInstance, comment
détruit-on cette dernière ?



ppv->Release() pour décrémenter le compteur de reference.
Avatar
PurL
>> Quand on créé une instance d'un objet COM avec CoCreateInstance,
comment détruit-on cette dernière ?



ppv->Release() pour décrémenter le compteur de reference.



OK, c'est ce que j'ai cru comprendre dans MSDN.
Mais le pb reste entier, je m'explique :
Je créé un objet COM avec CoCreateInstance, et aprés je récupère des
interfaces avec QueryInterface (7 en tous) (qui d'apres MSDN, incrémente
aussi le compteur de référence).
Quand je veux le supprimer, je fais : while (ppv->Release());

C'est bon ? je pense que oui mais je dois oublier qqch car l'objet reste en
mémoire :(
De plus avec CoCreateInstance et QueryInterface, je devrais avoir 8 boucles
de Release mais j'en ai que 2 !

Merci pour votre aide,

PurL.
Avatar
Arnaud Debaene
PurL wrote:
Quand on créé une instance d'un objet COM avec CoCreateInstance,
comment détruit-on cette dernière ?



ppv->Release() pour décrémenter le compteur de reference.



OK, c'est ce que j'ai cru comprendre dans MSDN.
Mais le pb reste entier, je m'explique :
Je créé un objet COM avec CoCreateInstance, et aprés je récupère des
interfaces avec QueryInterface (7 en tous) (qui d'apres MSDN,
incrémente aussi le compteur de référence).
Quand je veux le supprimer, je fais : while (ppv->Release());

C'est bon ?



Non : tu fais un Release sur chaque interface obtenue par QueryInterface ou
CoCreateInstance, et également un Release pour chaque AddRef.

Arnaud