Можно ли заменить DllMain в компоненте среды выполнения Windows на C / CX?

#c #dll #windows-runtime #c -cx #etw

#c #dll #windows-среда выполнения #c -cx #etw

Вопрос:

Я использую трассировку WPP и должен вызывать служебные макросы WPP_INIT_TRACING и WPP_CLEANUP в соответствующее время.
Рекомендация для обычной библиотеки DLL на C — сделать это в DllMain процессе присоединения / отсоединения.

Поскольку C / CX скрывает DllMain внутреннюю vccorlib часть, есть ли «безопасный» способ, которым я мог бы переопределить этот DllMain своим собственным и передавать вызовы в vccorlib после того, как я выполнил свои вызовы WPP?

Комментарии:

1. Хм, нет, vccorlib имеет обычную точку входа, __DllMainCRTStartup@12. Добавление собственного DllMain не является проблемой. Вы действительно пробовали это? Затем покажите нам и сообщите нам, что пошло не так.

2. Спасибо. По какой-то причине я обманул себя, полагая, что это невозможно при чтении MSDN. Вы правы, добавление DllMain работает нормально.

3. Здесь был бы потрясающий пример. Я получаю ошибки компоновщика при предоставлении собственного определения.

4. Nvm, просто пришлось перестроить. Похоже, эта подпись делает это: BOOL WINAPI DllMain(_In_ HINSTANCE inst, _In_ DWORD reason, _In_opt_ void* pvreserved)