Technical Document #39

Technical Document #39
A restriction in KP_IntAtIrql is to use only non-pageable memory. What does this mean?

Variables defined in the Kernel PlugIn project (such as global and local variables) are non paged. WinDriver also implements malloc() to allocate non-paged memory when used from within the kernel (see also Technical Document #34). If you are using a pointer to the memory in the user mode from within the Kernel PlugIn, you need to make a copy of it's contents (allocate memory and copy the data to the non-paged memory) in order to access it from your KP_IntAtIrql function, in order to ensure safe access to the data at all times.