This is part of Family API which allow to create dual-os version of program runs under OS/2 and DOS

Note: This is legacy API call. It is recommended to use 32-bit equivalent

DosGetProcAddr

This call returns a far address to a desired procedure within a dynamic link module.

Syntax

DosGetProcAddr (ModuleHandle, ProcName, ProcAddress)

Parameters

ModuleHandle (HMODULE) - input: Handle of the dynamic link module.

ProcName (PSZ) - input: Address of a name string that contains the referenced procedure name.

Alternatively, if the selector portion of the pointer is null, the offset portion of the pointer is an explicit entry number (ordinal) within the dynamic link module.

DosGetProcAddr for entries within the DOSCALLS module are only supported for ordinal references. References to the DOSCALLS module by name strings are not supported and return an error. Dynamic link ordinal numbers for DOSCALLS routines are resolved by linking with DOSCALLS.LIB.

ProcAddress (PFN FAR *) - output: Procedure address.

Return Code

rc (USHORT) - return:Return code descriptions are:

0 NO_ERROR

6 ERROR_INVALID_HANDLE

95 ERROR_INTERRUPT

127 ERROR_PROC_NOT_FOUND

Remarks

A 32-bit address, consisting of a selector and offset, is returned for a specified procedure.

To free the dynamic link module, issue DosFreeModule. After DosFreeModule is issued, procedure entry addresses returned for this handle or no longer valid.

Other run-time dynamic link calls are DosLoadModule, DosGetModName, and DosGetModHandle.

Bindings

C

#define INCL_DOSMODULEMGR USHORT rc = DosGetProcAddr(ModuleHandle, ProcName, ProcAddress); HMODULE ModuleHandle; /* Module handle */ PSZ ProcName; /* Module name string */ PFN FAR *ProcAddress; /* Procedure address (returned) */ USHORT rc; /* return code */

MASM

EXTRN DosGetProcAddr:FAR INCL_DOSMODULEMGR EQU 1 PUSH WORD ModuleHandle ;Module handle PUSH@ ASCIIZ ProcName ;Module name string PUSH@ DWORD ProcAddress ;Procedure address (returned) CALL DosGetProcAddr Returns WORD

http://www.edm2.com/index.php/DosGetProcAddr

Family API
DOS	Process Manager	DosBeep DosExit DosSleep DosExecPgm
File Manager	DosChDir DosChgFilePtr DosClose DosDelete DosDupHandle DosMkDir DosMove DosQCurDir DosQCurDisk DosSetFileMode DosOpen DosQFileInfo DosRead DosQFileMode DosQFSInfo DosQVerify DosRmDir DosSelectDisk DosFindClose DosFindFirst DosFindNext DosSetFileInfo DosSetVerify DosWrite DosFileLocks DosSetFHandState DosNewSize DosBufReset DosQFHandState DosSetFSinfo DosShutdown
Memory Manager	DosFreeSeg DosSubAlloc DosSubFree DosSubSet DosAllocHuge DosAllocSeg DosReallocHuge DosReallocSeg DosGetHugeShift DosCreateCSAlias
NLS	DosCaseMap DosGetCtryInfo DosGetDBCSEv DosSetCtryCode DosGetCollate DosGetMessage DosInsMessage DosPutMessage
Date and Time	DosSetDateTime DosGetDateTime
Devices	DosDevConfig DosDevIOCtl DosDevIOCtl2
Signals	DosHoldSignal DosSetSigHandler
Misc	BadDynLink DosGetEnv DosGetMachineMode DosGetVersion DosError DosErrClass DosSetVec
KBD	KbdCharIn KbdFlushBuffer KbdGetStatus KbdSetStatus KbdStringIn KbdPeek
VIO	VioGetBuf VioGetConfig VioGetCurPos VioGetCurType VioGetPhysBuf VioReadCellStr VioReadCharStr VioScrollUp VioScrollDn VioScrollLf VioScrollRt VioScrUnLock VioSetCurPos VioSetCurType VioSetMode VioGetMode VioShowBuf VioWrtCellStr VioWrtCharStr VioWrtCharStrAtt VioWrtNAttr VioWrtNCell VioWrtNChar VioWrtTTY VioScrLock VioPopUp
Tools	BIND
Modules	DOSCALLS.DLL VIOCALLS.DLL KBDCALLS.DLL MSG.DLL
Libraries	API.LIB OS2386.LIB FAPI.LIB DOSCALLS.LIB SUBCALLS.LIB