共用方式為


GetWsChanges 函式 (psapi.h)

擷取自上次呼叫此函式或 InitializeProcessForWsWatch 函式以來,已新增至指定進程工作集的頁面相關信息。

若要擷取擴充資訊,請使用 GetWsChangesEx 函式。

語法

BOOL GetWsChanges(
  [in]  HANDLE                      hProcess,
  [out] PPSAPI_WS_WATCH_INFORMATION lpWatchInfo,
  [in]  DWORD                       cb
);

參數

[in] hProcess

進程的句柄。 句柄必須具有 PROCESS_QUERY_INFORMATION 訪問許可權。 如需詳細資訊,請參閱 處理安全性和訪問許可權

[out] lpWatchInfo

使用者配置的緩衝區指標,可接收 PSAPI_WS_WATCH_INFORMATION 結構的陣列。 陣列是以 FaultingPc 成員為NULL的結構終止。

[in] cb

lpWatchInfo 緩衝區的大小,以位元組為單位。

傳回值

如果函式成功,則傳回非零的值。

如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

如果 lpWatchInfo 緩衝區不足以包含所有工作集變更記錄,GetLastError 會傳回ERROR_INSUFFICIENT_BUFFER;緩衝區會傳回空白。 重新配置緩衝區的較大記憶體區塊,然後再呼叫一次。

備註

操作系統會針對每個進程使用一個緩衝區來維護工作集變更記錄。 如果相同應用程式中有多個應用程式 (或多個線程) 使用相同的進程句柄呼叫此函式,則兩個應用程式都不會有工作集變更的完整會計,因為每個呼叫都會清空緩衝區。

當操作系統正在處理查詢 (並清空緩衝區時,不會記錄新的變更記錄) 。 函式會在處理另一個查詢時收到並行查詢時,將錯誤碼設定為 NO_MORE_ENTRIES

如果緩衝區已滿,在呼叫此函式或 InitializeProcessForWsWatch 函式之前,不會將任何新記錄新增至緩衝區。 您應該以足夠的頻率呼叫這個方法,以避免數據遺失。 如果記錄遺失,陣列會終止結構,其 FaultingPc 成員為NULL,且 FaultingVa 成員設定為遺失的記錄數目。

Windows Server 2003 和 Windows XP: 如果記錄遺失,陣列會以 FaultingPc 成員為NULL且 FaultingVa 成員為1的結構終止。

從 Windows 7 和 Windows Server 2008 R2 開始,Psapi.h 會建立 PSAPI 函式的版本號碼。 PSAPI 版本號碼會影響用來呼叫函式的名稱,以及程式必須載入的連結庫。

如果 PSAPI_VERSION 為 2 或更新版本,此函式會在 Psapi.h 中定義為 K32GetWsChanges,並在 Kernel32.lib 中導出,並 Kernel32.dll。 如果 PSAPI_VERSION 為 1,此函式會在 Psapi.h 中定義為 GetWsChanges ,並在 Psapi.lib 中導出,並 Psapi.dll 為呼叫 K32GetWsChanges 的包裝函式。

必須在舊版 Windows 和 Windows 7 和更新版本上執行的程式應該一律將此函式呼叫為 GetWsChanges。 若要確保符號的正確解析,請將 Psapi.lib 新增至 TARGETLIBS 宏,並使用 -DPSAPI_VERSION=1 編譯程式。 若要使用運行時間動態連結,請載入 Psapi.dll。

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 psapi.h
程式庫 Windows 7 和 Windows Server 2008 R2 上的 Kernel32.lib;如果 Windows 7 和 Windows Server 2008 R2 上的 PSAPI_VERSION=1) ,Psapi.lib (;Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP 上的 Psapi.lib
Dll windows 7 和 Windows Server 2008 R2 上的 Kernel32.dll;如果 windows 7 和 Windows Server 2008 R2 上的 PSAPI_VERSION=1) ,Psapi.dll (;Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP 上的 Psapi.dll

另請參閱

EnumProcesses

InitializeProcessForWsWatch

PSAPI 函式

PSAPI_WS_WATCH_INFORMATION

工作集資訊