Re: [ntdev]why must driver call IoMarkIrpPending?

RE: [ntdev] Re: [ntdev]why must driver call IoMarkIrpPending?
“Min Wang” wrote in message news:xxxxx@ntdev…
>Which one is correct? If the second one is correct, I can still touch Irp
fields after IoCallDriver()
> since it’s not freed yet, right?
> Min

They’re both correct, and no… in neither case can you touch the IRP after
you call IoCallDriver(…) (except for the case of reclaiming the IRP in
your completion routine, and waiting in your dispatch routine on an event,
signalled from the completion routine).

Peter
OSR


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Messageim not able to search properly
im not finding it
your quick explanation is not clear to me

please help me find this article
assaf
----- Original Message -----
From: Roddy, Mark
To: NT Developers Interest List
Sent: Thursday, December 06, 2001 8:28 PM
Subject: [ntdev] RE: [ntdev]why must driver call IoMarkIrpPending?

Because otherwise the rather complicated decision by the IoManager about how to complete an asynchronous IO request, which has to cover both completions on the ‘dispatch side’ and asynchronous ‘interrupt side’ completions, gets confused and the system crashes (eventually.) There is an excellent article in the NtInsider by Tony Mason from a few years back, that I think is available online at www.osr.com that lays out the details with pictures even. Read it and understand it. Meanwhile just follow the directions, as even without complete understanding of the internal mechanisms, as long as the external interfaces and operational procedures are documented, it is quite possible to write kernel modules that will behave correctly.
-----Original Message-----
From: Assaf Wodeslavsky [mailto:xxxxx@hotmail.com]
Sent: Thursday, December 06, 2001 12:43 PM
To: NT Developers Interest List
Subject: [ntdev] [ntdev]why must driver call IoMarkIrpPending?

hi all

in osr’s book page:332
it says that a driver must call IoMarkIrpPending
as well as return STATUS_PENDING

“failure of a driver to do both of these things causes improper system behaviour”

what improper system behaviour?
and why?

assaf

You are currently subscribed to ntdev as: xxxxx@stratus.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

You are currently subscribed to ntdev as: xxxxx@hotmail.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com