Doubt on IoCallDriver

Hello all

I have a doubt on using IoCallDriver . As Per the DDK documentation :

Callers of IoCallDriver must be running at IRQL <= DISPATCH_LEVEL.
Let us say if we are calling IoCallDriver > PASSIVE LEVEL , makes the
lower level driver to be called at > PASSIVE_LEVEL (i.e. calling the
code that is there in lower level driver at elevated IRQL. )

My doubt why this call can still be called at higher IRQL > PASSIVE_LEVEL
? What is the Purpose of it ?

Can I call IoCallDriver from an CompletionRoutine ?

Thanks in advance
srinivas


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

Calling a lower driver at > PASSIVE_LEVEL requires tacit agreement between
the 2 drivers. If the lower driver is written such that it must be at
PASSIVE_LEVEL then you are headed for a BSOD. When a driver is called it
doesn’t know who called it … it could be the application percolating down
or another kernel mode driver.

Yes, you can call IoCallDriver from a completion routine, with a great deal
of care. I wouldn’t, however, pass it the IRP, since as soon as you return
that IRP could be competed. The real question is why you would want to do
this, since the best way would have been to call that driver in the dispatch
call and let it set it’s own completion routine, which will then be called
when you return from your completion routine.

Gary G. Little
Staff Engineer
Broadband Storage, Inc.
xxxxx@broadstor.com

-----Original Message-----
From: Srinivasa Rao Deevi [mailto:xxxxx@Transilica.com]
Sent: Wednesday, August 15, 2001 10:29 AM
To: NT Developers Interest List
Subject: [ntdev] Doubt on IoCallDriver

Hello all

I have a doubt on using IoCallDriver . As Per the DDK documentation :

Callers of IoCallDriver must be running at IRQL <= DISPATCH_LEVEL.
Let us say if we are calling IoCallDriver > PASSIVE LEVEL , makes the
lower level driver to be called at > PASSIVE_LEVEL (i.e. calling the
code that is there in lower level driver at elevated IRQL. )

My doubt why this call can still be called at higher IRQL > PASSIVE_LEVEL
? What is the Purpose of it ?

Can I call IoCallDriver from an CompletionRoutine ?

Thanks in advance
srinivas


You are currently subscribed to ntdev as: xxxxx@broadstor.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