Gentlemen,
we’ve hit a situation when SCSIPORT for 64-bit Windows (AMD64) does not
work in the way it’s
expected to work. Details: when IOCTL_SCSI_PASS_THROUGH (w/o DIRECT,
this is
critical!) is sent and SenseInfoOffset is not zero (SCSI sense info is
expected to be
returned) and in the same time DataBufferOffset is set to zero (quite a
common combination
when SCSI command does not have data buffer associated with, f.e.
TEST_UNIT_READY SCSI opcode
of 0x00) DeviceIoControl(…) function returns STATUS_INVALID_PARAMETER.
But this MUST work.
And was working before. It seems the one who coded newer version of
SCSIPORT assumes
SenseInfoOffset should be less then DataBufferOffset. This is true for
sure but ONLY for SCSI
commands with data buffer. If there is no data buffer such a check does
not make sense. In the
same time IOCTL_SCSI_PASS_THROUGH_DIRECT works fine. Wrong comparation
of SenseInfoOffset
and DataBufferOffset is done inside function called
PortPassThroughInitialize(…) inside SCSIPORT.
Can anybody from MS confirm this being a bug or this is just we doing
something fundamentally wrong?
Thank you!
Regards,
Anton A. Kolomyeytsev
RocketDivision.Com – Toolkits for Network and Storage Kernel Software
Developers