Поделиться через


Функция 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.

Комментарии

Рабочий набор процесса — это набор страниц памяти, видимых в настоящее время процессу в физической памяти ОЗУ. Эти страницы являются резидентными и доступны для использования приложением без активации ошибки страницы. Минимальный и максимальный размеры рабочего набора влияют на режим разбиения на страницы виртуальной памяти процесса.

Примеры

#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