MY TWIST ON AN IOPL DLL
IOPL segments are a way of doing port I/O under OS/2. It is basically a way of doing I/O calls from ring 2. My version of the DLL is based on code from io386 readily avalible from hobbes. The difference between mine and the others is where the call gates are made. In most of the DLL's that have been written to date the transition between ring 3 and ring 2 is done between the application and the 16-bit DLL. This means that compilers that do not support the ring 3 -> ring2 call gates cannot use this DLL. All DLL's written in this way like IO386 do not work from borland since this compiler does not have the proper call gate support. This was problematic for me since I wanted to be able to do I/O from Borland.
This is where my enhacements come in; I wanted to know was it possible to have the ring transition occur inside the DLL itself. This way any compiler could use it just as if it were a normal DLL; This is the basis of my DLL. It is a 32-Bit DLL that calls a wrapper function which then in turn calls the 16-bit assembler routine to do the I/O. This way the call gate is completlely inside the DLL. As long as you use a compiler that compiles the ring transition correctly inside the DLL, this DLL now becomes usable by any compiler whether it supports IOPL segments or not.
Feel free to download a copy of the DLL, LIB, and header. Included also are brief instructions on how to use it with Borland and Watcom. It probably works with VAC++ as well since I used this compiler to write the DLL. I just never tested it with this compiler.
Download pacer.zip the DLL I wrote to do IOPL calls
There are no comments on this page. [Add comment]