다음을 통해 공유


GetWriteWatch 함수(memoryapi.h)

가상 메모리 영역에 기록된 페이지의 주소를 검색합니다.

Itanium 기반 시스템의 64비트 Windows: 페이지 크기의 차이로 인해 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

쓰기 추적 정보를 검색할 메모리 영역의 기본 주소입니다.

이 주소는 MEM_WRITE_WATCH 사용하여 VirtualAlloc 함수에 의해 할당된 메모리 영역에 있어야 합니다.

[in] dwRegionSize

쓰기 추적 정보를 검색할 메모리 영역의 크기(바이트)입니다.

[out] lpAddresses

메모리 영역의 페이지 주소 배열을 수신하는 버퍼에 대한 포인터입니다.

주소는 지역이 할당되었거나 쓰기 추적 상태가 다시 설정된 이후 작성된 페이지를 나타냅니다.

[in, out] lpdwCount

입력 시 이 변수는 배열 요소에서 lpAddresses 배열의 크기를 나타냅니다.

출력 시 변수는 배열에 반환되는 페이지 주소 수를 받습니다.

[out] lpdwGranularity

페이지 크기를 수신하는 변수에 대한 포인터(바이트)입니다.

반환 값

함수가 성공하면 반환 값은 0입니다.

함수가 실패하면 반환 값은 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