The entry point function DllMain() is the main callback interface for achieving this mechanism. We have to look into the prototype and description of arguments of DllMain()

Prototype:

BOOL APIENTRY DllMain( HANDLE hModule, 
DWORD  ul_reason_for_call, 
LPVOID lpReserved);
Return value: 0 for success, non zero for error.
APIENTRY tells the compiler that it is an external/exported function.
hModule - This is the instance handle of the Loaded DLL.
ul_reason_for_call - reason for calling this DllMain() from Win32 subsystem
lpReserved - reserved variable.

ul_reason_for_call can have the following values
  1. DLL_PROCESS_ATTACH, value 1
  2. DLL_THREAD_ATTACH, value 2
  3. DLL_THREAD_DETACH, value 3
  4. DLL_PROCESS_DETACH, value 0
From the argument value it is clear that ul_reason_for_call will have the value DLL_THREAD_ATTACH when a new thread attaches to the current process.
Also ul_reason_for_call = DLL_THREAD_DETACH when a thread terminates from the process.

About our authors: Team EQA

You have viewed 1 page out of 27. Your DLL learning is 0.00% complete. Login to check your learning progress.

#