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를 사용하는 경우 GetWriteWatch와 ResetWriteWatch 호출 사이의 간격 동안 해당 지역에 스레드가 기록되지 않도록 해야 합니다. 그렇지 않으면 감지하지 못한 페이지가 기록될 수 있습니다.
GetWriteWatch 함수는 프로파일러, 디버깅 도구 또는 가비지 수집기에서 유용할 수 있습니다.
요구 사항
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | memoryapi.h(Windows.h, Memoryapi.h 포함) |
라이브러리 | onecore.lib |
DLL | Kernel32.dll |