Partager via


Processus d’allocation des ressources du distributeur de ressources

Chaque fois qu’un distributeur de ressources alloue une ressource de son détenteur, les éléments suivants se produisent :

  1. Le distributeur de ressources déclare un identificateur de type de ressource (RESTYPID), qui décrit le type de ressource requis.

  2. Le distributeur de ressources appelle la méthode IHolder::AllocResource du détenteur, en passant ce RESTYPID.

  3. Le titulaire génère une liste de candidats à partir des ressources disponibles. Les candidats sont des ressources qui ne sont pas inscrites dans une transaction ou déjà inscrites dans la transaction de l’objet appelant.

  4. Ces candidats sont transmis individuellement à la méthode IDispenserDriver::RateResource où ils sont évalués (sur une échelle de 0 à 100) selon la correspondance de la ressource candidate à la restyPID souhaitée.

  5. Le titulaire choisit la ressource que le distributeur de ressources évalue comme la plus élevée.

  6. Le distributeur de ressources peut mettre fin à la boucle d’évaluation plus tôt en affectant au candidat une évaluation de ressource de 100 (un ajustement parfait). Une cote de 100 serait normalement réservée aux ressources candidates qui sont déjà correctement inscrites, sauf si le distributeur de ressources conclut que l’inscription est une opération peu coûteuse. Si toutes les ressources candidates (le cas échéant) sont notées 0 (inutilisable), une nouvelle ressource est créée en appelant IDispenserDriver::CreateResource.

  7. Si la ressource choisie précédemment n’est pas déjà inscrite dans la transaction de l’objet appelant, la méthode IDispenserDriver::EnlistResource du distributeur de ressources est appelée.

  8. L’appel de méthode AllocResource retourne au distributeur de ressources avec la ressource inscrite.

Concepts du distributeur de ressources COM+

Inscription d’une ressource dans une transaction

Suivi des ressources non allouées