I had a little trouble following exactly what you wanted to do.
However, you can always PEND IRPs and then post them later.
You can have a Kernel Thread that sends new IRPs to the lower
driver (or forwards current IRP) and then you can get notification
when those are done.
Posting a pending IOCTL IRP from an application with the saved data when
an IRP comes through is no big deal and handing the data off to a second
IOCTL IRP from the IRP you processed is also no big deal.
I have an situation where I PEND incoming IRPs and do quite a few
additional IRPs to several other device objects before I post the
initial IRP.
Obviously, you have to consider CANCEL IO operations.
I hope this helps.
Rick Cadruvi…
==================================================================
i want to realize this routine… is it possible?
write in detail…
is it possible that i realize synchronous operation?
-
when IRP_MJ_XXX occurs, the driver saves some value to the variable.
-
application gets the value from the driver.
(a thread in the application send IOCTL_GET_XXX constantly, )
when the thread gets the value, it send other packet to the driver.
(the packet may be IOCTL_SET_XXX)
- when the driver gets IOCTL_SET_XXX, it save the value to the variable.
IRP_MJ_XXX occurs in 2~3 times,
but i want to realize below;
>when the first IRP_MJ_XXX occurs, application get the value that the
driver saves.
>and when the driver gets other value from the application,
if the value is valid, the driver pass the next IRP_MJ_XXX to below
driver,
or the driver will not pass the the second IRP_MJ_XXX.
i want to know synchronous operation in driver and application…
help or advise me…
thanks…