OS/2, eCS & ArcaOS - Technical > Programming
Presentation Manager - About PM DLL's
Lars:
Plain Forwarder DLLs contain no code but just references to other DLLs which actually implement the function. The loader that loads the executable that in turn loads the forwarder DLL will replace the entry points in the executable not by the entry point of the forwarder DLL but rather by the entry point of the DLL the forwarder DLL refers to (after all that is the purpose of a forwarder DLL).
Why ? Well maybe because the designers of PM decided to stuff everything into a single DLL "PMMERGE.DLL". But at that point in time there where multiple applications around that referred to file "PMWIN.DLL" (and others like "PMDRAG.DLL" for example) instead. In order to ensure that those applications would continue to work, "PMWIN.DLL" was made a forwarder DLL.
By the way: libc also follows this concept, libc*.dll are all forwarder DLLs except for the latest version that you have installed. You can tell by the file size: the latest version of libc*.dll is about 1.3 MBytes in size while the others are only 150 kByte or less in size. At least they started doing this with version libc06.dll.
Martin Iturbide:
Thanks for the reply Lars.
Just one some questions, how do I recognize that a DLL is only a plain forwarder?
Do you know of any forwarder on OS/2 that has something inside (that is not plain) ? like half forwarder and half "implemented functions" on it? Do something like that exist right now on OS/2?
Regards
Alex Taylor:
--- Quote from: Martin Iturbide on March 08, 2015, 10:48:19 pm ---Just one some questions, how do I recognize that a DLL is only a plain forwarder?
--- End quote ---
You could check with lxlite or exehdr etc. to see if all of the entrypoints are forwarded. Although I'm not certain that covers all possibilities...
--- Quote ---Do you know of any forwarder on OS/2 that has something inside (that is not plain) ? like half forwarder and half "implemented functions" on it? Do something like that exist right now on OS/2?
--- End quote ---
Yes, certainly. The replacement LVM.DLL in eCS, for example.
Martin Iturbide:
Thanks for the reply.
I want to try to document the OS/2 DLL's (and other files) by it's components (like PM, SOM, WPS, Control Program) on EDM/2.
Let's if it can be improved, for the moment is this page: http://www.edm2.com/index.php/OS/2_DLL_Entry_Points
Regards
Martin Iturbide:
Hi
I made an experiment with my experimental eCS 2.1 VM to see if the systems keeps working fine after replacing some DLL that are forwardes by other generated by OSFree project some years ago.
Here are the files that that OSFree has compiled in the past, and that I used to replace the old ones.
--- Quote ---9-17-11 6:13a 463 0 a--- ansicall.dll
9-17-11 6:13a 412 0 a--- bkscalls.dll
9-17-11 6:13a 409 0 a--- bmscalls.dll
9-17-11 6:13a 465 0 a--- bvscalls.dll
1-25-12 4:57p 904 0 a--- kbdcalls.dll
9-17-11 5:13a 693 0 a--- moncalls.dll
1-25-12 4:58p 1,040 0 a--- moucalls.dll
2-02-12 10:26a 627 0 a--- msg.dll
9-17-11 6:13a 754 0 a--- nampipes.dll
2-02-12 10:27a 589 0 a--- nls.dll
9-17-11 6:13a 689 0 a--- os2char.dll
9-17-11 6:15a 2,412 0 a--- pmdrag.dll
9-17-11 6:15a 2,216 0 a--- pmgre.dll
9-17-11 6:15a 479 0 a--- pmmle.dll
9-17-11 6:15a 4,511 0 a--- pmshapi.dll
2-02-12 2:16p 19,713 0 a--- pmwin.dll
2-02-12 3:21p 761 0 a--- quecalls.dll
1-25-12 4:59p 2,040 0 a--- viocalls.dll
--- End quote ---
I renamed the original OS/2 files and change them for this one generated by OSFree and the system boots and run withouts any issue. I still haven't found any visible problem.
I was not able to replace "sesmgr.dll" since it is still loaded on memory even if I boot on "ALT F1" command prompt mode.
And I'm not sure what "startlw.dll" is for. I was not able to find it on my system.
So, I think this files I replaced are forwarders only and can easily be replaced just like OSFree project showed me.
Does anybody can point some issue or warning about replacing this files?
Regards
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version