DllMain() is the main callback interface to talk to the Win32 subsystem. Rather we can say Win32 subsystem talks to the DLL through DllMain() interface. Now please look at the short description of the DllMain() callback routine as below.

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_PROCESS_ATTACH when a new process attaches to DLL.
Also ul_reason_for_call = DLL_PROCESS_DETACH when a process terminates.

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.

#