Share via


GetProcessWorkingSetSize 函式 (memoryapi.h)

擷取指定進程的最小和最大工作集大小。

語法

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

參數

[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
程式庫 onecore.lib
DLL Kernel32.dll

另請參閱

進程工作集

程序

SetProcessWorkingSetSize 函式

SetProcessWorkingSetSizeEx 函式