EQuestionAnswers.com Computer/Electronics Questions and Answers
C, C++, VC++, COM/DCOM, DLL and more
#Login #Sign up  Facebook Twitter TGoogle+
 

#Previous question #Index of DLL Questions #Next question

Let us first examine the entry point of Application and a Dynamic Link library.
Application WinMain() entry point

Prototype:

BOOL WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nShowCmd);
Return value: 0 for success, non zero for error.
hInstance - Current instance handle of the application
hPrevInstance - Previous instance handle of the application
lpCmdLine - command line argument string
nShowCmd - top window show attribute

DLL entry point 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.

Now from the above description it is clear that when we execute an EXE OS creates an instance handle and passes by hInstance argument. For next creation it passes current instance handle to hInstance and previous instance by hPrevInstance. Thus every time a new application instance is created, OS creates a new instance for it.

This is not true for dynamic link library. From the entry point it is clear that it only has one instance handle hModule and Win32 subsystem calls this function every time with a valid reason via ul_reason_for_call. Reasons are new process attachment, process detachment, new thread attachment and thread detachment.

DLL code is common thus there is no need to load it every time an application launches. OS maintains a single loaded instance through out the lifetime even if more than one process loads it. It reduces memory usage at runtime. When there is no application that uses a particular DLL or all the client applications are terminated then OS unloads the DLL from memory.

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

 Vote 0

Similar topics related to this section

# DLL Frequently Asked Questions
# Frequently Asked Questions - DLL-files.com
# Dependency Walker Frequently Asked Questions (FAQ)
# Top 10 DLL Questions !
# DLL COM DCOM Interview Questions and Answers

* #1 webmaster Thu 27 Feb/2014 20:46:31(GMT)  Like 0 Unlike 0

Dear Users,

We are pleased to inform you that a forum/blog has been incorporated with www.mybestnotes.co.in. You are welcomed to add your comments, requests, codes, solutions and feedback to it. Please login(if already a member) or signup(for free) to avail to this facility.

Regards,
Webmaster

Your message goes here:

Name:Guest
Email:anonymous@unknown.com
My Post:*
Secutiry Code: ******  *
Preview this compose before posting this in discussion forum.
 
Note:
  1. Use [Sxx] code to show smiles. Example [S02]
  2. Use [URL ], example [URL http://www.google.com/]
  3. To display code or un formatted text use [CODE] [/CODE]. Example: [CODE] printf("Hello world"); [/CODE]
 [S01]   [S02]   [S03]   [S04]   [S05]   [S06]   [S07]   [S08] 
 [S09]   [S10]   [S11]   [S12]   [S13]   [S14]   [S15]   [S16] 
 [S17]   [S18]   [S19]   [S20]   [S21]   [S22]   [S23]   [S24] 

Note: Only members are allowed, * fields are mandatory.