Функция GetWriteWatch (memoryapi.h)
Извлекает адреса страниц, на которые записываются данные в регионе виртуальной памяти.
64-разрядная версия Windows в системах на основе Itanium: Из-за разницы в размерах страниц GetWriteWatch не поддерживается для 32-разрядных приложений.
Синтаксис
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
Базовый адрес области памяти, для которой требуется получить сведения об отслеживании записи.
Этот адрес должен находиться в области памяти, выделенной функцией VirtualAlloc с помощью MEM_WRITE_WATCH.
[in] dwRegionSize
Размер области памяти, для которой требуется получить данные отслеживания записи, в байтах.
[out] lpAddresses
Указатель на буфер, получающий массив адресов страниц в области памяти.
Адреса указывают страницы, на которые были записаны с момента выделения региона или сброса состояния отслеживания записи.
[in, out] lpdwCount
На входных данных эта переменная указывает размер массива lpAddresses в элементах массива.
В выходных данных переменная получает количество адресов страниц, возвращаемых в массиве.
[out] lpdwGranularity
Указатель на переменную, которая получает размер страницы в байтах.
Возвращаемое значение
Если функция выполняется успешно, возвращаемое значение равно 0 (ноль).
Если функция завершается сбоем, возвращается ненулевое значение.
Комментарии
При вызове функции VirtualAlloc для резервирования или фиксации памяти можно указать MEM_WRITE_WATCH. Это значение приводит к тому, что система отслеживает страницы, записанные в область зафиксированной памяти. Вы можете вызвать функцию GetWriteWatch , чтобы получить адреса страниц, на которые были записаны с момента выделения региона или сброса состояния отслеживания записи.
Чтобы сбросить состояние отслеживания записи, задайте значение WRITE_WATCH_FLAG_RESET в параметре dwFlags . Кроме того, можно вызвать функцию ResetWriteWatch , чтобы сбросить состояние отслеживания записи. Однако при использовании ResetWriteWatch необходимо убедиться, что потоки не записывают данные в регион в течение интервала между вызовами GetWriteWatch и ResetWriteWatch . В противном случае могут быть записанные страницы, которые не будут обнаружены.
Функция GetWriteWatch может быть полезна для профилировщиков, средств отладки или сборщиков мусора.
Требования
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | memoryapi.h (включая Windows.h, Memoryapi.h) |
Библиотека | onecore.lib |
DLL | Kernel32.dll |