Поделиться через


Функция 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

См. также

Функции управления памятью

ResetWriteWatch

VirtualAlloc