Thread1
SetFileInformationByHandle(fileHandle, ...);Thread2
SetFileInformationByHandle(sameFileHandleWithThread1, ...);
Thread1's function has been called first. and Thread2's function has been called in another thread.
if the function's duration is 10 seconds -the device driver sleeps in the dispatch routine, will the second function's IRP be waited to be processed for 10 seconds?
In other words, if we do -multiple and concurrent- synchronous I/Os, will the device driver process the IRPs in step by step?
Who has the responsibility of the synchronization?
Is it their device driver? or I/O manager?