getProcessHeaps 函数 (heapapi.h)

返回活动堆的数量,并检索调用进程的所有活动堆的句柄。

语法

DWORD GetProcessHeaps(
  [in]  DWORD   NumberOfHeaps,
  [out] PHANDLE ProcessHeaps
);

参数

[in] NumberOfHeaps

可以存储在 ProcessHeaps 指向的缓冲区中的堆句柄的最大数目。

[out] ProcessHeaps

指向接收堆句柄数组的缓冲区的指针。

返回值

返回值是调用进程处于活动状态的堆的句柄数。

如果返回值小于或等于 NumberOfHeaps,则函数已将堆句柄数存储在 ProcessHeaps 指向的缓冲区中。

如果返回值大于 NumberOfHeaps则 ProcessHeaps 指向的缓冲区太小,无法容纳调用进程的所有堆句柄,并且函数将 NumberOfHeaps 句柄 存储在缓冲区中。 使用返回值分配一个足以接收所有句柄的缓冲区,然后再次调用函数。

如果返回值为零,则函数失败,因为每个进程至少有一个活动堆,即进程的默认堆。 要获得更多的错误信息,请调用 GetLastError。

注解

GetProcessHeaps 函数获取调用进程的默认堆的句柄,以及通过在进程中的任何线程上调用 HeapCreate 函数创建的任何其他专用堆的句柄。

GetProcessHeaps 函数主要用于调试,因为函数检索到的某些专用堆可能是由进程中运行的其他代码创建的,并且可能会在 GetProcessHeaps 返回后被销毁。 销毁堆会使堆的句柄失效,而继续使用此类句柄可能会导致应用程序中出现未定义的行为。 只应在调用进程的默认堆和进程创建和管理的专用堆上调用堆函数。

若要获取调用进程的进程堆的句柄,请使用 GetProcessHeap 函数。

示例

有关示例,请参阅 获取进程堆

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 heapapi.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

GetProcessHeap

堆函数

HeapCreate

内存管理函数

VBS enclave 中可用的 Vertdll API