GetWsChanges, fonction (psapi.h)
Récupère des informations sur les pages qui ont été ajoutées au jeu de travail du processus spécifié depuis la dernière fois que cette fonction ou la fonction InitializeProcessForWsWatch a été appelée.
Pour récupérer des informations étendues, utilisez la fonction GetWsChangesEx .
Syntaxe
BOOL GetWsChanges(
[in] HANDLE hProcess,
[out] PPSAPI_WS_WATCH_INFORMATION lpWatchInfo,
[in] DWORD cb
);
Paramètres
[in] hProcess
Handle du processus. Le handle doit avoir le droit d’accès PROCESS_QUERY_INFORMATION . Pour plus d’informations, consultez Droits d’accès et de sécurité des processus.
[out] lpWatchInfo
Pointeur vers une mémoire tampon allouée par l’utilisateur qui reçoit un tableau de structures PSAPI_WS_WATCH_INFORMATION . Le tableau se termine par une structure dont le membre FaultingPc est NULL.
[in] cb
Taille de la mémoire tampon lpWatchInfo , en octets.
Valeur retournée
Si la fonction réussit, la valeur de retour est différente de zéro.
Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.
GetLastError retourne ERROR_INSUFFICIENT_BUFFER si la mémoire tampon lpWatchInfo n’est pas suffisamment grande pour contenir tous les enregistrements de modification du jeu de travail ; la mémoire tampon est retournée vide. Réallouer un bloc de mémoire plus grand pour la mémoire tampon et appeler à nouveau.
Remarques
Le système d’exploitation utilise une mémoire tampon par processus pour gérer les enregistrements des modifications de jeu de travail. Si plusieurs applications (ou plusieurs threads dans la même application) appellent cette fonction avec le même handle de processus, aucune des applications n’aura une comptabilité complète des modifications du jeu de travail, car chaque appel vide la mémoire tampon.
Le système d’exploitation n’enregistre pas les nouveaux enregistrements de modification pendant qu’il traite la requête (et vide la mémoire tampon). La fonction définit le code d’erreur sur NO_MORE_ENTRIES si une requête simultanée est reçue pendant le traitement d’une autre requête.
Si la mémoire tampon devient saturée, aucun nouvel enregistrement n’est ajouté à la mémoire tampon tant que cette fonction ou la fonction InitializeProcessForWsWatch n’est pas appelée. Vous devez appeler cette méthode avec suffisamment de fréquence pour éviter une perte de données possible. Si des enregistrements sont perdus, le tableau se termine par une structure dont le membre FaultingPc est NULL et dont le membre FaultingVa est défini sur le nombre d’enregistrements perdus.
Windows Server 2003 et Windows XP : Si des enregistrements sont perdus, le tableau se termine par une structure dont le membre FaultingPc est NULL et dont le membre FaultingVa est 1.
À compter de Windows 7 et Windows Server 2008 R2, Psapi.h établit des numéros de version pour les fonctions PSAPI. Le numéro de version PSAPI affecte le nom utilisé pour appeler la fonction et la bibliothèque qu’un programme doit charger.
Si PSAPI_VERSION a la valeur 2 ou supérieure, cette fonction est définie comme K32GetWsChanges dans Psapi.h et exportée dans Kernel32.lib et Kernel32.dll. Si PSAPI_VERSION a la valeur 1, cette fonction est définie comme GetWsChanges dans Psapi.h et exportée dans Psapi.lib et Psapi.dll en tant que wrapper qui appelle K32GetWsChanges.
Les programmes qui doivent s’exécuter sur des versions antérieures de Windows ainsi que sur Windows 7 et versions ultérieures doivent toujours appeler cette fonction GetWsChanges. Pour garantir une résolution correcte des symboles, ajoutez Psapi.lib à la macro TARGETLIBS et compilez le programme avec -DPSAPI_VERSION=1. Pour utiliser la liaison dynamique au moment de l’exécution, chargez Psapi.dll.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows XP [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | psapi.h |
Bibliothèque | Kernel32.lib sur Windows 7 et Windows Server 2008 R2 ; Psapi.lib (si PSAPI_VERSION=1) sur Windows 7 et Windows Server 2008 R2 ; Psapi.lib sur Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP |
DLL | Kernel32.dll sur Windows 7 et Windows Server 2008 R2 ; Psapi.dll (si PSAPI_VERSION=1) sur Windows 7 et Windows Server 2008 R2 ; Psapi.dll sur Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP |