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

Siehe auch

Speicherverwaltungsfunktionen

ResetWriteWatch

VirtualAlloc