内存管理函数

常规内存函数

函数 说明
AddSecureMemoryCacheCallback 注册在释放安全内存范围或更改其保护时调用的回调函数。
CopyDeviceMemory 在开发人员需要额外确保访问设备内存时不会产生对齐错误的情况下,将内存从一个位置复制到另一个位置,且不会受到编译器优化的干扰。
CopyMemory 将内存块从一个位置复制到另一个位置。
CopyVolatileMemory 将源内存块的内容复制到目标内存块。
CreateMemoryResourceNotification 创建内存资源通知对象。
FillDeviceMemory 在开发人员需要额外确保访问设备内存时不会产生对齐错误的情况下,设置缓冲区的内容,且不会受到编译器优化的干扰。
FillMemory 用指定的值填充内存块。
FillVolatileMemory 使用指定的填充值填充内存块。
GetLargePageMinimum 检索大型页面的最小大小。
GetPhysicallyInstalledSystemMemory 检索计算机上物理安装的 RAM 容量。
GetSystemFileCacheSize 检索系统缓存的工作集的当前大小限制。
GetWriteWatch 检索已写入虚拟内存区域中的页面的地址。
GlobalMemoryStatusEx 获取有关系统当前使用物理内存和虚拟内存的信息。
MoveMemory 将内存块从一个位置移到另一个位置。
MoveVolatileMemory 将源内存块的内容复制到目标内存块,并支持重叠源内存块和目标内存块。
QueryMemoryResourceNotification 检索指定内存资源对象的状态。
RemoveSecureMemoryCacheCallback 注销以前向 AddSecureMemoryCacheCallback 函数注册的回调函数。
ResetWriteWatch 重置虚拟内存区域的写入跟踪状态。
SecureMemoryCacheCallback 在释放安全内存范围或更改其保护时调用的应用程序定义函数。
SecureZeroMemory 用零填充内存块。
SecureZeroMemory2 以保证安全的方式用零填充内存块。
SetSystemFileCacheSize 限制文件系统缓存的工作集的大小。
ZeroDeviceMemory 在开发人员需要额外确保访问设备内存时不会产生对齐错误的情况下,将缓冲区的内容设置为零,且不会受到编译器优化的干扰。
ZeroMemory 用零填充内存块。
ZeroVolatileMemory 用零填充内存块。

数据执行防护函数

这些函数用于数据执行防护 (DEP)。

函数 说明
GetProcessDEPPolicy 检索进程的 DEP 设置。
GetSystemDEPPolicy 检索系统的 DEP 设置。
SetProcessDEPPolicy 更改进程的 DEP 设置。

文件映射函数

这些函数用于文件映射

函数 说明
CreateFileMappingA 为指定的文件创建或打开命名或未命名的文件映射对象。
CreateFileMappingW 为指定的文件创建或打开命名或未命名的文件映射对象。
CreateFileMapping2 为指定的文件创建或打开命名或未命名的文件映射对象。 可以将物理内存的首选 NUMA 节点指定为扩展参数;请参阅 ExtendedParameters 参数。
CreateFileMappingFromApp 为 Windows 应用商店应用中指定的文件创建或打开命名或未命名的文件映射对象。
CreateFileMappingNuma 为指定的文件创建或打开命名或未命名的文件映射对象,并为物理内存指定 NUMA 节点。
FlushViewOfFile 在文件的映射视图中写入磁盘字节范围。
GetMappedFileName 检查指定的地址是否位于指定进程的地址空间的内存映射文件中。 如果是,该函数将返回内存映射文件的名称。
MapViewOfFile 将文件映射的视图映射到调用进程的地址空间。
MapViewOfFile2 将文件或页面文件支持的分区视图映射到指定进程的地址空间。
MapViewOfFile3 将文件或页面文件支持的分区视图映射到指定进程的地址空间。
MapViewOfFile3FromApp 将 Windows 商店应用中文件映射的视图映射到调用进程的地址空间。
MapViewOfFileEx 将文件映射的视图映射到调用进程的地址空间。 调用方可以选择为视图指定建议的内存地址。
MapViewOfFileExNuma 将文件映射的视图映射到调用进程的地址空间,并为物理内存指定 NUMA 节点。
MapViewOfFileFromApp 将 Windows 商店应用中文件映射的视图映射到调用进程的地址空间。
MapViewOfFileNuma2 将文件或页面文件支持的分区视图映射到指定进程的地址空间。
OpenFileMapping 打开命名的文件映射对象。
OpenFileMappingFromApp 打开命名的文件映射对象。
UnmapViewOfFile 从调用进程的地址空间取消映射文件的映射视图。
UnmapViewOfFile2 取消映射以前映射的文件视图或页面文件支持的分区。
UnmapViewOfFileEx 取消映射以前映射的文件视图或页面文件支持的分区。

