GetWriteWatch 函式 (memoryapi.h)
擷取寫入虛擬記憶體區域中的頁面位址。
Itanium 系統上的 64 位 Windows: 由於頁面大小的差異,32 位應用程式不支援 GetWriteWatch 。
語法
UINT GetWriteWatch(
[in] DWORD dwFlags,
[in] PVOID lpBaseAddress,
[in] SIZE_T dwRegionSize,
[out] PVOID *lpAddresses,
[in, out] ULONG_PTR *lpdwCount,
[out] LPDWORD lpdwGranularity
);
參數
[in] dwFlags
指出函式是否重設寫入追蹤狀態。
若要重設寫入追蹤狀態,請將此參數設定為 WRITE_WATCH_FLAG_RESET。 如果此參數為 0 (零) , GetWriteWatch 不會重設寫入追蹤狀態。 如需詳細資訊,請參閱本主題的一節。
[in] lpBaseAddress
要擷取寫入追蹤資訊的記憶體區域基底位址。
此位址必須位於使用 MEM_WRITE_WATCH 的 VirtualAlloc函式所配置的記憶體區域中。
[in] dwRegionSize
要擷取寫入追蹤資訊的記憶體區域大小,以位元組為單位。
[out] lpAddresses
緩衝區的指標,可接收記憶體區域中的頁面位址陣列。
位址表示自從已配置區域或已重設寫入追蹤狀態以來已寫入的頁面。
[in, out] lpdwCount
在輸入時,這個變數會指出陣列元素中的 lpAddresses 陣列大小。
在輸出上,變數會接收陣列中傳回的頁面位址數目。
[out] lpdwGranularity
以位元組為單位接收頁面大小的變數指標。
傳回值
如果函式成功,傳回值為 0 (零) 。
如果函式失敗,則傳回值是非零值。
備註
當您呼叫 VirtualAlloc 函式來保留或認可記憶體時,您可以指定 MEM_WRITE_WATCH。 這個值會使系統追蹤寫入認可記憶體區域中的頁面。 您可以呼叫 GetWriteWatch 函式,以擷取自從配置區域或已重設寫入追蹤狀態以來已寫入的頁面位址。
若要重設寫入追蹤狀態,請在dwFlags參數中設定WRITE_WATCH_FLAG_RESET值。 或者,您也可以呼叫 ResetWriteWatch 函式來重設寫入追蹤狀態。 不過,如果您使用 ResetWriteWatch,則必須確保 GetWriteWatch 和 ResetWriteWatch 呼叫之間的間隔期間,沒有任何執行緒寫入區域。 否則,可能會有未偵測到的寫入頁面。
GetWriteWatch函式對分析工具、偵錯工具或垃圾收集行程很有用。
需求
最低支援的用戶端 | Windows XP [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2003 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | memoryapi.h (包括 Windows.h、Memoryapi.h) |
程式庫 | onecore.lib |
DLL | Kernel32.dll |