| Executeable | DOS | Windows 9x/Me | Windows 32 bit | Windows 64 bit | |
|---|---|---|---|---|---|
| DOS | native | in a DOS Box | InpOut32.dll | doesn't run (exception: DosBox, Wine for Windows) | |
| Win16 | direct I/O | - | native | ||
| with VxD | Write a VxD-simulating VDD! | ||||
| Win32 | direct I/O | Load giveio.sys | Load this giveio.sys! | ||
| coming with a VxD (never seen) | Write a simulating .SYS driver! | ||||
| with inpout32.dll | native | ||||
| with giveio.sys | Should run seemlessly (needless driver silently fails to load) | native | Replace giveio.sys! | ||
| with own 32-bit .SYS driver | Insist making a 64-bit driver, or
disassemble .SYS driver (IDA) and port to 64 bit + certify (*) | ||||
| Win64 | with certified .SYS driver | - | native | ||
Generally speaking you need a Virtual Device Driver. You have at lot of options to deal with your problem.
If you encounter that this solution works but is too slow, you have to proceed with a kernel-mode driver below, but it's very likely that the entire project will fail: You have to rewrite the closed-source software.