Hi

I'm developing a TDI filter driver.
a. According to the MSDN, IoCallDriver() can be called at IRQL <=
DISPATCH_LEVEL. Therefore, should I assume that it is possible for all
dispatch routines in my TDI filter to run at IRQL = DISPATCH_LEVEL?
(According to MSDN this rule is right for all kinds of filter drivers?)

b. My completion routines are being invoked in an arbitrary thread
context and probably at high IRQ. Is this also right for a TDI filter?

c. When code can run at IRQL => DISPATCH_LEVEL, all the allocations on
the STACK also need to be none paged? (Do I need to use paged_code
macro or something like that?)

Thanks.

Re: IRQL in TDI filter dispatch functions by Maxim

Maxim
Mon Mar 06 15:25:26 CST 2006

> DISPATCH_LEVEL. Therefore, should I assume that it is possible for all
> dispatch routines in my TDI filter to run at IRQL = DISPATCH_LEVEL?

Yes.

> b. My completion routines are being invoked in an arbitrary thread
> context and probably at high IRQ. Is this also right for a TDI filter?

Yes.

> c. When code can run at IRQL => DISPATCH_LEVEL, all the allocations on
> the STACK also need to be none paged?

Better to not use stack for allocations, remember - you have only 12KB of
stack, and kernel stack overflow is a crash. Use some ExAllocateXxx calls
instead.

--
Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
maxim@storagecraft.com
http://www.storagecraft.com