Processo de alocação de recursos do dispensador de recursos

Cada vez que um dispensador de recursos aloca um recurso de seu titular, ocorre o seguinte:

  1. O dispensador de recursos declara um identificador de tipo de recurso (RESTYPID), que descreve o tipo de recurso necessário.

  2. O dispensador de recursos chama o método IHolder::AllocResource do titular, passando este RESTYPID.

  3. O titular gera uma lista de candidatos a partir dos recursos disponíveis. Os candidatos são recursos que não estão inscritos em uma transação ou já estão inscritos na transação do objeto de chamada.

  4. Esses candidatos são passados individualmente para o método IDispenserDriver::RateResource, onde são classificados (em uma escala de 0 a 100) pelo quão bem o recurso candidato corresponde ao RESTYPID. desejado.

  5. O titular escolhe o recurso que o dispensador de recursos classifica como mais alto.

  6. O dispensador de recursos pode encerrar o ciclo de classificação mais cedo, atribuindo ao candidato uma classificação de recurso de 100 (um ajuste perfeito). Uma classificação de 100 normalmente seria reservada para recursos candidatos que já estão devidamente alistados, a menos que o dispensador de recursos conclua que o alistamento é uma operação barata. Se todos os recursos candidatos (se houver) forem classificados como 0 (inutilizáveis), um novo recurso será criado chamando IDispenserDriver::CreateResource.

  7. Se o recurso escolhido anteriormente ainda não estiver inscrito na transação do objeto de chamada, o método IDispenserDriver::EnlistResource do dispensador de recursos será chamado.

  8. A chamada do método AllocResource retorna ao dispensador de recursos com o recurso alistado.

Conceitos de Dispensador de Recursos COM+

Inscrevendo um recurso em uma transação

Rastreando recursos não alocados