We are trying to support proprietary SBP-2 hardware (NOT a Disk, CD ROM,
SCSI Printer, nor SCSI Scanner) under Windows 2000. We’re having mixed
success with getting our driver up and running.
With the config ROM set for our desired device type (an ‘Other Device’ or
0x1F) and proprietary command set, we can establish a connection with
Windows 2000. Device discovery seems to be working and our device is
enumerated. The surprise removal applet is being called at the appropriate
times. We essentially see all the activity that the SBP-2 port driver
(sbp2port.sys) should be providing for us: login and logout and abort
requests via the SBP-2 interface. This activity has been traced all the way
to the hardware level of our proprietary SBP-2 device.
We are unable at this time to get our driver to talk to the port driver. We
get our driver to load and run. We can call our driver routines and access
functions. But when that driver tries to communicate with the ‘next driver
down’ (looking for the sbp2port.sys port driver) we are not successful.
Specifically:
IoGetNextIrpStackLocation() returns our next IRP stack, however this next
IRP’s DeviceObject = NULL
As part of our debug work, we temporarily modified the config ROM to
masquerade as a IEEE 1394 printer (device type 02) with SCSI command set
support and used the generic print driver to establish a connection with our
hardware and send data to our device (print notepad document). This was
successful, and activity was also traced all the way to the hardware level
of our proprietary SBP-2 device.
Basic question:
How to setup our driver to enable access the next IRP’s DeviceObject which
is hopefully the sbp2port.sys port driver.
Related issues:
INF file structure / Registry structure to install this class and its
appropriate class driver (specifically the ClassInstall32 Section and
ClassInstall32.Services Section) is a bit unclear to us at this time. Any
suggestions would be helpful.
Our config ROM reports a directory_spec_id and directory_version of 0x609e
to reflect SBP-2 support, and command_set_spec_ID and command_set are set to
reflect our vendor specific nature.
The DDK and MSDN resources such as
http://www.microsoft.com/hwdev/tech/print/sbp2_w2000.asp or
http://www.microsoft.com/hwdev/tech/print/scsiprint.asphave been marginally
helpful, but have not found our situation addressed in enough detail to
finish our work here.
Any suggestions and comments would be greatly appreciated.
Regards,
Peter