|
Contents
|
| Home |
| Parallel Port |
| DLL Tutorial |
| Inpout32 |
|
|
|
|
Inpout32.dll for WIN NT/2000/XP
|
The Problem
Writing programs to talk with parallel port was pretty easy in old DOS days and
in Win95/98 too. We can use Inporb and outportb or _inp() or _Outp functions
in our program without any problem if we are running the program on Dos or WIN95/98.
But entering to the new era of NT clone operating systems like WIN NT4, WIN2000,
WINXP, all this simplicity goes away. Being interested in Parallel port interfacing
and programming you might have experienced the problems in writing a program that can
talk to parallel port successfully in NT based operating systems. When we are trying to
run a program which is written using the the conventional software functions like
Inporb, outportb, _inp() or _Outp on a WINNT or WIN2000 system, it will show an
error message that "The exception privileged instruction occurred in the application
at location ....". The picture of such a messagebox is given below.
Staring to this messagebox, you might have been thinking that "did i make a mistake
in my program ?" it is working fine on WIN98 ... Who is guilty here. 'Nobody' that
is the answer. Then why it is happening like this ..? The answer is in the next paragraph
Being a very secure operating system, Windows NT assigns some privileges and
restrictions to different types of programs running on it.It classifies all the
programs in to two categories , User mode and Kernel mode ie; running in ring3 and ring0
modes. user mode programs are running in ring3 mode and Kernel mode programs are
running in ring0 mode. The programs you generally write falls in the user mode
category. The user mode programs are restricted to use certain instructions like IN, OUT etc..
Whenever the operating system find that a user mode program is trying to execute such
instructions , the operating system stops execution of those programs and will display an
error message. Eventually our interfacing programs stops where they are executing
IN or OUT instructions to read or write data to parallel port. But in the same time Kernel
mode programs are in no way restricted in executing such instructions. Device drivers are
capable of running in kernel mode. So the workaround for the above stated problem
is to write a kernel mode driver capable of reading and writing data to parallel port
and let the user mode program to communicate with it. Writing a driver is not an easy
job for even experienced programmers. But writing a simple driver for communicating
with parallel port is a simple task when drivers like USB, sound card etc.. are concerned.
Even though you get a working driver from somewhere else, installing and configuring it
can be very cumbersome task.
The Solution
Introducing Inpout32.dll for WIN 98/NT/2000/XP. This dll have the following features
1) Works seamless with all versions of windows (WIN 98, NT, 200 and XP)
2) Using a kernel mode driver embedded in the dll
3) No special software or driver installation required
4) Driver will be automatically installed and configured automatically when the dll is loaded
5) No special APIs required only two functions Inp32 and Out32
6) Can be easily used with VC++ and VB
7) Functions are compatible with Jan Axelsons Inpout32.dll (available at
www.lvr.com). So this dll can be used
with the sample programs available with the book Parallel Port Complete, without any modification.
Click here for a sample program written for Borland C++ command line compiler, by Douglas Beattie Jr.
How Inpout32.dll Works
Download Inpout32.dll and source code here
|
|
|
|
|
|
|