Hello,
Here is the problem …
In our Win NT SCSI miniport driver asynchronous event reporting from the
hardware is implemented in the following way…
An upper level application (one and only one such app) interested in
events
reported by the SCSI miniport driver posts a custom IOCTL termed as an
“event IOCTL” to the miniport driver. The miniport receives this (SRB
with
function IO Control) and holds onto this “event IOCTL” until such a time
as
an event occurs - at which time appropriate event related data is sent
back
to the application by “completing” this (event IOCTL) SRB request. While
the
miniport driver is holding onto this “event IOCTL”, other regular IOCTLs
may
be issued to the miniport driver by the same application. These are
serviced synchronously.
The same miniport driver has been re-compiled with Win 2000 DDK and run
in
Win 2000 (Professional and Advanced Server). We observed that when the
app
has sent in the “event IOCTL” then follows it with a regular IOCTL, the
second IOCTL never seems to reach the miniport - so never gets complete
UNTIL an event occurs and the “event IOCTL” is completed. If we disable
issuing of this “event IOCTL” by the app then everything works fine.
Is this mechanism allowed. Can the miniport driver hold onto an IOCTL
(SRB
with SRB function as IO control ) and still receive more IOCTLs - or is
there some upper layer (FSD, Disk Class Driver, SCSI Port Driver)
restriction that prevents multiple SRBs with function IO control being
sent
to the miniport driver . This does not SEEM to be the case in Win NT
4.0,
however, if we run NT Cluster Server on NT 4 - the same thing seems to
happen…
Regards
Murali Ramanathan