GetWsChanges-Funktion (psapi.h)
Ruft Informationen zu den Seiten ab, die dem Arbeitssatz des angegebenen Prozesses seit dem letzten Aufruf dieser Funktion oder der InitializeProcessForWsWatch-Funktion hinzugefügt wurden.
Verwenden Sie zum Abrufen erweiterter Informationen die GetWsChangesEx-Funktion .
Syntax
BOOL GetWsChanges(
[in] HANDLE hProcess,
[out] PPSAPI_WS_WATCH_INFORMATION lpWatchInfo,
[in] DWORD cb
);
Parameter
[in] hProcess
Ein Handle für den Prozess. Das Handle muss über das zugriffsrecht PROCESS_QUERY_INFORMATION verfügen. Weitere Informationen finden Sie unter Prozesssicherheit und Zugriffsrechte.
[out] lpWatchInfo
Ein Zeiger auf einen vom Benutzer zugewiesenen Puffer, der ein Array von PSAPI_WS_WATCH_INFORMATION Strukturen empfängt. Das Array wird mit einer Struktur beendet, deren FaultingPc-Member NULL ist.
[in] cb
Die Größe des lpWatchInfo-Puffers in Bytes.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.
Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.
GetLastError gibt ERROR_INSUFFICIENT_BUFFER zurück, wenn der lpWatchInfo-Puffer nicht groß genug ist, um alle Änderungsdatensätze des Arbeitssatzes zu enthalten. der Puffer wird leer zurückgegeben. Stellen Sie einen größeren Speicherblock für den Puffer neu zu, und rufen Sie erneut auf.
Hinweise
Das Betriebssystem verwendet einen Puffer pro Prozess, um Änderungsdatensätze für Arbeitssätze zu verwalten. Wenn mehr als eine Anwendung (oder mehrere Threads in derselben Anwendung) diese Funktion mit demselben Prozesshandle aufruft, verfügt keine Anwendung über eine vollständige Abrechnung der Arbeitssatzänderungen, da jeder Aufruf den Puffer leert.
Das Betriebssystem zeichnet keine neuen Änderungsdatensätze auf, während es die Abfrage verarbeitet (und den Puffer leert). Die Funktion legt den Fehlercode auf NO_MORE_ENTRIES fest, wenn eine gleichzeitige Abfrage empfangen wird, während sie eine andere Abfrage verarbeitet.
Wenn der Puffer voll ist, werden dem Puffer keine neuen Datensätze hinzugefügt, bis diese Funktion oder die InitializeProcessForWsWatch-Funktion aufgerufen wird. Sie sollten diese Methode mit ausreichender Häufigkeit aufrufen, um einen möglichen Datenverlust zu verhindern. Wenn Datensätze verloren gehen, wird das Array mit einer Struktur beendet, deren FaultingPc-Member NULL ist und deren FaultingVa-Member auf die Anzahl der verlorenen Datensätze festgelegt ist.
Windows Server 2003 und Windows XP: Wenn Datensätze verloren gehen, wird das Array mit einer Struktur beendet, deren FaultingPc-Member NULL ist und deren FaultingVa-Member 1 ist.
Ab Windows 7 und Windows Server 2008 R2 richtet Psapi.h Versionsnummern für die PSAPI-Funktionen ein. Die PSAPI-Versionsnummer wirkt sich auf den Namen aus, der zum Aufrufen der Funktion und der Bibliothek verwendet wird, die ein Programm laden muss.
Wenn PSAPI_VERSION 2 oder höher ist, wird diese Funktion als K32GetWsChanges in Psapi.h definiert und in Kernel32.lib und Kernel32.dll exportiert. Wenn PSAPI_VERSION 1 ist, wird diese Funktion als GetWsChanges in Psapi.h definiert und in Psapi.lib und Psapi.dll als Wrapper exportiert, der K32GetWsChanges aufruft.
Programme, die unter früheren Versionen von Windows sowie Windows 7 und höheren Versionen ausgeführt werden müssen, sollten diese Funktion immer als GetWsChanges aufrufen. Um die richtige Auflösung von Symbolen sicherzustellen, fügen Sie dem TARGETLIBS-Makro Psapi.lib hinzu, und kompilieren Sie das Programm mit -DPSAPI_VERSION=1. Laden Sie Psapi.dll, um dynamische Laufzeitverknüpfung zu verwenden.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | psapi.h |
Bibliothek | Kernel32.lib unter Windows 7 und Windows Server 2008 R2; Psapi.lib (wenn PSAPI_VERSION=1) unter Windows 7 und Windows Server 2008 R2; Psapi.lib unter Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP |
DLL | Kernel32.dll unter Windows 7 und Windows Server 2008 R2; Psapi.dll (wenn PSAPI_VERSION=1) unter Windows 7 und Windows Server 2008 R2; Psapi.dll unter Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP |