Реализация диспенсера ресурсов COM+
Ниже описана общая процедура реализации диспенсера ресурсов COM+:
Определите формат RESTYPID , который классифицирует, как ресурсы отличаются друг от друга.
Используйте файл заголовка Mtxdm.h и mtxdm.lib соответственно.
Создайте библиотеку DLL, реализующую интерфейс IDispenserDriver и API, который требуется предоставить приложениям.
При запуске (DllMain или первом вызове API диспенсера) вызовите функцию GetDispenserManager . Возвращает указатель на интерфейс IDispenserManager диспетчера диспенсера.
Вызовите IDispenserManager::RegisterDispenser, передав указатель на реализацию IDispenserDriver. Это приводит к созданию держателя (диспетчера пула) диспетчера ресурсов, а затем возврату указателя на интерфейс IHolder .
Сохраните этот указатель, чтобы можно было вызвать IHolder::AllocResource и IHolder::FreeResource.
Теперь вы можете (в ответ на вызовы API) совершать вызовы AllocResource и FreeResource. AllocResource изначально отвечает, вызывая метод CreateResource , но последующие вызовы AllocResource обслуживаются из растущего пула ресурсов.
Связанные темы