Business
Desktop Enhancements
Drivers
Games
Home & Education
HTML
Info Management
Internet
MP3 and Audio
Multimedia
Programming
ActiveX
C/C++
CGI
Commerce
Database
Delphi
Internet Protocol
Java
JavaScript
Perl
Spreadsheet
Visual Basic
Utilities
Quick Slide Show
Cookbook Wizard
VISCOM Digital Signage Display Software
Recover Files
Bar Drinks Wizard
Recipe Minder Cookbook Software
Recipes Ship
ChinaFood Recipe
Recipe Center
Recipe Minder
Kitchen for Windows
VZO Mobile Video Phone
EventLog Inspector
Shadow Security Scanner
ODPHPTools for Xcode
Stamp Page Creator
Agama Web Menus
TextToWav
Able Submitter
Multi Crew Experience Windows 7 & Vista
Moyea SWF to iPod Converter
Flash Brochure Free PDF to PPT
zebNet ShutDown Manager TNG
Liquid XML Studio 2013
myMedirecs Personal Health Records
Sound Forge Audio Studio
VShell Server for UNIX
Altova MapForce Professional Edition
OptionMatrix
Macro Recorder
FileCleaner
Vizup Desktop Business
Bopup Communication Server
FULL-DISKfighter
DELL OPTIPLEX 960 Drivers Utility
Intel Notebook WiFi Router
DriverXP For Sony
DELL OPTIPLEX 380 Drivers Utility
EPSON Drivers Update Utility
DriverXP For Panasonic
Add To Quality Center Excel Add
Trackback Url For This Post
Delphi Forums
Codegear Delphi Forums
Delphi Forums Cbp
Seo Services Company Provide Seo Service
Delphi Forums Chat Rooms
Seo Stats And Site Analysis
Astroscan S Earth Vistas Screen Saver
Raj Wap Video X
Syria Talk Messenger Mobile
Bijoy Bangla Font Sutonny Mj
Photo Editing Software For Nokia E5 Free
Best Lotus Notes Emoticons Download
Bijoy Bangla Font Sutonny Mj BoldIO.DLL 1.0
Software ID: 89435| Dialup | (56k) | - | 05 s |
| ISDN | (128k) | - | 02 s |
| DSL | (512k) | - | 01 s |
| Cable | (1024k) | - | 01 s |
| T1 | (1484k) | - | 01 s |
IO.DLL 1.0 Description
Synopsis
IO.DLL allows seamless port I/O operations for Windows 95/98/NT/2000/XP using the same library.
Introduction
In the pre-Windows days, it was a relatively simple matter to access I/O ports on a typical PC. Indeed, nearly every language sported a special command for doing so. As Windows emerged and gradually evolved, this flapping in the wind behaviour could no longer be tolerated because of operating system\'s ability to virtualize hardware.
Virtualizing hardware means that an application (typically a DOS box in Windows) believes it is talking directly to a physical device, but in reality it is talking to a driver that emulates the hardware, passing data back and forth as appropriate. This is how you are able to open dozens of DOS boxes in your Windows session, each one with the strange notion that it has exclusive access to peripherals such as the video adapter, keyboard, sound card and printer.
If one were to rudely bang out data to an I/O port that Windows thought it was in full control of, the \"official bad thing\" could occur, the severity of which depending upon the exact hardware that was being accessed. Actually, with the virtualization just mentioned, it is quite improbable that Windows would permit anything too nasty from occuring.
Windows 95/98 actually does allow I/O operations be executed at the application level, although you\'d be hard pressed to find a language that supports this directly. Typically the programmer will have to resort to assembly language for this kind of low-level control. If you know what you are doing, this can be a quick and easy way to access I/O ports. Of course, not everyone knows, or desires to learn 80x86 assembly programming just because they want to turn on a lamp from their computer. However, the unwillingness to learn assembly language becomes rather trivial when faced with 9x\'s big brother.
Windows NT/2000/XP, being the secure operating system that it is, does not permit port I/O operations at the application level at all. Period. A program with inline IN and OUT assembly instructions that runs perfectly on Windows 95/98 will fail horribly when it comes to Windows NT/2000/XP.
Windows NT/2000/XP does, however, allow I/O instructions in its kernel mode drivers. A kernel mode driver runs at the most priviledged level of the processor and can do whatever it pleases, including screwing up the system beyond repair, thus writing a kernel mode driver is not for the feint of heart.
If you were to take it upon yourself to wade through the documentation of the Windows NT/2000/XP ddk and piece together a driver that was callable by your application to do the I/O instructions on behalf of your application, you\'d probably notice something not too pleasant--this sort of access is painfully slow. The call from application level to system level typically takes about one millisecond. Compare this to the one microsecond that a normal I/O access takes. To further the insult, you are at the whim of the operating system. If it has tasks which it believes are of higher priority than your lowly call to your driver, it will perform them, making precise timing nearly impossible.
Obviously, writing a driver that does acts a proxy for the I/O calls isn\'t the most ideal solution. There is, however, a solution for NT/2000/XP that allows the same convienience of inline assembly language that 95/98 does.
As mentioned, a kernel mode driver can do whatever it wants. The implication here is that if another kernel mode driver shut off application access to the I/O ports, it should be possible for another kernel mode driver to turn it back on. This is where IO.DLL enters the picture.
Licensing
IO.DLL is completely free! However, you may not:
* Charge others for it in any way. For example, you cannot sell it as a stand alone product.
* Charge for an IO.DLL wrapper, such as an OCX or Delphi control whose purpose is just to put a fancy interface on IO.DLL. I consider these to be \"derived works\" and they must be provided free of charge.
* Claim that it is your property.
Also, the author (that\'s me) cannot be held liable due to io.dll\'s failure to perform. As with most free stuff, you are on your own.
Source Code and Special Modifications
The source code is available for $1,000 US.
I\'m willing to work with people should they require a special modification to IO.DLL. For example, you might have a strict timing requirement of some sort that can only be done in kernel mode. For a fee, I will modify IO.DLL and/or the embedded kernel mode driver for the task at hand.
Description of IO.DLL
IO.DLL provides a useful set of commands for reading and writing to the I/O ports. These commands are consistent between 95/98 and NT/2000/XP. Furthermore, there is no need for the programmer to learn assembly language or muck with kernel mode drivers. Simply link to the DLL and call the functions. It\'s that easy.
Windows NT/2000/XP is accomodated through the use of a small kernel mode driver that releases the ports as needed to the application. This driver is embedded in the DLL and is installed if Windows NT/2000/XP is determined to be the underlying operating system.
Due to the very minor overhead involved in dynamically linking to IO.DLL, and the optimized functions contained within, access to I/O ports is nearly as fast as if it was written in raw assembler and inlined in your application. This holds true for both Windows 95/98 and Windows NT/2000/XP.
Before moving on, it is probably prudent to mention that the technique employed in IO.DLL for releasing the ports to the application level isn\'t, strictly speaking, the proper way to do things. The proper way is to have a virtual device driver for Windows 95/98 and a kernel mode driver for Windows NT/2000/XP. This isn\'t very practical for many people though, nor is it really necessary. There are several successful commercial products on the market that do exactly what IO.DLL does. Let it be noted though that some of them are shady with their explanation of how their product works, meanwhile charging $500 or more for it.
What Ports can IO.DLL Access?
IO.DLL is capable of accessing only those ports that are inherent to the processor itself through the IN and OUT instructions. This means that it cannot access most add-in parallel ports or com ports because they are typically memory-mapped these days rather than IO-mapped. IO.DLL also cannot access virtual devices. Here is a table of what ports can be accessed:
IO Address Device
000-01F DMA controller #1
020-03F Interrupt controller
040-05F Timer
060-06F Keyboard controller
070-07F Real-time clock, CMOS Memory, NMI mask
080 manufacturer\'s diagnostics checkpoint
080-09F DMA page register
0A0-0BF Interrupt controller #2
0C0-0DF DMA controller #2
0F0-0FF Math Coprocessor
170-177 Hard disk (secondary)
1F0-17F Hard disk
200-207 Game I/O
278-27F LPT 2
2C0-2DF EGA #2
2E8-2EF COM 4
2F8-2FF COM 2
300-31F Prototype card
370-377 FDC (secondary)
378-37F LPT 1
380-38F SDLC
3A0-3AF bisynchronous port #1
|
|
Colors text according the specified start and a stop colors . Colors text according the specified start and a stop colors .
The HTML Color Blender application was designed to be a small tool that can help you color your text according the specified start and a stop colors. You can also set the backgound...
OS: Windows Software Terms: Geekhideout, Geek Hideout, Austin, San Marcos, Delphi, Device, Device Driver, Development, Consultant, Contractor |
|
|
Nice MessageBox component. New style of messageboxes in your programs. Features: Any color of MessageBox Any Caption and Text font in MessageBox Any number of buttons in MessageBox Simply in use, call as standard MessageBox function Any installed MS Office Assistent character Form as DLL library, use in any programming language Benefits of registered version: Source codes for Delphi 6 Free technical support by e-mail Free lifetime upgrades
OS: Windows Software Terms: Nice, Messagebox, Component, Library |
|
|
PulsePar turns a PC into a multi-channel pulse generator utilizing the parallel port. The period, duty and phase of each channel are adjustable so as to be used in PWM systems as well as in testing servo and stepper (stepping) motors. If you have an old PC, boot it by dos to run PulsePar and control it by SeriCon on your GUI PC through serial port. The free trial version of SeriCon is enough in many cases. Important features are:...
OS: MS-DOS Software Terms: Pulse, Generator, Timer, Pwm, Servo, Stepper, Stepping, Motor, Parallel, Printer |
|
|
Parallel port+ can control your PCs parallel ports output with just a few clicks. Parallel port+ can control your PCs parallel ports output with just a few clicks. It means you can control the equipments connected to your PCs parallel port. Control PC parallel port's output with this tool.
Parallel port+ Features:
1. Control...
OS: Software Terms: |
|
|
Lalim Parallel Port Control can control hardware through the parallel port (printer port) and can also control a remote PC parallel port through a network. Most of engineering industry using PC to control hardware with using additional I/O card but with Lalim Parallel Port Control you can use your default printer port controlling external device such as switching on/off light or control electronic devices. What does this program [does is]...
OS: Windows, XP, 2000, 98, Me, NT Software Terms: |
|
|
A serial port driver to help you with your work. A serial port driver to help you with your work. com0com is a hansy, easy-to-use kernel-mode virtual serial port driver. You can create an unlimited number of virtual COM port pairs and use any pair to connect one COM port based software to...
OS: Software Terms: |
|
|
Virtual Serial Port Driver by Eltima creates virtual COM port pairs in the system. Using these ports serial applications can communicate with each other and transfer data via virtual null-modem cable. The main goal of Virtual Serial Port Driver by Eltima Software is creating virtual COM port pairs. Virtual serial ports created in VSPD behave as if they were real ports and are taken for the real ones with the serial applications. Via these ports...
OS: Windows Software Terms: Virtual Serial Port, Virtual Serial Port Driver, Virtual Com Port, Virtual Serial Port Kit |
|
|
Parapin library makes it easy to write C code under Linux that controls individual pins on a PC parallel port. Parapin library makes it easy to write C code under Linux that controls individual pins on a PC parallel port. This kind of control is very useful for electronics projects that use the PCs parallel port as a generic digital I/O interface. Parapin...
OS: Any Platform Software Terms: |
|
|
RapidDriver is intelligent tool for driver development, PC hardware analysis and debugging. RapidDriver allows you to start work with hardware after just a few clicks. Simply install your new hardware, create a new RapidDriver project, and then select your USB, PCI, ISA, or a parallel port device from the list of PnP devices that are auto-detected by RapidDriver. RapidDriver Explorer extracts all required hardware resource information directly...
OS: Windows Software Terms: Port, Memory, Irq, Interrupt, Isa, Pci, Lpt, Usb, Wdm, Driver |
|
|
Startup MessageBox Maker allows you to configure a custom messagebox that appears at login.
OS: Software Terms: |