IHolder ::Close, méthode (comsvcs.h)

Ferme le holder.

Syntaxe

HRESULT Close();

Valeur retournée

Si cette méthode réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT.

Remarques

Cela ferme le titulaire d’un distributeur de ressources, après quoi le distributeur de ressources a probablement été libéré.

Avant la fermeture, tout inventaire restant est détruit en rappelant la méthode IDispenserDriver ::D estroyResource du distributeur de ressources.

La séquence suivante décrit comment fermer un distributeur de ressources :

  1. Obtenez une référence au distributeur de ressources (l’objet qui expose IDispenserDriver).
  2. Appelez une méthode dans Resource Dispenser dont l’implémentation appelle IHolder ::Close.
  3. IHolder ::Close détruit tout inventaire restant en rappelant la méthode IDispenserDriver ::D estroyResource du distributeur de ressources.
  4. IHolder ::Close appelle le gestionnaire de distribution pour supprimer ce titulaire de la liste Holder. (Si aucun titulaire n’est conservé, l’objet Gestionnaire du distributeur se supprime lui-même.)
  5. IHolder ::Close publie sa référence à l’interface IDispenserDriver de Resource Dispenser. C’est la raison pour laquelle vous avez besoin d’une référence à l’étape 1 ; dans le cas contraire, le distributeur de ressources se supprimerait prématurément avant que les étapes suivantes ne puissent être effectuées.
  6. IHolder ::Close retourne au distributeur de ressources.
  7. Le distributeur de ressources appelle IDispenserDriver ::D estroyResource. Le titulaire se supprime maintenant.
  8. La méthode appelée à l’étape 2 retourne maintenant.
  9. Relâchez votre référence finale au distributeur de ressources, qui se supprime désormais lui-même.
Notez que la méthode IDispenserManager ::RegisterDispenser n’appelle pas AddRef sur son objet pDispenserDriver , mais IHolder ::Close effectue une mise en production sur pDispenserDriver. Cela peut entraîner la destruction prématuré de l’objet Resource Dispenser. Pour éviter cette destruction prématurée, l’appelant de IHolder ::Close doit contenir une référence à l’objet Resource Dispenser, comme décrit aux étapes 1 et 5.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête comsvcs.h

Voir aussi

IDispenserDriver

IDispenserManager

IHolder