WINPKT - Interface between Microsoft Windows and a Packet Driver

Prof. Joe R. Doupnik, Utah State University, Logan Utah

May, 1992

WINPKT is a helper program for Packet Drivers, what we call a "shim" in the
trade.  It does an essential job for applications programs running in
Windows: it knows how to contact an application properly when a packet
arrives for it.  The reason this is a tricky business is each "window" is
essentially a separate, or virtual, machine and Windows jumps from one to the
other.  From the outside where the Packet Driver lives it has no idea that
the same memory addresses are being used first for one virtual machine and
then another and so on.  Thus if the Packet Driver attempts delivery the
process will likely cause major systems problems (or worse) because it goes
to the wrong machine.

WINPKT knows about these things.  One installs WINPKT after the Packet Driver
and both sit outside of Windows.  WINPKT acts as an agent for Windows tasks
by masquerading as a Packet Driver for them.  In turn WINPKT uses the real
Packet Driver for its worker (or conversely, the Packet Driver thinks WINPKT
is an applications program).  WINPKT knows how to get the right virtual
machine activiated so an incoming packet is delivered to the correct place.

In practice this means start up the Packet Driver, or DIS_PKT, normally.
Then start WINPKT with a command line of:

  C> winpkt win_int pd_int

The first item, win_int, is the interrupt seen by applications as if WINPKT
were a Packet Driver.  Let win_int be 0x60.  The second item, pd_int, is the
interrupt of the real Packet Driver, say 0x63.  The two must be different
values and please make win_int be SMALLER than pd_int.  Then start Windows.
Tell applications to use the win_int value for a Packet Driver interrupt.
Many applications will search for it instead, thus by making win_int smaller
than pd_int they will find WINPKT instead of the Packet Driver (and that's
what we want to happen).

WINPKT does NOT permit one to run multiple TCP/IP applications together
in Windows.  There are fundamental reasons why this should not be done.  It is
fine to leave WINPKT installed when Windows is not active, because it becomes
transparent then.  Please do NOT use the "-w" switch of Crynwr Collection
Packet Drivers with WINPKT; that switch causes packets to be discarded.  Also
it is not necessary to "fix application in memory" via the Windows PIF file
when WINPKT is installed because WINPKT is smart enough to let that
restriction be removed.

Here is a sample network startup Batch file with all the components in place:

  @echo off
  c:\wd8003e 0x63 7 0x280 0xca00      (Regular Packet Driver)
  c:\winpkt 0x60 0x63                 (WINPKT)
  c:\ipx                              (Packet Driver version of Novell's IPX)
  c:\netx PS=edu-usu-netlab2          (Novell, connnect to my server)
  @echo on

(End of WINPKT.HLP)
