As I know, before set the create completion routine,
IoCopyCurrentStackLocationToNext funtion is invoked, and then IoCallDriver
is called.
After the lower-layer driver completed its work, the create completion
routine
of current driver is called.
What I want to know is: Would the lower-layer driver modify the
current layer driver’s IO_STACK_LACATION parameters if
IoCopyCurrentStackLocationToNext is called?
What if IoSkipCurrentStackLocation is called(with no completion routine
is set)?
I think the ‘skip’ routine just points the lower-layer’s io_stack_location
to the
current layer’s one, so it would be modified after the low-layer driver
returned, while ‘copy’ routine copies it to the lower-layer driver, in which
it modified its own io stack, without affecting the current layer’s
io_stack_location’s parameter.
Then how the lower layer driver send its modification in io_stack_location
to the higher layer?
Will someone please unpuzzle this to me? Thanks in advance!