AWE 函数

以下是 AWE 函数

函数 说明
AllocateUserPhysicalPages 在进程的任何 AWE 区域中分配要映射和取消映射的物理内存页。
AllocateUserPhysicalPagesNuma 在进程的任何 AWE 区域中分配要映射和取消映射的物理内存页,并为物理内存指定 NUMA 节点。
FreeUserPhysicalPages 释放以前使用 AllocateUserPhysicalPages 分配的物理内存页。
MapUserPhysicalPages 映射以前在 AWE 区域中的指定地址分配的物理内存页。
MapUserPhysicalPagesScatter 映射以前在 AWE 区域中的指定地址分配的物理内存页。

堆函数

以下是堆函数

函数 说明
GetProcessHeap 获取调用进程的堆的句柄。
GetProcessHeaps 获取对调用进程有效的所有堆的句柄。
HeapAlloc 从堆中分配内存块。
HeapCompact 合并堆上的相邻可用内存块。
HeapCreate 创建堆对象。
HeapDestroy 销毁指定的堆对象。
HeapFree 释放从堆分配的内存块。
HeapLock 尝试获取与指定堆关联的锁。
HeapQueryInformation 检索有关指定的堆的信息。
HeapReAlloc 从堆重新分配内存块。
HeapSetInformation 设置指定堆的堆信息。
HeapSize 检索从堆分配的内存块的大小。
HeapUnlock 释放与指定堆关联的锁定的所有权。
HeapValidate 尝试验证指定的堆。
HeapWalk 枚举指定堆中的内存块。

虚拟内存函数

以下是虚拟内存函数

函数 说明
DiscardVirtualMemory 放弃一系列内存页面的内存内容,而不会解除内存的使用。 已放弃内存的内容未定义,必须由应用程序重写。
OfferVirtualMemory 指示应用程序不再需要一系列内存页中包含的数据,并可以在必要时被系统放弃。
PrefetchVirtualMemory 将虚拟地址范围预提取到物理内存中。
QueryVirtualMemoryInformation 返回有关指定进程的虚拟地址空间中的一个或一组页面的信息。
ReclaimVirtualMemory 使用 OfferVirtualMemory 回收系统提供的一系列内存页面。
SetProcessValidCallTargets 为 CFG 提供有效的间接调用目标列表,并指定它们是否应标记为有效。
VirtualAlloc 保留或提交调用进程的虚拟地址空间中的页面区域。
VirtualAlloc2 保留、提交或更改指定进程的虚拟地址空间中内存区域的状态。 该函数初始化它分配给零的内存。
VirtualAlloc2FromApp 保留、提交或更改调用进程的虚拟地址空间中页范围的状态。 此函数分配的内存会自动初始化为零。
VirtualAllocEx 保留或提交指定进程的虚拟地址空间中的页面区域。
VirtualAllocExNuma 保留或提交指定进程的虚拟地址空间中的内存区域,并为物理内存指定 NUMA 节点。
VirtualAllocFromApp 保留、提交或更改调用进程的虚拟地址空间中页范围的状态。 此函数分配的内存会自动初始化为零。
VirtualFree 释放或取消提交调用进程的虚拟地址空间中的页面区域。
VirtualFreeEx 释放或解除指定进程的虚拟地址空间中的内存区域。
VirtualLock 将进程的虚拟地址空间的指定区域锁定到物理内存中。
VirtualProtect 更改调用进程的虚拟地址空间中已提交的页面区域的访问保护。
VirtualProtectEx 更改调用进程的虚拟地址空间中已提交的页面区域的访问保护。
VirtualProtectFromApp 更改调用进程的虚拟地址空间中已提交的页面区域的保护。
VirtualQuery 提供有关调用进程的虚拟地址空间中一系列页面的信息。
VirtualQueryEx 提供有关调用进程的虚拟地址空间中一系列页面的信息。
VirtualUnlock 解锁进程的虚拟地址空间中的指定页面范围。

