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: 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> <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