[ Home | Alpha index | Topic index | Tutorials | Download | Feedback ]

The OS/2 API Project

DosLoadModule

[ Syntax | Params | Returns | Include | Usage | Structs | Gotchas | Code | Also ]

Syntax

rc = DosLoadModule( pszObjectNameBuffer, ulObjectNameBufferLength, pszModuleName, phMod );

Parameters

PSZ pszObjectNameBuffer (output)
Address to a buffer into which in case of failure the name of the object that caused the failure is placed.

ULONG ulObjectNameBufferLength (input)
Size of the pszObjectNameBuffer.

PSZ pszModuleName (input)
Name of the DLL to be loaded.

PHMODULE phMod (output)
Pointer to the handle for the module.

Returns

APIRET rc
Indicates if any error occured.
0NO_ERROR
2ERROR_FILE_NOT_FOUND
3ERROR_PATH_NOT_FOUND
4ERROR_TOO_MANY_OPEN_FILES
5ERROR_ACCESS_DENIED
8ERROR_NOT_ENOUGH_MEMORY
11ERROR_BAD_FORMAT
26ERROR_NOT_DOS_DISK
32ERROR_SHARING_VIOLATION
33ERROR_LOCK_VIOLATION
36ERROR_SHARING_BUFFER_EXCEEDED
95ERROR_INTERRUPT
108ERROR_DRIVE_LOCKED
123ERROR_INVALID_NAME
127ERROR_PROC_NOT_FOUND
180ERROR_INVALID_SEGMENT_NUMBER
182ERROR_INVALID_ORDINAL
190ERROR_INVALID_MODULETYPE
191ERROR_INVALID_EXE_SIGNATURE
192ERROR_EXE_MARKED_INVALID
194ERROR_ITERATED_DATA_EXCEEDS_64K
195ERROR_INVALID_MINALLOCSIZE
196ERROR_DYNLINK_FROM_INVALID_RING
198ERROR_INVALID_SEGDPL
199ERROR_AUTODATASEG_EXCEEDS_64K
201ERROR_RELOCSRC_CHAIN_EXCEEDS_SEGLIMIT
206ERROR_FILENAME_EXCED_RANGE
295ERROR_INIT_ROUTINE_FAILED

Include Info

#define INCL_DOSMODULEMGR
#include <os2.h>

Usage Explanation

DosLoadModule tries to load a dynamic link module. If the module is an OS/2 dynamic link module then the module is loaded and a handle to the module is returned.

Relevant Structures

Gotchas

pszModuleName MUST NOT contain the .DLL extension if the DLL is to be loaded from the LIBPATH. On the other hand, if the DLL has to be loaded from a specific directory (i.e. not from the LIBPATH) then the .DLL extension is needed.

Sample Code

HMODULE hmod; APIRET rc = 0; UCHAR szErrorName[CCHMAXPATH]; /* CCHMAXPATH defined in bsedos.h */ /* Load module. */ /* Try in same directory. */ rc=DosLoadModule(szErrorName, CCHMAXPATH-1, ".\\mydll.dll", &hmod); if (rc) { /* Failure? */ printf("Error in %s. Cannot load the DLL. DosLoadModule returned %d.\n", szErrorName, rc); return(-1); } /* Query process addresses with DosQueryProcAddr() */ /* Free module with DosFreeModule(hmod) */

See Also

DosFreeModule, DosQueryProcAddr

Author

Oscar Gustafsson - oscar@lysator.liu.se

Additions

Avi Schwartz -- avi@mcs.com

Last modified March 7/1996
Please send all errors, comments, and suggestions to: timur@vnet.ibm.com

The OS/2 API Project

DosLoadModule