GetProcessWorkingSetSize 函数 (memoryapi.h)

检索指定进程的最小和最大工作集大小。

语法

BOOL GetProcessWorkingSetSize(
  [in]  HANDLE  hProcess,
  [out] PSIZE_T lpMinimumWorkingSetSize,
  [out] PSIZE_T lpMaximumWorkingSetSize
);

parameters

[in] hProcess

将获取其工作集大小的进程的句柄。 句柄必须具有 PROCESS_QUERY_INFORMATIONPROCESS_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

另请参阅

进程工作集

进程

SetProcessWorkingSetSize 函数

SetProcessWorkingSetSizeEx 函数