PROCESS_HEAP_ENTRY 구조체(minwinbase.h)
힙 요소에 대한 정보를 포함합니다. HeapWalk 함수는 PROCESS_HEAP_ENTRY 구조를 사용하여 힙의 요소를 열거합니다.
구문
typedef struct _PROCESS_HEAP_ENTRY {
PVOID lpData;
DWORD cbData;
BYTE cbOverhead;
BYTE iRegionIndex;
WORD wFlags;
union {
struct {
HANDLE hMem;
DWORD dwReserved[3];
} Block;
struct {
DWORD dwCommittedSize;
DWORD dwUnCommittedSize;
LPVOID lpFirstBlock;
LPVOID lpLastBlock;
} Region;
} DUMMYUNIONNAME;
} PROCESS_HEAP_ENTRY, *LPPROCESS_HEAP_ENTRY, *PPROCESS_HEAP_ENTRY;
멤버
lpData
힙 요소의 데이터 부분에 대한 포인터입니다.
HeapWalk 힙 열거형을 시작하려면 lpData를 NULL로 설정합니다.
wFlags 멤버에서 PROCESS_HEAP_REGION 사용하는 경우 lpData는 지역에서 사용하는 첫 번째 가상 주소를 가리킵니다.
wFlags에서 PROCESS_HEAP_UNCOMMITTED_RANGE 사용되는 경우 lpData는 커밋되지 않은 메모리 범위의 시작을 가리킵니다.
cbData
힙 요소의 데이터 부분 크기(바이트)입니다.
wFlags에서 PROCESS_HEAP_REGION 사용하는 경우 cbData는 이 지역에 예약된 주소 공간의 총 크기(바이트)를 지정합니다.
wFlags에서 PROCESS_HEAP_UNCOMMITTED_RANGE 사용되는 경우 cbData는 커밋되지 않은 메모리 범위의 크기를 바이트 단위로 지정합니다.
cbOverhead
시스템에서 힙 요소에 대한 정보를 유지 관리하는 데 사용하는 데이터의 크기(바이트)입니다. 이러한 오버헤드 바이트는 힙 요소의 데이터 부분의 cbData 바이트에 추가됩니다.
wFlags에서 PROCESS_HEAP_REGION 사용되는 경우 cbOverhead는 지역을 설명하는 힙 제어 구조의 크기(바이트)를 지정합니다.
wFlags에서 PROCESS_HEAP_UNCOMMITTED_RANGE 사용하는 경우 cbOverhead는 커밋되지 않은 이 범위를 설명하는 컨트롤 구조의 크기(바이트)를 지정합니다.
iRegionIndex
힙 요소를 포함하는 힙 영역에 대한 핸들입니다. 힙은 각각 고유한 지역 인덱스가 있는 하나 이상의 가상 메모리 영역으로 구성됩니다.
대부분의 힙 지역에 대해 반환된 첫 번째 힙 항목에서 HeapWalk는 wFlags 멤버의 PROCESS_HEAP_REGION 사용합니다. 이 값을 사용하면 Region 구조의 멤버에 지역에 대한 추가 정보가 포함됩니다.
HeapAlloc 함수는 경우에 따라 VirtualAlloc 함수를 사용하여 확장 가능한 힙에서 큰 블록을 할당합니다. 힙 관리자는 이러한 큰 블록 할당을 고유한 지역 인덱스가 있는 별도의 지역으로 처리합니다. HeapWalk 는 큰 블록 영역에 대해 반환된 힙 항목에서 PROCESS_HEAP_REGION 사용하지 않으므로 Region 구조체의 멤버가 유효하지 않습니다. VirtualQuery 함수를 사용하여 큰 블록 지역에 대한 추가 정보를 가져올 수 있습니다.
wFlags
힙 요소의 속성입니다. 일부 값은 이 PROCESS_HEAP_ENTRY 데이터 구조의 다른 멤버의 의미에 영향을 미칩니다. 다음 값이 정의됩니다.
DUMMYUNIONNAME
DUMMYUNIONNAME.Block
이 구조체는 wFlags에서 PROCESS_HEAP_ENTRY_BUSY 및 PROCESS_HEAP_ENTRY_MOVEABLE 모두 지정된 경우에만 유효합니다.
DUMMYUNIONNAME.Block.hMem
할당된 이동 가능한 메모리 블록에 대한 핸들입니다.
DUMMYUNIONNAME.Block.dwReserved[3]
예약; 사용되지 않습니다.
DUMMYUNIONNAME.Region
이 구조체는 wFlags 멤버가 PROCESS_HEAP_REGION 지정하는 경우에만 유효합니다.
DUMMYUNIONNAME.Region.dwCommittedSize
현재 사용 가능한 메모리 블록, 사용 중인 메모리 블록 또는 힙 제어 구조로 커밋된 힙 영역의 바이트 수입니다.
커밋된 바이트 수를 사용할 수 없는 경우 0으로 설정된 선택적 필드입니다.
DUMMYUNIONNAME.Region.dwUnCommittedSize
현재 커밋되지 않은 힙 지역의 바이트 수입니다.
커밋되지 않은 바이트 수를 사용할 수 없는 경우 0으로 설정된 선택적 필드입니다.
DUMMYUNIONNAME.Region.lpFirstBlock
이 힙 지역의 첫 번째 유효한 메모리 블록에 대한 포인터입니다.
DUMMYUNIONNAME.Region.lpLastBlock
이 힙 지역의 첫 번째 잘못된 메모리 블록에 대한 포인터입니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
머리글 | minwinbase.h(Windows.h 포함) |