I’m experiencing a delay after I call IoCallDriver. Around one whole
second.
I’m calling from a completion routine at dispatch level where I recycyle
and resubmit an IRP. The Irp is delayed one socond until after I recievie
it in the Completion routine. If I delay in the completion routine the
delay after calling IoCallDriver is proportionetly shorter. Did I fail to
set a flag or something that causes IoCallDriver to difer or something?
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
IoCallDriver doesn’t defer anything. It is just a simple plumbing function
that finds the appropriate dispatch entry point for the next device object’s
driver object, and calls that routine. If there is a delay, it is in or
associated with the dispatch routine that is processing your IRP.
-----Original Message-----
From: Chris Telting [mailto:xxxxx@mindspring.com]
Sent: Thursday, May 31, 2001 11:10 PM
To: NT Developers Interest List
Subject: [ntdev] IoCallDriver Delay
Importance: Low
I’m experiencing a delay after I call IoCallDriver. Around one whole
second.
I’m calling from a completion routine at dispatch level where I recycyle
and resubmit an IRP. The Irp is delayed one socond until after I recievie
it in the Completion routine. If I delay in the completion routine the
delay after calling IoCallDriver is proportionetly shorter. Did I fail to
set a flag or something that causes IoCallDriver to difer or something?
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: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
“Chris Telting” wrote in message
news:xxxxx@ntdev…
> I’m calling from a completion routine at dispatch level where I recycyle
> and resubmit an IRP. The Irp is delayed one socond until after I recievie
> it in the Completion routine.
Just walk into IoCallDriver() and, as Mr. Roddy says, you’ll see it doesn’t
queue your request. It’s a direct call to the dispatch entry point. This
is assuming, of course, you don’t have DriverVerifier enabled or anything
similar.
Also, note that in general is it Very Bad Practice to call IoCallDriver()
directly from your completion routine, whether or not that routine is
executing at IRQL DISPATCH_LEVEL. Think of the stack usage problem. If
you’re resubmitting the IRP via a worker thread, then I’d suggest that’s
where the delay is coming in (scheduling).
If you are indeed at IRQL DISPATCH_LEVEL, and Verifier is not enabled, then
you’re calling directly from your completion routine into the relevant
dispatch entry point. Walk into the code.
But DO check the IRQL. If your completion routine is being called at IRQL
PASSIVE_LEVEL, then your subject to “the wonders of scheduling.”
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
“Chris Telting” wrote in message
news:xxxxx@ntdev…
> I’m calling from a completion routine at dispatch level where I recycyle
> and resubmit an IRP. The Irp is delayed one socond until after I recievie
> it in the Completion routine.
Just walk into IoCallDriver() and, as Mr. Roddy says, you’ll see it doesn’t
queue your request. It’s a direct call to the dispatch entry point. This
is assuming, of course, you don’t have DriverVerifier enabled or anything
similar.
Also, note that in general is it Very Bad Practice to call IoCallDriver()
directly from your completion routine, whether or not that routine is
executing at IRQL DISPATCH_LEVEL. Think of the stack usage problem. If
you’re resubmitting the IRP via a worker thread, then I’d suggest that’s
where the delay is coming in (scheduling).
If you are indeed at IRQL DISPATCH_LEVEL, and Verifier is not enabled, then
you’re calling directly from your completion routine into the relevant
dispatch entry point. Walk into the code.
But DO check the IRQL. If your completion routine is being called at IRQL
PASSIVE_LEVEL, then your subject to “the wonders of scheduling.”
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