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.
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.
>> 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 !
>> 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.
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
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.
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.