Funzione GetWsChangesEx (psapi.h)
Recupera informazioni estese sulle pagine aggiunte al working set del processo specificato dall'ultima volta che questa funzione o la funzione InitializeProcessForWsWatch è stata chiamata.
Sintassi
BOOL GetWsChangesEx(
[in] HANDLE hProcess,
[out] PPSAPI_WS_WATCH_INFORMATION_EX lpWatchInfoEx,
[in, out] PDWORD cb
);
Parametri
[in] hProcess
Handle per il processo. L'handle deve avere il diritto di accesso PROCESS_QUERY_INFORMATION . Per altre informazioni, vedere Sicurezza dei processi e diritti di accesso.
[out] lpWatchInfoEx
Puntatore a un buffer allocato dall'utente che riceve una matrice di
PSAPI_WS_WATCH_INFORMATION_EX strutture. La matrice viene terminata con una struttura il cui membro FaultingPc è NULL.
[in, out] cb
Dimensioni del buffer lpWatchInfoEx , in byte.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è diverso da zero.
Se la funzione ha esito negativo, il valore restituito è zero. Per ottenere informazioni sull'errore estese, chiamare la funzione GetLastError .
La funzione GetLastError restituisce ERROR_INSUFFICIENT_BUFFER se il buffer lpWatchInfoEx non è sufficientemente grande da contenere tutti i record di modifica del working set; il buffer viene restituito vuoto. Riallocare un blocco di memoria più grande per il buffer e chiamare di nuovo.
Commenti
Il sistema operativo usa un buffer per processo per mantenere i record delle modifiche del working set. Se più di un'applicazione (o più thread nella stessa applicazione) chiama questa funzione con lo stesso handle di processo, nessuna delle due applicazioni avrà una contabilità completa delle modifiche del working set perché ogni chiamata svuota il buffer.
Il sistema operativo non registra nuovi record di modifica durante l'elaborazione della query e l'svuotamento del buffer. Questa funzione imposta il codice di errore su NO_MORE_ENTRIES se viene ricevuta una query simultanea durante l'elaborazione di un'altra query.
Se il buffer diventa pieno, non vengono aggiunti nuovi record al buffer finché non viene chiamata questa funzione o la funzione InitializeProcessForWsWatch . È consigliabile chiamare GetWsChangesEx con una frequenza sufficiente per evitare possibili perdite di dati. Se i record vengono persi, la matrice viene terminata con una struttura il cui membro FaultingPc è NULL e il cui membro FaultingVa viene impostato sul numero di record persi.
A partire da Windows 7 e Windows Server 2008 R2, Psapi.h stabilisce i numeri di versione per le funzioni PSAPI. Il numero di versione PSAPI influisce sul nome usato per chiamare la funzione e la libreria che un programma deve caricare.
Se PSAPI_VERSION è 2 o versione successiva, questa funzione viene definita come K32GetWsChangesEx in Psapi.h ed esportata in Kernel32.lib e Kernel32.dll. Se PSAPI_VERSION è 1, questa funzione viene definita come GetWsChangesEx in Psapi.h ed esportata in Psapi.lib e Psapi.dll come wrapper che chiama K32GetWsChangesEx.
I programmi che devono essere eseguiti in versioni precedenti di Windows e Windows 7 e versioni successive devono sempre chiamare questa funzione come GetWsChangesEx. Per garantire la risoluzione corretta dei simboli, aggiungere Psapi.lib alla macro TARGETLIBS e compilare il programma con -DPSAPI_VERSION=1. Per usare il collegamento dinamico in fase di esecuzione, caricare Psapi.dll.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista [solo app desktop] |
Server minimo supportato | Windows Server 2008 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | psapi.h |
Libreria | Kernel32.lib in Windows 7 e Windows Server 2008 R2; Psapi.lib (se PSAPI_VERSION=1) in Windows 7 e Windows Server 2008 R2; Psapi.lib in Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP |
DLL | Kernel32.dll in Windows 7 e Windows Server 2008 R2; Psapi.dll (se PSAPI_VERSION=1) in Windows 7 e Windows Server 2008 R2; Psapi.dll in Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP |