IoBuildDeviceIoControlRequest() and IoCallDriver()

Hi All,
On getting a IOCTL from a win32 application, in my filter driver, I’m using IoBuildDeviceIoControlRequest() and IoCallDriver() to send block Read/Write commands(special purpose) to the underlying SCSI Port driver. I’m supplying a event to IoBuildDeviceIoControlRequest() and also waiting on it, if IoCallDriver() returns with STATUS_PENDING. But very rarely, the Read/Write I send to the underlying driver never returns(the event never gets signaled).

Can anybody tell me what might be the problem.

Thanks,
Sajeev.

Are you using IoBuildDeviceIoControlRequest() to build IRP_MJ_READ and
IRP_MJ_WRITE requests? If so, this is not correct, you shouold use
IoBuildSynchronousFsdRequest() or IoBuildAsynchronousFsdRequest().

Jamey

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com]On Behalf Of Sajeev
Sent: Thursday, June 15, 2000 11:53 AM
To: NT Developers Interest List
Subject: [ntdev] IoBuildDeviceIoControlRequest() and IoCallDriver()

Hi All,
On getting a IOCTL from a win32 application, in my filter driver, I’m
using IoBuildDeviceIoControlRequest() and IoCallDriver() to send block
Read/Write commands(special purpose) to the underlying SCSI Port driver. I’m
supplying a event to IoBuildDeviceIoControlRequest() and also waiting on it,
if IoCallDriver() returns with STATUS_PENDING. But very rarely, the
Read/Write I send to the underlying driver never returns(the event never
gets signaled).

Can anybody tell me what might be the problem.

Thanks,
Sajeev.

I’m using IOCTL_SCSI_EXEC_IN as the control code for the IoBuildDeviceIoControlRequest() and using direct CDB command for reading. I doubt whether I can use IoBuildSynchronousFsdRequest() since, my filter sits between disk.sys and scsiport.

Thanks,
Sajeev
----- Original Message -----
From: Jamey Kirby
To: NT Developers Interest List
Sent: Thursday, June 15, 2000 11:53 AM
Subject: [ntdev] RE: IoBuildDeviceIoControlRequest() and IoCallDriver()

Are you using IoBuildDeviceIoControlRequest() to build IRP_MJ_READ and IRP_MJ_WRITE requests? If so, this is not correct, you shouold use IoBuildSynchronousFsdRequest() or IoBuildAsynchronousFsdRequest().

Jamey

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com]On Behalf Of Sajeev
Sent: Thursday, June 15, 2000 11:53 AM
To: NT Developers Interest List
Subject: [ntdev] IoBuildDeviceIoControlRequest() and IoCallDriver()

Hi All,
On getting a IOCTL from a win32 application, in my filter driver, I’m using IoBuildDeviceIoControlRequest() and IoCallDriver() to send block Read/Write commands(special purpose) to the underlying SCSI Port driver. I’m supplying a event to IoBuildDeviceIoControlRequest() and also waiting on it, if IoCallDriver() returns with STATUS_PENDING. But very rarely, the Read/Write I send to the underlying driver never returns(the event never gets signaled).

Can anybody tell me what might be the problem.

Thanks,
Sajeev.