Я работаю над приложением, которое внедряет dll при запуске процесса (Suspend --> Inject --> Resume) Самый первый вызов в DllMain с DLL_PROCESS_ATTACH (во внедренной dll) – это вызов MessageBox( ) (только для целей отладки). Однако этот вызов MessageBox() иногда выдает ошибку и приводит к сбою внедренного процесса.
Ошибка выполнения!
Программа: C:\Program Files\Microsoft Office\Office14\OUTLOOK.EXE
R6030
- CRT не инициализирован
Это воспроизводимо, например, с Outlook и Winword. Хотя Блокнот, IE, CMD, Calc и многие другие - распечатайте окно сообщения и продолжайте нормально.
Печать окна сообщения для меня не обязательна, поэтому я просто хочу иметь возможность проверить, выполнила ли CRT инициализацию или нет, чтобы я мог продолжить как обычно:
case DLL_PROCESS_ATTACH:
if (IsCRTInitialized())
MessageBox(...);
Пожалуйста, дайте мне знать, если какая-то информация отсутствует. Спасибо!