Функция GetWsChangesEx (psapi.h)
Извлекает расширенные сведения о страницах, добавленных в рабочий набор указанного процесса с момента последнего вызова этой функции или функции InitializeProcessForWsWatch .
Синтаксис
BOOL GetWsChangesEx(
[in] HANDLE hProcess,
[out] PPSAPI_WS_WATCH_INFORMATION_EX lpWatchInfoEx,
[in, out] PDWORD cb
);
Параметры
[in] hProcess
Дескриптор процесса. Дескриптор должен иметь право доступа к PROCESS_QUERY_INFORMATION . Дополнительные сведения см. в разделе Управление правами на доступ и безопасность процесса.
[out] lpWatchInfoEx
Указатель на буфер, выделенный пользователем, который получает массив
PSAPI_WS_WATCH_INFORMATION_EX структуры. Массив завершается структурой, член Которой FaultingPc имеет значение NULL.
[in, out] cb
Размер буфера lpWatchInfoEx в байтах.
Возвращаемое значение
Если функция выполняется успешно, возвращается ненулевое значение.
Если функция выполняется неудачно, возвращается нулевое значение. Чтобы получить расширенные сведения об ошибке, вызовите функцию GetLastError .
Функция GetLastError возвращает ERROR_INSUFFICIENT_BUFFER , если буфер lpWatchInfoEx недостаточно велик, чтобы содержать все записи изменений рабочего набора; буфер возвращается пустым. Перераспределять больший блок памяти для буфера и снова вызывать.
Комментарии
Операционная система использует один буфер для каждого процесса для поддержания записей изменений рабочего набора. Если несколько приложений (или несколько потоков в одном приложении) вызывают эту функцию с одним дескриптором процесса, ни одно из них не будет иметь полного учета изменений рабочего набора, так как каждый вызов очищает буфер.
Операционная система не записывает новые записи об изменениях во время обработки запроса (и очистки буфера). Эта функция задает код ошибки NO_MORE_ENTRIES , если во время обработки другого запроса получен параллельный запрос.
Если буфер заполнится, новые записи не добавляются в буфер, пока не будет вызвана эта функция или функция InitializeProcessForWsWatch . Метод GetWsChangesEx следует вызывать с достаточной частотой, чтобы предотвратить возможную потерю данных. При потере записей массив завершается структурой, член FaultingPc которой имеет значение NULL, а для элемента FaultingVa задано количество потерянных записей.
Начиная с Windows 7 и Windows Server 2008 R2, Psapi.h устанавливает номера версий для функций PSAPI. Номер версии PSAPI влияет на имя, используемое для вызова функции, и библиотеку, которую должна загрузить программа.
Если PSAPI_VERSION имеет значение 2 или больше, эта функция определяется как K32GetWsChangesEx в Psapi.h и экспортируется в Kernel32.lib и Kernel32.dll. Если PSAPI_VERSION равно 1, эта функция определяется как GetWsChangesEx в Psapi.h и экспортируется в Psapi.lib и Psapi.dll в виде оболочки, которая вызывает K32GetWsChangesEx.
Программы, которые должны работать в более ранних версиях Windows, а также Windows 7 и более поздних версиях, всегда должны вызывать эту функцию как GetWsChangesEx. Чтобы обеспечить правильное разрешение символов, добавьте Psapi.lib в макрос TARGETLIBS и скомпилируйте программу с параметром -DPSAPI_VERSION=1. Чтобы использовать динамическое связывание во время выполнения, загрузите Psapi.dll.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | psapi.h |
Библиотека | Kernel32.lib в Windows 7 и Windows Server 2008 R2; Psapi.lib (если PSAPI_VERSION=1) в Windows 7 и Windows Server 2008 R2; Psapi.lib в Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP |
DLL | Kernel32.dll в Windows 7 и Windows Server 2008 R2; Psapi.dll (если PSAPI_VERSION=1) в Windows 7 и Windows Server 2008 R2; Psapi.dll в Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP |