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,則必須確保 GetWriteWatchResetWriteWatch 呼叫之間的間隔期間,沒有任何執行緒寫入區域。 否則,可能會有未偵測到的寫入頁面。

GetWriteWatch函式對分析工具、偵錯工具或垃圾收集行程很有用。

需求

   
最低支援的用戶端 Windows XP [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2003 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 memoryapi.h (包括 Windows.h、Memoryapi.h)
程式庫 onecore.lib
DLL Kernel32.dll

另請參閱

記憶體管理功能

ResetWriteWatch

VirtualAlloc