内存管理函数
常规内存函数
函数 | 说明 |
---|---|
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。
函数 | 说明 | 相应的堆函数 |
---|---|---|
GlobalAlloc、LocalAlloc | 从堆中分配指定的字节数。 | HeapAlloc |
GlobalDiscard、LocalDiscard | 放弃指定的全局内存块。 | 不适用。 |
GlobalFlags、LocalFlags | 返回有关指定全局内存对象的信息。 | 不适用。 使用 HeapValidate 验证堆。 |
GlobalFree、LocalFree | 释放指定的全局内存对象。 | HeapFree |
GlobalHandle、LocalHandle | 检索与指向全局内存块的指定指针关联的句柄。 此函数应仅用于需要它的 OLE 和剪贴板函数。 | 不适用。 |
GlobalLock、LocalLock | 锁定全局内存对象,并返回指向对象内存块的第一个字节的指针。 | 不适用。 |
GlobalReAlloc、LocalReAlloc | 更改指定全局内存对象的大小或属性。 | HeapReAlloc |
GlobalSize、LocalSize | 检索指定全局内存对象的当前大小。 | HeapSize |
GlobalUnlock、LocalUnlock | 递减与内存对象关联的锁定计数。 此函数应仅用于需要它的 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 函数。