Format
unsigned long __stdcall
_DLL_InitTerm(HINSTANCE modhandle,
DWORD flag, LPVOID dummy);
/* no header file - defined in runtime startup code */
Language Level: Extension
_DLL_InitTerm is the initialization and termination entry point
for a DLL. When each new process or thread gains access to the
DLL, _DLL_InitTerm initializes the necessary environment for the
DLL, including storage, semaphores, and variables. When each
process or thread frees its access to the DLL, _DLL_InitTerm
terminates the DLL environment created for that process or
thread.
The default _DLL_InitTerm function supplied by IBM C and C++ Compilers performs the actions required to initialize and terminate the runtime environment, or for subsystem DLLs, to initialize and terminate memory functions. It is called automatically when you link to the DLL. If your DLL requires initialization or termination actions in addition to the actions performed in the default function, you will need to create your own _DLL_InitTerm function.
If the
value of the flag parameter, on OS/2, is 0, the DLL
environment is initialized. If the value of the flag parameter is
1, the DLL environment is ended.
On
Windows, the flag parameter has four values defined in
windows.h. If the value of the flag parameter is:
| DLL_PROCESS_ATTACH | The DLL environment is initialized |
| DLL_PROCESS_DETACH | The DLL environment is ended |
| DLL_THREAD_ATTACH | A new thread that can access the DLL has been created in the process. |
| DLL_THREAD_DETACH | A thread has terminated |
The modhandle parameter is the module handle assigned by the operating system for this DLL. For Windows, you can use the module handle as a parameter to various Win32 API calls. For example, you can call GetModuleFileName with the module handle to return the fully-qualified path name of the DLL, which tells you where the DLL was loaded from.
On
OS/2, you can use the module handle as a parameter to various
OS/2 API calls. For example, you can call DosQueryModuleName with
the module handle to return with the fully-qualified path name of
the DLL, which tells you where the DLL was loaded from. Because
it is called by the operating system loader, you must compile
your _DLL_InitTerm function with _System linkage.
On
Windows, because it is called by the operating system loader, you
must compile your _DLL_InitTerm function with __stdcall linkage.
Note: A _DLL_InitTerm function for a subsystem DLL has the same prototype, but the content of the function is different because there is no runtime environment to initialize or terminate.
Return Value
The return code is significant only when the value of
the flag parameter is DLL_PROCESS_ATTACH. The return code from
_DLL_InitTerm tells the loader if the initialization was
performed successfully. If the call was successful, _DLL_InitTerm
returns a nonzero value. A return code of 0 indicates that the
function failed. If a failure is indicated, the loader will not
load the program that is accessing the DLL.
This function is also called by the operating system in thread creation and termination. When the value of the flag parameter is DLL_THREAD_ATTACH, a new THREAD has been created in the process. When the value of the flag parameter is DLL_THREAD_DETACH, a thread has terminated.
![]()
_CRT_init -- Initialize DLL Runtime
Environment
_CRT_term -- Terminate DLL
Runtime Environment
_rmem_init -- Initialize Memory
Functions for Subsystem DLL
_rmem_term -- Terminate Memory
Functions for Subsystem DLL
_tmem_init -- Initialize Memory
Functions for Subsystem DLL
_tmem_term -- Terminate Memory
Functions for Subsystem DLL
/Ge compiler option