From: Ib Tornøe on
Hope some one knows the answers to these questions
In W2K3 x32 the limit of PagedPoolMemory is about 650 MB and on x64 it is
128 GB.
Implementing an application that use filter drivers I have been told that
there is a limit of 256 MB kernel memory in total for all filter drivers and
that the memory area used is PagedPoolMemory - is this correct?
What about in x64? - the PagedPoolMemory limit is 128 GB but is there still
a limit for filter drivers or has this been raised?
-Ib

From: Anton Bassov on
> In W2K3 x32 the limit of PagedPoolMemory is about 650 MB

This is true on any 32-bit version of NT, but only under the condition that
the size of the kernel address space is 2G - if it is 1G, then the paged pool
maximum size is just 160MB


> Implementing an application that use filter drivers I have been told that
> there is a limit of 256 MB kernel memory in total for all filter drivers and
> that the memory area used is PagedPoolMemory - is this correct?

You were told a plain rubbish....

To begin with, all driver code, apart from the one that is EXPLICITLY marked
as pageable, is guaranteed to be loaded in RAM all the time (unless you load
it with ZwSetSystemInformation() - in such case your driver is, indeed,
pageable).
However, you should not load filter drivers this way, simply because its
Dispatch
routines may get called at elevated IRQL. If the driver is not in RAM at the
moment, then you will get a "big bang"....

As you can see, paged pool and filter drivers are just incompatible concepts.

Furthermore, as far as loader is concerned, there is no such thing as
"filter driver", simply because stacks are based upon devices, rather than on
drivers. Just to give you an idea, the same driver may create multiple
devices and participate in different stacks and in different roles. For
example, DISK.SYS driver creates FDOs for every disk that it manages and
attaches them to their respective stacks (for example, hard disk and USB),
plus PDOs for every partition of every disk (actually, no one attaches to
these PDOs, but this is already a different story). Therefore,
the term "filter driver" is just a convenience

Anton Bassov


"Ib Tornøe" wrote:

> Hope some one knows the answers to these questions
> In W2K3 x32 the limit of PagedPoolMemory is about 650 MB and on x64 it is
> 128 GB.
> Implementing an application that use filter drivers I have been told that
> there is a limit of 256 MB kernel memory in total for all filter drivers and
> that the memory area used is PagedPoolMemory - is this correct?
> What about in x64? - the PagedPoolMemory limit is 128 GB but is there still
> a limit for filter drivers or has this been raised?
> -Ib
>