operating system - How does a Windows Kernel mode Driver, access paged memory? -


1) A usermode process has its own "address reference", which maps a user-mode virtual address to unique archive The physical page frame, i.e., means meaning of a particular virtual address change switches from Windows XP scheduler threads to another.

Changing a part of the "switching threads" is to change the page table so they can see the incoming thread process context.

_

2) A Windows kernel-mode driver is implemented in "arbitrary thread reference".

A driver can create a system thread and works in the context ... but I am talking about the situation when no system thread is created.

driver "ExAllocatePoolWithTag" (memory in volatile storage).

_

3) So how does the driver use paged memory without any reference ?

As seen in point 1, page memes are delivered through Page Tables, which are "context special".

When the driver runs in some other thread context ... i.e. page table entries thread indicates the relevant pH, then how can the driver get access to its paged memory?

PS: Do not let me be noob mad in kernel programming.

The concept used is "user / kernel address space partition". Each process address space is divided into a lower part (usually 2 GB), which is accessible for processing in user mode and is different for each process, and an upper part (the remaining address space) which only in kernel mode Available, and identical for every process.

When the driver allocates paged memory, this address is allocated on the kernel side of the space split, so this kernel code will appear, no matter who loads the page table at that time (because This part of the address space is mapped in the same way for each process).


Comments

Popular posts from this blog

Eclipse CDT variable colors in editor -

AJAX doesn't send POST query -

wpf - Custom Message Box Advice -