My pnp scsiport driver is properly getting a SRB_FUNCTION_EXECUTE_SCSI/SCSIOP_START_STOP_UNIT after my non-scsiport driver get a PowerIrp query when going into S3. That is the expected behavior. Unfortunately, my non-scsiport driver, which sends read/write irps to the scsiport, is not done sending and receiving data with the scsiport.
Any ideas on how to delay the SCSIOP_START_STOP_UNIT?
Thanks,
J
>PowerIrp query when going into S3. That is the expected behavior. Unfortunately, my non-scsiport
driver, which sends read/write irps to the scsiport, is not done sending and receiving data with the
scsiport.
So what? when the computer will awaken back, the non-scsiport driver will get its data.
–
Maxim S. Shatskih
Windows DDK MVP
xxxxx@storagecraft.com
http://www.storagecraft.com
My non-scsiport driver is attempting to queue irps to the scsiport after the scsiport shuts down. At that point, the uncompleted irps appear to inhibit any Set Power Irps.
>My non-scsiport driver is attempting to queue irps to the scsiport after the >scsiport shuts down.
Register your non-scsiport driver on SHUTDOWN notification and postpone any Irps after calling SHUTDOWN(IRP_MJ_SHUTDOWN) dispatch function.
Igor Sharovar
That is the problem. I cannot postpone these Irps after IRP_MJ_SHUTDOWN. I need to complete these i/o requests to complete before going to S3.
Let me verify some points in your design.
When you mention scsiport you mean it is miniport scsiport driver. If it is miniport scsiport how do you communicate with non-scsiport driver? Virtual miniport storage driver only allow in StorPort model.
Anayway, you could postpone SRB( in your case it is SCSIOP_START_STOP_UNIT) by returning SrbStatus = SRB_STATUS_BUSY until your non-scsiport finishes all its work. Why do you not doing this?
Igor Sharovar
MJ_SHUTDOWN is earlier then MJ_POWER
–
Maxim S. Shatskih
Windows DDK MVP
xxxxx@storagecraft.com
http://www.storagecraft.com
wrote in message news:xxxxx@ntdev…
> That is the problem. I cannot postpone these Irps after IRP_MJ_SHUTDOWN. I need to complete these i/o requests to complete before going to S3.
>
Originally, I thought the workaround would be to return SRB_BUSY with the SRB_FUNCTION_EXECUTE_SCSI/SCSIOP_START_STOP_UNIT commands.
Unfortunately, all that happens, is the scsi dispatch keeps sending the command and not letting my device read/write SRBs get queued.