GetWriteWatch-Funktion (memoryapi.h)
Ruft die Adressen der Seiten ab, die in eine Region mit virtuellem Arbeitsspeicher geschrieben werden.
64-Bit-Windows auf Itanium-basierten Systemen: Aufgrund der unterschiedlichen Seitengrößen wird GetWriteWatch für 32-Bit-Anwendungen nicht unterstützt.
Syntax
UINT GetWriteWatch(
[in] DWORD dwFlags,
[in] PVOID lpBaseAddress,
[in] SIZE_T dwRegionSize,
[out] PVOID *lpAddresses,
[in, out] ULONG_PTR *lpdwCount,
[out] LPDWORD lpdwGranularity
);
Parameter
[in] dwFlags
Gibt an, ob die Funktion den Schreibnachverfolgungsstatus zurücksetzt.
Um den Zustand der Schreibnachverfolgung zurückzusetzen, legen Sie diesen Parameter auf WRITE_WATCH_FLAG_RESET fest. Wenn dieser Parameter 0 (null) ist, setzt GetWriteWatch den Schreibnachverfolgungsstatus nicht zurück. Weitere Informationen finden Sie in diesem Thema im Abschnitt „Hinweise“.
[in] lpBaseAddress
Die Basisadresse des Speicherbereichs, für den Schreibnachverfolgungsinformationen abgerufen werden sollen.
Diese Adresse muss sich in einer Speicherregion befinden, die von der VirtualAlloc-Funktion mithilfe von MEM_WRITE_WATCH zugewiesen wird.
[in] dwRegionSize
Die Größe des Speicherbereichs, für den Schreibnachverfolgungsinformationen in Bytes abgerufen werden sollen.
[out] lpAddresses
Ein Zeiger auf einen Puffer, der ein Array von Seitenadressen im Speicherbereich empfängt.
Die Adressen geben die Seiten an, die geschrieben wurden, nachdem die Region zugeordnet oder der Schreibstatus zurückgesetzt wurde.
[in, out] lpdwCount
Bei der Eingabe gibt diese Variable die Größe des arrays lpAddresses in Arrayelementen an.
Bei der Ausgabe empfängt die Variable die Anzahl der Seitenadressen, die im Array zurückgegeben werden.
[out] lpdwGranularity
Ein Zeiger auf eine Variable, die die Seitengröße in Bytes empfängt.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert 0 (null).
Wenn die Funktion fehlschlägt, ist der Rückgabewert ein Nonzero-Wert.
Hinweise
Wenn Sie die VirtualAlloc-Funktion aufrufen, um Arbeitsspeicher zu reservieren oder zu commiten, können Sie MEM_WRITE_WATCH angeben. Dieser Wert bewirkt, dass das System die Seiten nachverfolgt, die in den committeten Speicherbereich geschrieben werden. Sie können die GetWriteWatch-Funktion aufrufen, um die Adressen der Seiten abzurufen, in die geschrieben wurde, nachdem die Region zugewiesen oder der Schreibnachverfolgungsstatus zurückgesetzt wurde.
Um den Schreibnachverfolgungszustand zurückzusetzen, legen Sie den WRITE_WATCH_FLAG_RESET-Wert im dwFlags-Parameter fest. Alternativ können Sie die ResetWriteWatch-Funktion aufrufen, um den Zustand der Schreibnachverfolgung zurückzusetzen. Wenn Sie ResetWriteWatch verwenden, müssen Sie jedoch sicherstellen, dass während des Intervalls zwischen den Aufrufen von GetWriteWatch und ResetWriteWatch keine Threads in die Region schreiben. Andernfalls gibt es möglicherweise geschriebene Seiten, die Sie nicht erkennen.
Die GetWriteWatch-Funktion kann für Profiler, Debugtools oder Garbage Collectors nützlich sein.
Anforderungen
Unterstützte Mindestversion (Client) | Windows XP [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | memoryapi.h (einschließlich Windows.h, Memoryapi.h) |
Bibliothek | onecore.lib |
DLL | Kernel32.dll |