Table of Contents

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

2021/09/17 04:47 · prokushev · 0 Comments
2021/08/20 03:18 · prokushev · 0 Comments

DosGetProcAddr

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

Syntax

DosGetProcAddr (ModuleHandle, ProcName, ProcAddress)

Parameters

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.

Return Code

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

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