Hi all,
I am newbie in windows driver development. I just want to know , a global variable in a driver will use paged pool memory or non paged pool memory ?
Thanks and Regards
Navaneeth
Hi all,
I am newbie in windows driver development. I just want to know , a global variable in a driver will use paged pool memory or non paged pool memory ?
Thanks and Regards
Navaneeth
Depends. The Non paged pool should be reserved for memory that must stay in RAM so if you are doing something critical that would affected by a memory page from disk operation then use non paged.
See here for more info.
Looking at this (though it discusses c++ as opposed to C) it would seem that by default the globals can be located in either by #pragma. Also on p22 of this we see how to do this. Finally this discuss here we see that the data segment should be non pagagable by default.
Global variables in a kernel mode driver are allocated from NonPagedPool.
You can also use the device extension (when you call IoCreateDevice), it is always allocated from NonPaged memory.
I hope this helps, Martin