PortTalk Windows NT I/O Port Device Driver 2.2

Manufacturer:

Description

DOWNLOAD NOW

A problem that plagues Windows NT/2000 and Windows XP, is it's strict control over I/O ports. Unlike Windows 95 & 98, Windows NT/2000/XP will cause an exception (Privileged Instruction) if an attempt is made to access a port that you are not privileged to talk too. Actually it's not Windows NT that does this, but any 386 or higher processor running in protected mode.

Accessing I/O Ports in protected mode is governed by two events, The I/O privilege level (IOPL) in the EFLAGS register and the I/O permission bit map of a Task State Segment (TSS). Under Windows NT, there are only two I/O privilege levels used, level 0 & level 3. Usermode programs will run in privilege level 3, while device drivers and the kernel will run in privilege level 0, commonly referred to as ring 0. This allows the trusted operating system and drivers running in kernel mode to access the ports, while preventing less trusted usermode processes from touching the I/O ports and causing conflicts. All usermode programs should talk to a device driver which arbitrates access. The I/O permission bitmap can be used to allow programs not privileged enough (I.e. usermode programs) the ability to access the I/O ports. When an I/O instruction is executed, the processor will first check if the task is privileged enough to access the ports. Should this be the case, the I/O instruction will be executed. However if the task is not allowed to do I/O, the processor will then check the I/O permission bitmap.
The I/O permission bitmap, as the name suggests uses a single bit to represent each I/O address. If the bit corresponding to a port is set, then the instruction will generate an exception however if the bit is clear then the I/O operation will proceed. This gives a means to allow certain processes to access certain ports. There is one I/O permission bitmap per task.

Revision History

6th April 2002 - Version 2.2.
Fixed a debug message typo in the IoExample.
13th January 2002 - Version 2.1, tested on Windows 2000 SP2 and Windows XP RTM.
Added uninstall.exe to deal with older V1.x versions of PortTalk.
12th January 2002 � Version 2.0, tested on Windows 2000 SP2 and Windows XP RTM.
Self installs driver for ease of use.
Improved type checking.
Distributed with IoExample code showing use of inportb/outportb() inp/outp() macros and IOCTL calls.
6th September 2001 � Version 1.02
Fixed .reg file after previous fix broke Windows 2000 Support. Now supports Windows NT/2000/XP.
26th June 2001 � Version 1.01
Fixed .reg file to support both Windows 2000 and Windows NT4.
13th March 1999 � Version 1.0 first public release for Windows NT4.

When installing PortTalk V2.x on machines with an older version of V1.x, the existing driver must be un-installed. Simply run the uninstall.exe contained within the PortTalk package with administrator privileges. After the old driver has been removed, running allowio.exe or IoExample.exe will detect the absence of PortTalk and re-install the new driver.

Additionally, the driver can be removed manually. This is only recommended for advanced users. Either
-Replace your old porttalk.sys with the new version and reboot.
-Delete the HKEY_LOCAL_MACHINEsystemcurrentcontrolsetservicesporttalk key and reboot.
-Use the Windows NT Device Driver Installer to stop and remove the PortTalk Driver.

PortTalk Windows Port Device Device Driver PortTalk Windows Device Driver

  CATEGORY:
Other Drivers & Tools
  COMPATIBLE WITH:
Windows NT
  file size:
67 KB
  filename:
porttalk22.zip