Download WINDOWS ASSEMBLY LANGUAGE & SYSTEMS PROGRAMMING

Transcript
Advanced Systems Programming 3.51
Anatomy of a VxD
Changing the subject somewhat, VxDs are Microsoft’s preferred
direction for access to the hardware. Chapter 14 introduces the
VxD, and gives references. I recommend that if you want to delve
deeply into VxDs, you purchase a specialised book. However, it is
appropriate for me to explain a little more about how the example
VxD in directory \TSR2WIN on the Companion Disk works.
The VxD is VDEMOD.ASM, and it assembles and links to
VDEMOD.EXE. Note the extension .EXE, rather than .386 (that
most VxDs use). This relates back to how the VxD is used in
Chapter 14; that is, it is invoked from the DOS prompt prior to
Windows loading, which executes the stub TSR2WIN.EXE. Note
that TSR2WIN.EXE was inserted into VDEMOD.EXE by the
linker, so it is not a separate program. Note that I have created a
Make tile to rebuild everything, called BUILDALL.MAK. This is
designed for NMAKE.EXE and uses the /A switch.
For now, however, I am interested only in the VxD.
VXD tools
Make file
To assemble and link the example VxD requires the DDK or
VxD-Lite. More specifically, the following files are required:
VMM.INC,
LINK386.EXE,
DEBUGJNC,
SHELLJNC,
LINK4.EXE, MAPSYM32.EXE, MASMS.EXE, ADDHDR.EXE
These are not the standard LINK and MASM version 5 - they are
special versions.
I’ll start by looking at the Make file:
VDEMOD.MAK
This Make file build VDEMOD.ASM into VDEMOD.EXE, and puts
in the dos stub TSR2WIN.EXE....
Note that VDEMOD.EXE does not have to be in the windows
SYSTEM directory.
The dos stub is to be executed from the autoexec.bat file.
Note that the Include files are in the path shown below...
change if necessary. masm5.exe, link386.exe, addhdr.exe,
mapsym32.exe must
all be in the search path . . . or put in current directory.
to run: NMAKE /A VDEMOD.MAK
(there is also a BUILDALL.MAK)
I have put a path of c:\vxd for the .INC files, but
replace as necessary.
comment this definition out with a "#", if building a
non-debugging version
Debug=-DDEBUG