none
Sending I/O Requests Synchronously RRS feed

  • Question

  • Hi

    I have a driver that forwards all of the IOctls that he gets to his default IO target.

    Both of the drivers have a parallel default queue.

    I'm not sure if I should send the request to the next lower driver synchronously or not.

    The driver forwards many ioctls but I think that it doesn't matter because he handles his requests in parallel.

    Does the synchronous sending have any effect on other callback that also forwards request to the same IO target in parallel?

    Thanks,

    C.S

    Thursday, October 24, 2013 6:33 AM

Answers

  • You do not have to worry about this at all.  Drivers will process requests as they choose to do.  A driver should treat the other driver as a black box, if the request is well formed, how the other driver queues it is irrelevant.


    Don Burn Windows Filesystem and Driver Consulting Website: http://www.windrvr.com Blog: http://msmvps.com/blogs/WinDrvr

    Thursday, October 24, 2013 11:45 AM

All replies

  • You do not have to worry about this at all.  Drivers will process requests as they choose to do.  A driver should treat the other driver as a black box, if the request is well formed, how the other driver queues it is irrelevant.


    Don Burn Windows Filesystem and Driver Consulting Website: http://www.windrvr.com Blog: http://msmvps.com/blogs/WinDrvr

    Thursday, October 24, 2013 11:45 AM
  • Thanks for your reply, but I think that I didn’t clarify my question well.

    My question referred mainly to the first driver. I want to send my IOctls synchronously but I’m not sure if it is the right way based on the WDK documentation where is written:

    “You can use synchronous I/O if your driver does not send many I/O requests and if system or device performance is not reduced because your driver waits for each I/O request to complete. “

    My driver sends many requests but it doesn’t affects driver performance because my queue is parallel. I try to understand if in such case I can use the synchronous sending.

    Thanks a lot,

     C.S

    Sunday, October 27, 2013 3:59 AM
  • the parallel queue is not the matter, it is the number of

    a) active requests sent synchronously

    and

    b) how long they stay pended in the driver below, thus blocking on the completion in your driver

    which combine into the number of threads waiting (a) * time how long they wait (b)


    d -- This posting is provided "AS IS" with no warranties, and confers no rights.

    Sunday, October 27, 2013 5:53 AM