仮想メモリ領域内で書き込まれたページのアドレスを取得する。
GetWriteWatch dwFlags, lpBaseAddress, dwRegionSize, lpAddresses, lpdwCount, lpdwGranularity
dwFlags : [int] 関数が書き込み追跡状態をリセットするかどうかを示す。書き込み追跡状態をリセットするには、このパラメータを WRITE_WATCH_FLAG_RESET に設定する。このパラメータが 0 の場合、GetWriteWatch は書き込み追跡状態をリセットしない。詳細はこのトピックの備考セクションを参照。 lpBaseAddress : [intptr] 書き込み追跡情報を取得するメモリ領域のベースアドレス。このアドレスは、MEM_WRITE_WATCH を使用して VirtualAlloc 関数で確保されたメモリ領域内になければならない。 dwRegionSize : [int] 書き込み追跡情報を取得するメモリ領域のサイズ(バイト単位)。 lpAddresses : [var] メモリ領域内のページアドレスの配列を受け取るバッファへのポインタ。アドレスは、領域が確保されてから、または書き込み追跡状態がリセットされてから書き込まれたページを示す。 lpdwCount : [var] 入力時、この変数は lpAddresses 配列のサイズ(配列要素単位)を示す。出力時、変数は配列に返されたページアドレスの数を受け取る。 lpdwGranularity : [var] ページサイズ(バイト単位)を受け取る変数へのポインタ。
(プラグイン / モジュール : kernel32.dll)
仮想メモリ領域内で書き込まれたページのアドレスを取得する。 [戻り値] 関数が成功した場合、戻り値は 0。関数が失敗した場合、戻り値は 0 以外の値。 [備考] VirtualAlloc 関数を呼び出してメモリを予約またはコミットする際に MEM_WRITE_WATCH を指定できる。この値はシステムにコミットされたメモリ領域内で書き込まれたページを追跡させる。GetWriteWatch 関数を呼び出して、領域が確保されてから、または書き込み追跡状態がリセットされてから書き込まれたページのアドレスを取得できる。書き込み追跡状態をリセットするには、dwFlags パラメータに WRITE_WATCH_FLAG_RESET 値を設定する。あるいは、ResetWriteWatch 関数を呼び出して書き込み追跡状態をリセットできる。ただし、ResetWriteWatch を使用する場合、GetWriteWatch と ResetWriteWatch 呼び出しの間にスレッドが領域に書き込まないようにする必要がある。そうしないと、検出されない書き込まれたページが存在する可能性がある。GetWriteWatch 関数はプロファイラ、デバッグツール、ガベージコレクタにとって有用である。
| プラグイン / モジュール | kernel32.dll |
| バージョン | 1.0 |
| 作成日 | 2026/04/16 |
| 著作者 | IronHSP / CsWin32 bridge |
| URL | https://github.com/inovia/IronHSP |
| 備考 | Win32 API の kernel32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。 |
| タイプ | 拡張命令 |
| グループ | Win32API |
| 対応環境 |
|
| hs ファイル | hsphelp\win32_kernel32_gen2.hs |