We have a legacy driver for NT to communicate with a piece of custom
hardware. This hardware doesn't seem to fall into any of Microsoft's
existing classes (at least I don't think so, but you've probably heard that
line before).
It attaches via a SCSI-2 interface, and meets the minimum requirements under
SCSI-2 as a 'Processor' device. It allows the computer to interface with a
large amount of individual I/O points used in a full-scope control room
simulator (app. 1500 analog outputs, 7500 digital outputs, 4500 digital
inputs, and 300 analog inputs, all scanned at 20 Hz).
Our legacy driver, (originally written for NT 3.51) has served us pretty
well through the various OS upgrades. I developed a new '.inf' file a few
years back to provide client-side installation on Windows 2000. The same
.inf and .sys files work under Windows XP (pro & home). But they do *not*
seem to work on Windows 2003 Standard edition. Why not?? The OS complains
about error starting the driver yet it works under XP and 2000.
Anyway, I'm trying to write a new driver using the latest DDK and WDM models
(I wrote the original as well). Or should I wait for WDF? But I can't find
nearly the amount of information on SCSI device drivers that I had back in
the NT days. Most new things are USB & 1394 it seems. I do have the SCSI
specs down pat and work quite closely with the device firmware programmer,
so I have that going for me (as well as a SCSI bus analyzer etc...) But
searching for a good text on the subject of SCSI drivers under WDM hasn't
been successful (have "Programming the Microsoft WIndows Driver Model" and
"The Windows 2000 Device Driver Book", but they barely acknowledge that SCSI
exists).
I've started by using a storage/class sample from the DDK. But since 'SCSI
Processor' devices support a lot fewer features than either CDROM, disk
drives, or tape, there's a lot of code that needs to be thrown away. And
cutting out code without breaking things is a bit tricky. Anyone have a
better starting point for a simple SCSI device that still fits the WDM
model?
Also, since this device is external, and has it's own power, can I just
reply success to all the power management requests (the device doesn't have
any sort of power-down mode)?
Sorry for the long ramble, but this is a small outfit and I feel lost in the
wilderness a bit. I get to do the low-level drivers because I'm the one
that works with the hardware folks and understand bit-bashing.
Mike Fochtman