GetProcessWorkingSetSize 函数 (memoryapi.h)
检索指定进程的最小和最大工作集大小。
语法
BOOL GetProcessWorkingSetSize(
[in] HANDLE hProcess,
[out] PSIZE_T lpMinimumWorkingSetSize,
[out] PSIZE_T lpMaximumWorkingSetSize
);
parameters
[in] hProcess
将获取其工作集大小的进程的句柄。 句柄必须具有 PROCESS_QUERY_INFORMATION 或 PROCESS_QUERY_LIMITED_INFORMATION 访问权限。 有关详细信息,请参阅 进程安全性和访问权限。
Windows Server 2003 和 Windows XP: 句柄必须具有 PROCESS_QUERY_INFORMATION 访问权限。
[out] lpMinimumWorkingSetSize
指向变量的指针,该变量接收指定进程的最小工作集大小(以字节为单位)。 每当进程处于活动状态时,虚拟内存管理器会尝试将至少如此多的内存保留在进程中。
[out] lpMaximumWorkingSetSize
指向变量的指针,该变量接收指定进程的最大工作集大小(以字节为单位)。 每当内存不足时,当进程处于活动状态时,虚拟内存管理器会尝试将驻留在进程中的内存不超过这么多内存。
返回值
如果该函数成功,则返回值为非零值。
如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。
注解
进程的“工作集”是当前对物理 RAM 内存中的进程可见的内存页集。 这些页是常驻的,可供应用程序使用,而不会触发页面错误。 最小和最大工作集大小会影响进程的虚拟内存分页行为。
示例
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
SIZE_T dwMin, dwMax;
HANDLE hProcess;
if (argc != 2)
{
printf("This program requires a process ID as an argument.\n");
return 1;
}
// Retrieve a handle to the process.
hProcess = OpenProcess( PROCESS_QUERY_INFORMATION,
FALSE, atoi(argv[1]));
if (!hProcess)
{
printf( "OpenProcess failed (%d)\n", GetLastError() );
return 1;
}
// Retrieve the working set size of the process.
if (!GetProcessWorkingSetSize(hProcess, &dwMin, &dwMax))
{
printf("GetProcessWorkingSetSize failed (%d)\n",
GetLastError());
return 1;
}
printf("Process ID: %d\n", atoi(argv[1]));
printf("Minimum working set: %lu KB\n", dwMin/1024);
printf("Maximum working set: %lu KB\n", dwMax/1024);
CloseHandle(hProcess);
return 0;
}
要求
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
标头 | memoryapi.h |
Library | onecore.lib |
DLL | Kernel32.dll |