Visual Basic Question

Douglas Taylor dj.taylor4 at
Sat May 2 14:57:54 CDT 2015

On 4/21/2015 4:25 PM, Dave G4UGM wrote:
>> -----Original Message-----
>> From: cctech [mailto:cctech-bounces at] On Behalf Of geneb
>> Sent: 21 April 2015 18:56
>> To: General Discussion: On-Topic Posts
>> Subject: RE: Visual Basic Question
>> On Tue, 21 Apr 2015, Dave G4UGM wrote:
>>> The phrase "standard Windows 16bit DLLs" means Windows 3.1 DLLs. Such
>>> DLL's no longer work in a modern windows. If they directly access the
>>> hardware then they will not work on any NT based windows such as
>>> Windows/2000, Windows/XP, Vista, or 7, 8 or 9. Nor will they work on
>>> any 64-Bit windows full stop. 64-Bit windows does not support 16-bit
> code.
>>> If you have a Windows/95, 98 or ME environment then the code may work.
>> They should work with 32 bit versions of windows as the 16 bit thunking
> layer is
>> still present.  YMMV of course.
> What I said was:-
> " If they directly access the hardware then they will not work on any NT
> based windows such as..."
> As they are interfacing to external hardware I assume they access the
> hardware directly...
An update on this software/hardware adventure:

I have not got a 16 bit capable version of VB4 so I have not started 
that yet.  The thunking advice is quite relevant since the driver talks 
directly to the ISA card.

I am using Visual C++ v1.52 and I am able to write and compile and debug 
a short piece of code that calls the 16 bit DLL.  There is a conflict in 
the calling argument list though,
the manual and the include file Cproto.h say that the directory string 
is passed as a 'far pointer', however Visual C++ says it must be a near 
pointer.  When I run the code
and step thru it using the debugger the first call to acq_open returns a 
code integer that indicates one of the passed parameters is wrong, don't 
know which one.

I am running under win98se and a companion executable, winvect.exe, is 
provided to test the DLL out.  It works just fine.  I run it from a 
MS-DOS window and when it
starts it opens up a window with graphics and plots the data coming from 
the spectrometer.

I used a utility, scanbin.exe, to tell me what the exe and dll files 
were and it indicates the C++ and winvect.exe are both 'Windows 
executables 16 bit'.

The ISA acquisition card uses DMA is this incompatible inside the debugger?

More information about the cctech mailing list