全局和本地函数

另请参阅全局和本地函数。 提供这些函数是为了与 16 位 Windows 兼容,并与动态数据交换 (DDE)、剪贴板函数和 OLE 数据对象一起使用。 除非文档特别指出应使用全局函数或本地函数,否则新应用程序应使用具有 GetProcessHeap 返回的句柄的相应堆函数。 对于与全局函数或本地函数等效的功能,请将堆函数的 dwFlags 参数设置为 0。

函数 说明 相应的堆函数
GlobalAllocLocalAlloc 从堆中分配指定的字节数。 HeapAlloc
GlobalDiscardLocalDiscard 放弃指定的全局内存块。 不适用。
GlobalFlagsLocalFlags 返回有关指定全局内存对象的信息。 不适用。 使用 HeapValidate 验证堆。
GlobalFreeLocalFree 释放指定的全局内存对象。 HeapFree
GlobalHandleLocalHandle 检索与指向全局内存块的指定指针关联的句柄。 此函数应仅用于需要它的 OLE 和剪贴板函数。 不适用。
GlobalLockLocalLock 锁定全局内存对象,并返回指向对象内存块的第一个字节的指针。 不适用。
GlobalReAllocLocalReAlloc 更改指定全局内存对象的大小或属性。 HeapReAlloc
GlobalSizeLocalSize 检索指定全局内存对象的当前大小。 HeapSize
GlobalUnlockLocalUnlock 递减与内存对象关联的锁定计数。 此函数应仅用于需要它的 OLE 和剪贴板函数。 不适用。

错误内存函数

函数 说明
BadMemoryCallbackRoutine RegisterBadMemoryNotification 函数注册的应用程序定义函数,在检测到一个或多个错误的内存页面时调用。
GetMemoryErrorHandlingCapabilities 获取系统的内存错误处理功能。
RegisterBadMemoryNotification 注册检测到一个或多个错误内存页面时调用的内存错误通知。
UnregisterBadMemoryNotification 关闭指定的错误内存通知句柄。

Enclave 函数

函数 说明
CreateEnclave 创建新的未初始化 enclave。 enclave 是应用程序地址空间内代码和数据的独立区域。 只有 enclave 中运行的代码才能访问同一 enclave 中的数据。
InitializeEnclave 初始化使用数据创建和加载的 enclave。
IsEnclaveTypeSupported 检索是否支持指定的 enclave 类型。
LoadEnclaveData 将数据加载到通过调用 CreateEnclave 创建的未初始化 enclave。

ATL thunk 函数

函数 说明
AtlThunk_AllocateData 为 ATL thunk 分配内存中的空间。
AtlThunk_DataToCode 返回对应于 AtlThunkData_t 参数的可执行函数。
AtlThunk_FreeData 释放与 ATL thunk 关联的内存。
AtlThunk_InitData 初始化 ATL thunk。

已过时的函数

这些函数仅用于兼容 16 位版 Windows:

以下函数可能返回不正确的信息,不应使用。 请改用 GlobalMemoryStatusEx 函数。