Proceso de asignación de recursos del dispensador de recursos

Cada vez que un dispensador de recursos asigna un recurso de su titular, se produce lo siguiente:

  1. El dispensador de recursos declara un identificador de tipo de recurso (RESTYPID), que describe el tipo de recurso necesario.

  2. El dispensador de recursos llama al método IHolder::AllocResource del titular, pasando este RESTYPID.

  3. El titular genera una lista de candidatos a partir de los recursos disponibles. Los candidatos son recursos que no están inscritos en una transacción o que ya están inscritos en la transacción del objeto que realiza la llamada.

  4. Estos candidatos se pasan individualmente al método IDispenserDriver::RateResource en el que se clasifican (en una escala de 0 a 100) por el nivel en que el recurso candidato coincide con el RESTYPID deseado.

  5. El titular elige el recurso que el dispensador de recursos clasifica como máximo.

  6. El dispensador de recursos puede terminar el bucle de clasificación al principio asignando al candidato una clasificación de recursos de 100 (un ajuste perfecto). Normalmente, una clasificación de 100 se reservaría para los recursos candidatos que ya están debidamente inscritos, a menos que el dispensador de recursos concluye que la inscripción es una operación económica. Si todos los recursos candidatos (si existen) tienen una clasificación 0 (inutilizable), se crea un nuevo recurso mediante una llamada a IDispenserDriver::CreateResource.

  7. Si el recurso elegido anteriormente no está ya inscrito en la transacción del objeto que realiza la llamada, se llama al método IDispenserDriver::EnlistResource del dispensador de recursos.

  8. La llamada al método AllocResource vuelve al dispensador de recursos con el recurso inscrito.

Conceptos del dispensador de recursos COM+

Dar de alta un recurso en una transacción

Seguimiento de recursos no asignados