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