如果某物理内存页既映射到进程A的虚拟内存中,也映射到进程B的虚拟内存中,那么该内存页即为进程间共享内存。
对32位应用程序而言,所有进程的高2G或者高1G的虚拟内存的映射方式完全一致。
虚拟内存按照是否可以swap出去,可以分为分页内存和非分页内存, 非分页内存可以在各个中断请求级上用,分页内存只能用在DISPATCH_LEVEL(不包括)之下的请求级。以下是这两种内存的使用方法:
#define PAGEDCODE code_seg("PAGE")
#define LOCKEDCODE code_seg()
#define INITCODE code_seg("INIT")
#define PAGEDDATA data_seg("PAGE")
#define LOCKEDDATA data_seg()
#define INITDATA data_seg("INIT")
#pragma PAGEDCODE
VOID HelloDDKUnload (IN PDRIVER_OBJECT pDriverObject)
另外,分配内存的时候可以指定是分配哪种内存:
ExAllocatePool(PagedPool, 1024)
No comments:
Post a Comment