|
Overview |
|
|
|
Group |
|
|
|
Quick Info
Windows NT
| Yes
| Win95
| No
| Win32s
| in debug version only
| Import Library
| kernel32.lib
| Header File
| winbase.h
| Unicode
| No
| Platform Notes
| None
|
|
|
HeapValidate
The
HeapValidate function attempts to validate a specified heap. The function scans all the
memory blocks in the heap, and verifies that the heap control structures
maintained by the operating system's heap manager are in a consistent state. You can
also use the
HeapValidate function to validate a single memory block within a specified heap, without
checking the validity of the entire heap.
BOOL HeapValidate(
HANDLE hHeap,
| // handle to the heap of interest
|
DWORD dwFlags,
| // bit flags that control heap access during function operation
|
LPCVOID lpMem
| // optional pointer to individual memory block to validate
|
);
|
|
Parameters
hHeap
Handle to the heap of interest. The
HeapValidate function attempts to validate this heap, or a single memory block within this
heap.
dwFlags
A set of bit flags that control heap access during function operation. The
following bit flag has meaning:
Value
| Meaning
|
HEAP_NO_SERIALIZE
| If this flag is set, heap access is not serialized while the HeapValidate function accesses the heap; heap access is not mutually exclusive. It is safe
to set this flag only in a limited set of specific situations. For a
discussion of those situations and heap serialization in general, see the Remarks
section of HeapCreate.
If this flag is clear, heap access is serialized while HeapValidate accesses the heap; heap access is mutually exclusive. This is the safe and
simple default condition.
|
lpMem
Points to a memory block within the specified heap. This parameter may be NULL.
If this parameter is NULL, the function attempts to validate the entire heap
specified by
hHeap.
If this parameter is not NULL, the function attempts to validate the memory
block pointed to by
lpMem. It does not attempt to validate the rest of the heap.
Return Values
If the specified heap or memory block is valid, the return value is nonzero.
If the specified heap or memory block is invalid, the return value is zero. On
a system set up for debugging, the
HeapValidate function then displays debugging messages that describe the part of the heap
or memory block that is invalid, and stops at a hard-coded breakpoint so that
you can examine the system to determine the source of the invalidity. The
HeapValidate function does not set the thread's last error value.
Remarks
There are heap control structures for each memory block in a heap, and for the
heap as a whole. When you use the
HeapValidate function to validate a complete heap, it checks all of these control
structures for consistency.
When you use
HeapValidate to validate a single memory block within a heap, it checks only the control
structures pertaining to that element.
HeapValidate can only validate allocated memory blocks. Calling
HeapValidate on a freed memory block will return FALSE because there are no control
structures to validate.
If you want to validate the heap elements enumerated by the
HeapWalk function, you should only call
HeapValidate on the elements that have the PROCESS_HEAP_ENTRY_BUSY bit flag in the
wFlags member of the
PROCESS_HEAP_ENTRY structure.
HeapValidate returns FALSE for all heap elements that do not have this bit set.
See Also
HeapCreate,
HeapWalk,
PROCESS_HEAP_ENTRY
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database