Реализация диспенсера ресурсов 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 обслуживаются из растущего пула ресурсов.
См. также