I’m working on a specialized scsi miniport and am trying to resolve a
little issue.
It seems like when a SRB with SRB_FLAGS_DISABLE_DISCONNECT is sent to the
miniport for execution, SCSIPORT stops issuing SRB’s to ALL other LU’s.
SRB_FLAGS_DISABLE_DISCONNECT often is set by the class driver when they
retry after the initial SRB returns an error. Is this correct, or should I
keep hunting for what’s really happening?
My real problem is I have this user mode app that is constantly chatting
with the miniport through passthrough requests, to a private target id.
When a normal device get’s an error, the class drivers retry the request
with the SRB_FLAGS_DISABLE_DISCONNECT flag set, and my app can no longer
chat with the driver about what’s happening.
I’ve even moved my private targets to a different PathId, with no apparent
change. It also seem like SRB_IO_CONTROL’s also get held when the SRB with
SRB_FLAGS_DISABLE_DISCONNECT is being processed??
It looks like I could potentially set SRB_FLAGS_BYPASS_FROZEN_QUEUE in the
SRB’s to my private target, but without a driver above SCSIPORT (or a
filter on passthough requests) I haven’t found a way around this.
Any ideas on how to let a miniport keep processing multiple LU’s all the
time? This has to work under NT4/W2K/WinXP. I would prefer not to have a
device on the side of the minport processing IOCTL’s, as the information
coming down from the app sometimes effects SRB completion, so I need to be
in a valid miniport context.
Thanks.
- Jan
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com