Когда DllMain будет вызываться с флагом DLL_PROCESS_VERIFIER? - PullRequest
3 голосов
/ 15 марта 2010

В 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.

Ответы [ 3 ]

5 голосов
/ 15 марта 2010

Я полагаю, что теоретически Microsoft могла бы придумывать новые способы использования и флаги в любое время, когда они чувствуют, что нуждаются в новом. Таким образом, простое правило состоит в том, чтобы гарантировать, что ваш код допускает непредвиденные значения: напишите его для обработки случаев, которые вам нужно обработать, и игнорируйте остальные, возвращая ноль.

1 голос
/ 15 марта 2010

Это действительно неясно. Он никогда не документируется в SDK и не появляется в заголовочных файлах SDK. Google производит только несколько просмотров, большинство сайтов не работают или не заслуживают доверия. Единственный достойный удар, который я получаю, это код XBox, он только объявляет его, но фактически не использует его.

Я недостаточно убежден, что это настоящий код, с которым вы когда-либо сталкивались в обычной программе Windows.

0 голосов
/ 15 марта 2010

Я думаю, что тогда он может иметь значение, если он проходит через Application Verifier . Вид угадывания:)

...