GetProcessWorkingSetSize 函式 (memoryapi.h)
擷取指定進程的最小和最大工作集大小。
語法
BOOL GetProcessWorkingSetSize(
[in] HANDLE hProcess,
[out] PSIZE_T lpMinimumWorkingSetSize,
[out] PSIZE_T lpMaximumWorkingSetSize
);
參數
[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 |
程式庫 | onecore.lib |
DLL | Kernel32.dll |