Legacy WinXP Application On Win10x64

My x64 port of InpOut32
Post Reply
DarrenT
New User
Posts: 2
Joined: Mon Jul 03, 2017 7:40 am

Legacy WinXP Application On Win10x64

Post by DarrenT »

Hi Forum,

We have a commercial legacy data acquisition application written originally for Win95 and WinNT which has run successfully on Win XP for ~ 15 years.

The application reads from field devices via the serial port and controls some relay alarm outputs via the LPT port.

The application installed off the installation CD without error to our new Win10x64 workstation. When run, it appears to read from the field devices over the serial port ok but complains whenever we attempt to assign the relay alarm outputs to any of the available LPT ports (378h, 278h or 3BCh). The error is "You must install DLPortIO.sys to use relays in Windows NT. Relays disabled".

On the Win XP box for a regular install there are the following files :
. DLPortIO.sys located in the i) Application directory C:\Connect and in ii) C:\Windows\System32\Drivers
. DLPortIO.dll located in the Application director C:\Connect

We suspect we have to replace both of the older .sys and .dll files with their Win10 equivalents in all the relevant locations and maintain the same names.

We have downloaded InpOutBinaries_1501 and extracted the component folders Win32 and x64.

Step by Step, what should we be doing with the downloaded files inpoutx64.dll, inpout32.dll and InstallDriver.exe so the correct replacement files (.dll and .sys ?) are in the correct directories with the correct names to retest the application on our Win10x64 workstation ?

We look forward to your advice accordingly.
User avatar
phil
Site Admin
Posts: 7611
Joined: Sun Apr 06, 2003 11:12 pm

Re: Legacy WinXP Application On Win10x64

Post by phil »

When you say your legacy application - do you have the source for it (i.e. can you change from using DLPortIO.dll to InpOut32.dll?)
I'm going to assume that you don't have that at this stage....

You may be able to get it working with InpOut32 instead of DLPortIO without changing the application as inpOut32 implements the same function interface as DLPortIO. However, it depends how the application used DLPOrtIO (if it simply loads it at runtime, then it should be OK - but if it was linked in at compile time, then chances of it working are far lower).

1. Run InstallDriver.exe in the win32 folder. This will install the relevant InpOut driver (32bit or 64bit depending on your OS).
2. copy the InpOut32.DLL to the same folder as DLPortIO.dll
3. Rename the old DLPortIO.DLL to something else e.g. <dlportio.old>
4. Rename InpOit32.DLL to DLPortIO.DLL
5. Try it!

Unless you have a 64bit version of your application (which I doubt) you wont need the 64bit DLL.

Thanks,
Phil
--[ Phil ]--
--[ Administrator & XMBC Author ]--
Logitech G9/G604/M720/MX518, Microsoft Intellimouse, Trust 16341 BT Mouse
Windows 10 x64, AMD Ryzen 5900x, MSI x570 Tomahawk, 32GB DDR4,
nVidia RTX 2070s, Evo 970 1Tb NVME, 2x2TB WD Black (RAID1)
DarrenT
New User
Posts: 2
Joined: Mon Jul 03, 2017 7:40 am

Re: Legacy WinXP Application On Win10x64

Post by DarrenT »

Hi Phil,
Thank you for the prompt reply.
Following your step by step instructions and monitoring where the files install to now makes more sense.
Unfortunately we are still unable to get the application to work. Whenever we attempt to configure the outputs ( LPT port) it complains with "You must install DLPortIO.sys to use relays in Windows NT. Relays disabled".
We did an experiment where we did a fresh install of the legacy application off the CD to the Win10 workstation.
The legacy DLPortIO.sys and .dll files end up being installed in the following locations :
. DLPortIO.sys located in the i) Application directory C:\Connect and in ii) C:\Windows\SysWOW64\Drivers
. DLPortIO.dll located in the Application director C:\Connect
We again followed your instructions :
1. Run InstallDriver.exe in the win32 folder. This installs InpOutx64.sys in C:\windows\System32\Drivers
2. Copy the InpOut32.DLL to the same folder (C:\Connect) as DLPortIO.dll
3. Rename the old DLPortIO.DLL to something else e.g. <dlportio.old>
4. Rename InpOut32.DLL to DLPortIO.DLL
but it still complains with "You must install DLPortIO.sys to use relays in Windows NT. Relays disabled".
As you suspected it looks like everything is locked down at compilation.
Again, thank you for your help.
We will try to come up with a Plan B which will probably be to run this application on its own Win XP box with a KVM switch.
User avatar
phil
Site Admin
Posts: 7611
Joined: Sun Apr 06, 2003 11:12 pm

Re: Legacy WinXP Application On Win10x64

Post by phil »

Hi, yes it sounds like DLPortIO is linked in at compiler time... Either that or there is something missing from my port of InpOut32 from the DLPortIO interface. The reason I added the DLPortIO calls is that I used LPortIO back in the day, but I loaded it dynamically at runtime so it worked as a drop in replacement.

You could also try running in a XP VM using VMWare player or VirtualBox maybe.
Good luck getting it working.

Thanks,
Phil
--[ Phil ]--
--[ Administrator & XMBC Author ]--
Logitech G9/G604/M720/MX518, Microsoft Intellimouse, Trust 16341 BT Mouse
Windows 10 x64, AMD Ryzen 5900x, MSI x570 Tomahawk, 32GB DDR4,
nVidia RTX 2070s, Evo 970 1Tb NVME, 2x2TB WD Black (RAID1)
Post Reply