Когда DllMain будет вызываться с флагом DLL_PROCESS_VERIFIER?
Вопрос
В Windows стандартная точка входа DLL называется DllMain.Второй параметр — DWORD, ul_reason_for_call
.
Я посмотрел возможные значения этого второго параметра в MSDN.Очевидно следующее:
DLL_PROCESS_ATTACH:
DLL_THREAD_ATTACH:
DLL_THREAD_DETACH:
DLL_PROCESS_DETACH:
Но что насчет:
DLL_PROCESS_VERIFIER
Когда будет вызвана точка входа с этим флагом?Стоит ли мне беспокоиться об этом во время «нормальной» работы DLL?
Обратите внимание, что я вижу только DLL_PROCESS_VERIFIER
в файлах заголовков Visual Studio 2005, а не 2008.
Решение
Я предполагаю, что теоретически Microsoft может изобрести новые способы использования и флаги в любой момент, когда почувствует, что им нужны новые.Поэтому простое правило — убедиться, что ваш код допускает неожиданные значения:то естьнапишите его, чтобы обрабатывать те случаи, которые вам нужно обработать, и игнорируйте остальные, возвращая ноль.
Другие советы
Это действительно неясно.Это никогда не документируется в SDK и не отображается в файлах заголовков SDK.Google производит лишь несколько обращений, большинство сайтов не работают или не заслуживают доверия.Единственный приличный успех, который я получаю, - это код XBox, он только объявляет его, но на самом деле не использует.
Я недостаточно убежден, что это реальный код, который вы когда-либо могли встретить в обычной программе Windows.
Я думаю, что это может иметь ценность, если оно будет пройдено. Верификатор приложений.Типа догадалась :)