c++windowswinapidlldllmain

When will DllMain be called with the DLL_PROCESS_VERIFIER flag?


On Windows, the standard DLL entry point is called DllMain. The second parameter is a DWORD, ul_reason_for_call.

I have looked up the possible values for this second parameter on MSDN. The following are obvious:

DLL_PROCESS_ATTACH:
DLL_THREAD_ATTACH:
DLL_THREAD_DETACH:
DLL_PROCESS_DETACH:

But what about:

DLL_PROCESS_VERIFIER

When will the entry point be called with this flag? Should I worry about it during 'normal' operation of the DLL?

Note that I only see DLL_PROCESS_VERIFIER in header files from Visual Studio 2005, not 2008.


Solution

  • I guess in theory Microsoft could invent new usages and flags any time they feel they need a new one. So the simple rule is to ensure that your code tolerates unexpected values: i.e. write it to handle the cases that you need to handle and ignore the rest, by returning zero.