GetWsChangesEx, fonction (psapi.h)
Récupère des informations étendues 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.
Syntaxe
BOOL GetWsChangesEx(
[in] HANDLE hProcess,
[out] PPSAPI_WS_WATCH_INFORMATION_EX lpWatchInfoEx,
[in, out] PDWORD 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 Traiter les droits de sécurité et d’accès.
[out] lpWatchInfoEx
Pointeur vers une mémoire tampon allouée par l’utilisateur qui reçoit un tableau de
PSAPI_WS_WATCH_INFORMATION_EX structures. Le tableau se termine par une structure dont le membre FaultingPc est NULL.
[in, out] cb
Taille de la mémoire tampon lpWatchInfoEx , 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 la fonction GetLastError.
La fonction GetLastError retourne ERROR_INSUFFICIENT_BUFFER si la mémoire tampon lpWatchInfoEx n’est pas assez 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 de 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 deux applications n’aura une comptabilité complète des modifications de l’ensemble de travail, car chaque appel vide la mémoire tampon.
Le système d’exploitation n’enregistre pas les nouveaux enregistrements de modification pendant le traitement de la requête (et la vidage de la mémoire tampon). Cette 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 pleine, 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 GetWsChangesEx avec suffisamment de fréquence pour éviter toute perte de données. 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.
À compter de Windows 7 et Windows Server 2008 R2, Psapi.h établit les 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 est égal ou supérieur à 2, cette fonction est définie comme K32GetWsChangesEx 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 GetWsChangesEx dans Psapi.h et exportée dans Psapi.lib et Psapi.dll en tant que wrapper qui appelle K32GetWsChangesEx.
Les programmes qui doivent s’exécuter sur des versions antérieures de Windows, de Windows 7 et versions ultérieures doivent toujours appeler cette fonction GetWsChangesEx. 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 Vista [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2008 [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 |