Section Object
一个 section object 代表了一个内存段, section object 可以在不同的进程之间共享它所代表的内存, 进程也可以使用 section object 把文件映射到内存中。
section 有两种:
- File-backed section . 用磁盘文件填充。 其实就是文件的内存映像, section 的内容可以写入硬盘。 对seciton 内存的操作对于到相关文件的操作,如果一个进程映射文件为read only,那么文件从硬盘读取到内存,对用户是透明的。 如果文件是以可以读写的方式映射到内存中,那么对内存的操作会同样透明
的对应到文件上。 - Page-File-backed section. 用 paging file 填充, section 的内容不可以写入硬盘, 在section 上做的任何修改,在使用完之后,都会自动的丢弃。
- 使用 ZwCreateSection 来创建 section ,其中的参数 FileHandle 是表示填充的文件。
- 使用 ZwOpenSection 来打开一个已经存在的 section 。 通过section 的名字来找到存在的section object。
- ZwMapViewOfSection 映射 section object 对应的文件到内存
- ZwUnmapViewOfSection 从内存中卸载映射的 section object
- ZwClose 关闭 section 句柄