Newsgroups: comp.os.os2.programmer
Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!clarkson!grape.ecs.clarkson.edu!towfiq
From: towfiq@FTP.COM (Mark Towfiq)
Subject: Re: Library Utility
Reply-To: towfiq@FTP.COM
Organization: FTP Software, Inc., Wakefield, MA
Distribution: na
Date: 29 May 91 12:18:57
Message-ID: <TOWFIQ.91May29121857@babyoil.FTP.COM>
In-Reply-To: jwh@bodwin.citi.umich.edu's message of 28 May 91 13:41:07 GMT
References: <1991May22.154137.7871@terminator.cc.umich.edu>
	<TOWFIQ.91May24142256@babyoil.FTP.COM>
	<1991May28.134107.12639@terminator.cc.umich.edu>
Sender: usenet@grape.ecs.clarkson.edu

>>>>> On 28 May 91 13:41:07 GMT, jwh@bodwin.citi.umich.edu (Jim Howe) said:

Jim> I am programming with Smalltalk V/PM.  In order to access certain
Jim> functions (mostly in DOSCALLS) the ordinal number is needed to
Jim> access the function.  The EXEHDR utility is not helpful for this
Jim> problem.  There are only a handful of functions whose names appear
Jim> in the DLL.

Aha!  I now see what you are talking about!

Jim> I've managed to use a hex editor on the os2.lib file and figure
Jim> out where to get the ordinal number for a function.  What I
Jim> haven't been able to easily figure out is what the best way would
Jim> be to dump the ordinal information from the os2.lib file into an
Jim> easily read format.

Well, I figured out a klugey kind of way, but it works!

Jim> Someone has mentioned that the second part of a lib listing shows
Jim> the functions in ordinal order.

I'm not sure that's true.

Jim> As long as there aren't any gaps in the assignment of ordinal
Jim> numbers examining this list with an editor that shows line
Jim> numbers would be one way to go.

I wouldn't rely on that method, though.  Here's what I did (it took a
few minutes):

1) created a file os2.lis from os2.lib using the LIB utility

2) using an Epsilon editor macro, for just the first set of routines
(which, by inspection of os2.lib, are the ones which reside in
DOSCALLS), I created matching C definitions and calls of the type

extern PASCAL FAR DOSCLOSE();
.
.
.
DOSCLOSE();

