概述
- 是
Windows
操作系统中的虚拟内存页面文件,其作用、管理方式及对系统的影响是系统性能优化的核心内容
核心作用
物理内存的扩展
- 当物理内存(
RAM
)不足时,Windows
会将不活跃的数据从RAM
转移到pagefile.sys
中,释放RAM
给当前活跃程序使用
手动设置
位置
- 系统属性
- 高级
- 性能-设置
- 高级
- 虚拟内存-更改
注册表位置
1 |
计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management |
关键注册表项
PagingFiles
表现
- 如果勾选了这个自动管理
- 自动管理所有驱动器的分页文件大小
- 值如下
1 |
?:\pagefile.sys |
- 如果没有勾选这个自动管理
- 值为存在
pagefile.sys
的盘
- 值为存在
1 |
d:\pagefile.sys 0 0 |
- 如果有多个盘有
pagefile
,但未勾选自动管理
1 2 |
c:\pagefile.sys 0 0 e:\pagefile.sys 0 0 |
- 如果有多个盘有
pagefile
,切勾选了自动管理
1 |
?:\pagefile.sys |
总结
- 如果勾选了这个自动管理,无法从注册表这里感知哪些盘符有
pagefile
如何检测
系统API
查询
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#include <windows.h> #include <stdio.h> int main() { DWORD size = 0; PSAPI_PAGE_FILE_INFORMATION pPageFileInfo = NULL; // 第一次调用获取所需缓冲区大小 if (!QueryPageFileConfiguration(NULL, &size, pPageFileInfo)) { DWORD err = GetLastError(); if (err != ERROR_INSUFFICIENT_BUFFER) { printf("Error: %d\n", err); return 1; } } // 分配内存 pPageFileInfo = (PSAPI_PAGE_FILE_INFORMATION)malloc(size); if (!pPageFileInfo) return 1; // 实际查询 if (QueryPageFileConfiguration(NULL, &size, pPageFileInfo)) { // 遍历所有页面文件配置 for (DWORD i = 0; i < pPageFileInfo->NumberOfPageFiles; i++) { wprintf(L"Pagefile on drive: %s\n", pPageFileInfo->PageFile[i].PageFileName); } } free(pPageFileInfo); return 0; } |
直接文件系统扫描
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
bool HasPagefile(LPCWSTR drive) { WCHAR path[MAX_PATH]; swprintf_s(path, L"%s\\pagefile.sys", drive); HANDLE hFile = CreateFileW( path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_FLAG_NO_BUFFERING, NULL ); if (hFile == INVALID_HANDLE_VALUE) { return false; } // 检查文件保护标志 BY_HANDLE_FILE_INFORMATION fileInfo; if (GetFileInformationByHandle(hFile, &fileInfo)) { // FILE_ATTRIBUTE_SYSTEM 且 FILE_ATTRIBUTE_HIDDEN if ((fileInfo.dwFileAttributes & (FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN)) != 0) { CloseHandle(hFile); return true; } } CloseHandle(hFile); return false; } |
声明:本文为原创文章,版权归Aet所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ Windbg:命令实践详解二03/28
- ♥ Windbg:命令总览学习一04/06
- ♥ WindowsETW进程监控相关03/17
- ♥ Windows核心编程_必备知识04/27
- ♥ Windows高级调试_调试器03/19
- ♥ 包管理器:各平台安装卸载相关记述09/17