3) I put a main() and some other calls around these 400-odd DOS calls,
and then compiled and linked with the /MAP directive, producing a map
file, the important part of which I include below:

  Address         Publics by Name

 0000:0000  Imp  DBGETKVAR            (DOSCALLS.109)
 0000:0000  Imp  DBGETOWNER           (DOSCALLS.117)
 0000:0000  Imp  DBMEMFREE            (DOSCALLS.116)
 0000:0000  Imp  DBMEMLOCK            (DOSCALLS.112)
 0000:0000  Imp  DBMEMREALLOC         (DOSCALLS.115)
 0000:0000  Imp  DBMEMUNLOCK          (DOSCALLS.113)
 0000:0000  Imp  DBPHYSINFO           (DOSCALLS.118)
 0000:0000  Imp  DBSEGALLOC           (DOSCALLS.114)
 0000:0000  Imp  DOSALLOCHUGE         (DOSCALLS.40)
 0000:0000  Imp  DOSALLOCSEG          (DOSCALLS.34)
 0000:0000  Imp  DOSALLOCSHRSEG       (DOSCALLS.35)
 0000:0000  Imp  DOSBEEP              (DOSCALLS.50)
 0000:0000  Imp  DOSBUFRESET          (DOSCALLS.56)
 0000:0000  Imp  DOSCALLBACK          (DOSCALLS.157)
 0000:0000  Imp  DOSCHDIR             (DOSCALLS.57)
 0000:0000  Imp  DOSCHGFILEPTR        (DOSCALLS.58)
 0000:0000  Imp  DOSCLIACCESS         (DOSCALLS.51)
 0000:0000  Imp  DOSCLOSE             (DOSCALLS.59)
 0000:0000  Imp  DOSCLOSESEM          (DOSCALLS.23)
 0000:0000  Imp  DOSCOPY              (DOSCALLS.201)
 0000:0000  Imp  DOSCREATECSALIAS     (DOSCALLS.43)
 0000:0000  Imp  DOSCREATESEM         (DOSCALLS.24)
 0000:0000  Imp  DOSCREATETHREAD      (DOSCALLS.145)
 0000:0000  Imp  DOSCWAIT             (DOSCALLS.2)
 0000:0000  Imp  DOSDELETE            (DOSCALLS.60)
 0000:0000  Imp  DOSDEVCONFIG         (DOSCALLS.52)
 0000:0000  Imp  DOSDEVIOCTL          (DOSCALLS.53)
 0000:0000  Imp  DOSDEVIOCTL2         (DOSCALLS.99)
 0000:0000  Imp  DOSDUPHANDLE         (DOSCALLS.61)
 0000:0000  Imp  DOSDYNAMICTRACE      (DOSCALLS.165)
 0000:0000  Imp  DOSEDITNAME          (DOSCALLS.191)
 0000:0000  Imp  DOSENTERCRITSEC      (DOSCALLS.3)
 0000:0000  Imp  DOSENUMATTRIBUTE     (DOSCALLS.204)
 0000:0000  Imp  DOSERRCLASS          (DOSCALLS.139)
 0000:0000  Imp  DOSERROR             (DOSCALLS.120)
 0000:0000  Imp  DOSEXECPGM           (DOSCALLS.144)
 0000:0000  Imp  DOSEXIT              (DOSCALLS.5)
 0000:0000  Imp  DOSEXITCRITSEC       (DOSCALLS.6)
 0000:0000  Imp  DOSEXITLIST          (DOSCALLS.7)
 0000:0000  Imp  DOSFILEIO            (DOSCALLS.186)
 0000:0000  Imp  DOSFILELOCKS         (DOSCALLS.62)
 0000:0000  Imp  DOSFINDCLOSE         (DOSCALLS.63)
 0000:0000  Imp  DOSFINDFIRST         (DOSCALLS.64)
 0000:0000  Imp  DOSFINDFIRST2        (DOSCALLS.184)
 0000:0000  Imp  DOSFINDFROMNAME      (DOSCALLS.197)
 0000:0000  Imp  DOSFINDNEXT          (DOSCALLS.65)
 0000:0000  Imp  DOSFINDNOTIFYCLOSE   (DOSCALLS.187)
 0000:0000  Imp  DOSFINDNOTIFYFIRST   (DOSCALLS.188)
 0000:0000  Imp  DOSFINDNOTIFYNEXT    (DOSCALLS.189)
 0000:0000  Imp  DOSFLAGPROCESS       (DOSCALLS.15)
 0000:0000  Imp  DOSFREEMODULE        (DOSCALLS.46)
 0000:0000  Imp  DOSFREERESOURCE      (DOSCALLS.208)
 0000:0000  Imp  DOSFREESEG           (DOSCALLS.39)
 0000:0000  Imp  DOSFSATTACH          (DOSCALLS.181)
 0000:0000  Imp  DOSFSCTL             (DOSCALLS.183)
 0000:0000  Imp  DOSFSRAMSEMCLEAR     (DOSCALLS.162)
 0000:0000  Imp  DOSFSRAMSEMREQUEST   (DOSCALLS.161)
 0000:0000  Imp  DOSGETCP             (DOSCALLS.130)
 0000:0000  Imp  DOSGETDATETIME       (DOSCALLS.33)
 0000:0000  Imp  DOSGETENV            (DOSCALLS.91)
 0000:0000  Imp  DOSGETHUGESHIFT      (DOSCALLS.41)
 0000:0000  Imp  DOSGETINFOSEG        (DOSCALLS.8)
 0000:0000  Imp  DOSGETLOGBUFFER      (DOSCALLS.194)
 0000:0000  Imp  DOSGETMACHINEMODE    (DOSCALLS.49)
 0000:0000  Imp  DOSGETMODHANDLE      (DOSCALLS.47)
 0000:0000  Imp  DOSGETMODNAME        (DOSCALLS.48)
 0000:0000  Imp  DOSGETPID            (DOSCALLS.94)
 0000:0000  Imp  DOSGETPPID           (DOSCALLS.156)
 0000:0000  Imp  DOSGETPROCADDR       (DOSCALLS.45)
 0000:0000  Imp  DOSGETPRTY           (DOSCALLS.9)
 0000:0000  Imp  DOSGETRESOURCE       (DOSCALLS.155)
 0000:0000  Imp  DOSGETRESOURCE2      (DOSCALLS.207)
 0000:0000  Imp  DOSGETSEG            (DOSCALLS.121)
 0000:0000  Imp  DOSGETSHRSEG         (DOSCALLS.36)
 0000:0000  Imp  DOSGETSTDA           (DOSCALLS.119)
 0000:0000  Imp  DOSGETVERSION        (DOSCALLS.92)
 0000:0000  Imp  DOSGIVESEG           (DOSCALLS.37)
 0000:0000  Imp  DOSGLOBALSEG         (DOSCALLS.132)
 0000:0000  Imp  DOSHOLDSIGNAL        (DOSCALLS.13)
 0000:0000  Imp  DOSHUGEINCR          (DOSCALLS.136)
 0000:0000  Imp  DOSHUGESHIFT         (DOSCALLS.135)
 0000:0000  Imp  DOSICALLBACK         (DOSCALLS.158)
 0000:0000  Imp  DOSICALLNMPIPE       (DOSCALLS.168)
 0000:0000  Imp  DOSICANONICALIZE     (DOSCALLS.100)
 0000:0000  Imp  DOSICONNECTNMPIPE    (DOSCALLS.169)
 0000:0000  Imp  DOSICOPY             (DOSCALLS.200)
 0000:0000  Imp  DOSICREATETHREAD     (DOSCALLS.1)
 0000:0000  Imp  DOSIDISCONNECTNMPIPE (DOSCALLS.170)
 0000:0000  Imp  DOSIEXECPGM          (DOSCALLS.4)
 0000:0000  Imp  DOSIMAKENMPIPE       (DOSCALLS.167)
 0000:0000  Imp  DOSIPEEKNMPIPE       (DOSCALLS.171)
 0000:0000  Imp  DOSIQAPPTYPE         (DOSCALLS.202)
 0000:0000  Imp  DOSIQNMPHANDSTATE    (DOSCALLS.173)
 0000:0000  Imp  DOSIQNMPIPEINFO      (DOSCALLS.172)
 0000:0000  Imp  DOSIQNMPIPESEMSTATE  (DOSCALLS.178)
 0000:0000  Imp  DOSIRAMSEMREQUEST    (DOSCALLS.128)
 0000:0000  Imp  DOSIRAMSEMWAKE       (DOSCALLS.125)
 0000:0000  Imp  DOSIRAWREADNMPIPE    (DOSCALLS.179)
 0000:0000  Imp  DOSIRAWWRITENMPIPE   (DOSCALLS.180)
 0000:0000  Imp  DOSIREAD             (DOSCALLS.79)
 0000:0000  Imp  DOSISEMREQUEST       (DOSCALLS.18)
 0000:0000  Imp  DOSISEMWAIT          (DOSCALLS.21)
 0000:0000  Imp  DOSISETCP            (DOSCALLS.131)
 0000:0000  Imp  DOSISETNMPHANDSTATE  (DOSCALLS.174)
 0000:0000  Imp  DOSISETNMPIPESEM     (DOSCALLS.177)
 0000:0000  Imp  DOSISYSSEMCLEAR      (DOSCALLS.17)
 0000:0000  Imp  DOSISYSSEMSET        (DOSCALLS.19)
 0000:0000  Imp  DOSITRANSACTNMPIPE   (DOSCALLS.175)
 0000:0000  Imp  DOSIWAITNMPIPE       (DOSCALLS.176)
 0000:0000  Imp  DOSIWRITE            (DOSCALLS.87)
 0000:0000  Imp  DOSKILLPROCESS       (DOSCALLS.10)
 0000:0000  Imp  DOSLIBINIT           (DOSCALLS.96)
 0000:0000  Imp  DOSLOADMODULE        (DOSCALLS.44)
 0000:0000  Imp  DOSLOCKSEG           (DOSCALLS.122)
 0000:0000  Imp  DOSLOGENTRY          (DOSCALLS.193)
 0000:0000  Imp  DOSLOGMODE           (DOSCALLS.192)
 0000:0000  Imp  DOSLOGREAD           (DOSCALLS.196)
 0000:0000  Imp  DOSLOGREGISTER       (DOSCALLS.195)
 0000:0000  Imp  DOSMAKEPIPE          (DOSCALLS.16)
 0000:0000  Imp  DOSMEMAVAIL          (DOSCALLS.127)
 0000:0000  Imp  DOSMKDIR             (DOSCALLS.66)
 0000:0000  Imp  DOSMKDIR2            (DOSCALLS.185)
 0000:0000  Imp  DOSMOVE              (DOSCALLS.67)
 0000:0000  Imp  DOSMUXSEMWAIT        (DOSCALLS.22)
 0000:0000  Imp  DOSNEWSIZE           (DOSCALLS.68)
 0000:0000  Imp  DOSOPEN              (DOSCALLS.70)
 0000:0000  Imp  DOSOPEN2             (DOSCALLS.95)
 0000:0000  Imp  DOSOPENSEM           (DOSCALLS.25)
 0000:0000  Imp  DOSOPLOCKRELEASE     (DOSCALLS.198)
 0000:0000  Imp  DOSOPLOCKSHUTDOWN    (DOSCALLS.205)
 0000:0000  Imp  DOSOPLOCKWAIT        (DOSCALLS.199)
 0000:0000  Imp  DOSPHYSICALDISK      (DOSCALLS.129)
 0000:0000  Imp  DOSPORTACCESS        (DOSCALLS.69)
 0000:0000  Imp  DOSPROFILE           (DOSCALLS.133)
 0000:0000  Imp  DOSPTRACE            (DOSCALLS.12)
 0000:0000  Imp  DOSQAPPTYPE          (DOSCALLS.163)
 0000:0000  Imp  DOSQCURDIR           (DOSCALLS.71)
 0000:0000  Imp  DOSQCURDISK          (DOSCALLS.72)
 0000:0000  Imp  DOSQFHANDSTATE       (DOSCALLS.73)
 0000:0000  Imp  DOSQFILEINFO         (DOSCALLS.74)
 0000:0000  Imp  DOSQFILEMODE         (DOSCALLS.75)
 0000:0000  Imp  DOSQFSATTACH         (DOSCALLS.182)
 0000:0000  Imp  DOSQFSINFO           (DOSCALLS.76)
 0000:0000  Imp  DOSQHANDTYPE         (DOSCALLS.77)
 0000:0000  Imp  DOSQPATHINFO         (DOSCALLS.98)
 0000:0000  Imp  DOSQPROCSTATUS       (DOSCALLS.154)
 0000:0000  Imp  DOSQSYSINFO          (DOSCALLS.166)
 0000:0000  Imp  DOSQTRACEINFO        (DOSCALLS.93)
 0000:0000  Imp  DOSQVERIFY           (DOSCALLS.78)
 0000:0000  Imp  DOSR2STACKREALLOC    (DOSCALLS.160)
 0000:0000  Imp  DOSREAD              (DOSCALLS.137)
 0000:0000  Imp  DOSREADASYNC         (DOSCALLS.149)
 0000:0000  Imp  DOSREADPHYS          (DOSCALLS.103)
 0000:0000  Imp  DOSREALLOCHUGE       (DOSCALLS.42)
 0000:0000  Imp  DOSREALLOCSEG        (DOSCALLS.38)
 0000:0000  Imp  DOSRESUMETHREAD      (DOSCALLS.26)
 0000:0000  Imp  DOSRETFORWARD        (DOSCALLS.159)
 0000:0000  Imp  DOSRMDIR             (DOSCALLS.80)
 0000:0000  Imp  DOSSCANENV           (DOSCALLS.152)
 0000:0000  Imp  DOSSEARCHPATH        (DOSCALLS.151)
 0000:0000  Imp  DOSSELECTDISK        (DOSCALLS.81)
 0000:0000  Imp  DOSSEMCLEAR          (DOSCALLS.141)
 0000:0000  Imp  DOSSEMREQUEST        (DOSCALLS.140)
 0000:0000  Imp  DOSSEMSET            (DOSCALLS.143)
 0000:0000  Imp  DOSSEMSETWAIT        (DOSCALLS.20)
 0000:0000  Imp  DOSSEMWAIT           (DOSCALLS.142)
 0000:0000  Imp  DOSSENDSIGNAL        (DOSCALLS.134)
 0000:0000  Imp  DOSSETCP             (DOSCALLS.153)
 0000:0000  Imp  DOSSETDATETIME       (DOSCALLS.28)
 0000:0000  Imp  DOSSETFGND           (DOSCALLS.101)
 0000:0000  Imp  DOSSETFHANDSTATE     (DOSCALLS.82)
 0000:0000  Imp  DOSSETFILEINFO       (DOSCALLS.83)
 0000:0000  Imp  DOSSETFILEMODE       (DOSCALLS.84)
 0000:0000  Imp  DOSSETFSINFO         (DOSCALLS.97)
 0000:0000  Imp  DOSSETMAXFH          (DOSCALLS.85)
 0000:0000  Imp  DOSSETPATHINFO       (DOSCALLS.104)
 0000:0000  Imp  DOSSETPROCCP         (DOSCALLS.164)
 0000:0000  Imp  DOSSETPRTY           (DOSCALLS.11)
 0000:0000  Imp  DOSSETSIGHANDLER     (DOSCALLS.14)
 0000:0000  Imp  DOSSETTRACEINFO      (DOSCALLS.190)
 0000:0000  Imp  DOSSETVEC            (DOSCALLS.89)
 0000:0000  Imp  DOSSETVERIFY         (DOSCALLS.86)
 0000:0000  Imp  DOSSGSWITCH          (DOSCALLS.54)
 0000:0000  Imp  DOSSGSWITCHME        (DOSCALLS.55)
 0000:0000  Imp  DOSSGSWITCHPROC      (DOSCALLS.124)
 0000:0000  Imp  DOSSGSWITCHPROC2     (DOSCALLS.105)
 0000:0000  Imp  DOSSHUTDOWN          (DOSCALLS.206)
 0000:0000  Imp  DOSSIZESEG           (DOSCALLS.126)
 0000:0000  Imp  DOSSLEEP             (DOSCALLS.32)
 0000:0000  Imp  DOSSUBALLOC          (DOSCALLS.147)
 0000:0000  Imp  DOSSUBFREE           (DOSCALLS.148)
 0000:0000  Imp  DOSSUBSET            (DOSCALLS.146)
 0000:0000  Imp  DOSSUSPENDTHREAD     (DOSCALLS.27)
 0000:0000  Imp  DOSSWAPTASKINIT      (DOSCALLS.102)
 0000:0000  Imp  DOSSYSTEMSERVICE     (DOSCALLS.88)
 0000:0000  Imp  DOSSYSTRACE          (DOSCALLS.90)
 0000:0000  Imp  DOSTIMERASYNC        (DOSCALLS.29)
 0000:0000  Imp  DOSTIMERSTART        (DOSCALLS.30)
 0000:0000  Imp  DOSTIMERSTOP         (DOSCALLS.31)
 0000:0000  Imp  DOSUNLOCKSEG         (DOSCALLS.123)
 0000:0000  Imp  DOSWRITE             (DOSCALLS.138)
 0000:0000  Imp  DOSWRITEASYNC        (DOSCALLS.150)
 0000:0000  Imp  GETADDR              (DOSCALLS.111)
 0000:0000  Imp  GETHEADERS           (DOSCALLS.108)
 0000:0000  Imp  GETSELADDR           (DOSCALLS.110)
 0000:0000  Imp  STRUCHECK            (DOSCALLS.106)
 0000:0000  Imp  STRURESUPDATE        (DOSCALLS.107)

That should be a good crack at a list, at least.

Jim> You mention a file called 'exehdr.h'.  I have both the IBM PM Toolkit
Jim> as well as the Microsoft toolkit (version 1.2 for both).  I haven't
Jim> found the file you mention.  Where would I find this file?

I got it from Microsoft Online.
--
Mark Towfiq							 towfiq@FTP.COM
Work: +1 617 246 0900					  Home: +1 617 488 2818
FTP Software, Wakefield, MA	      51 Harvard Avenue, West Medford, MA 02155

  "The Earth is but One Country, and Mankind its Citizens" -- Baha'u'llah
