IHostMemoryManager::VirtualAlloc 方法

用作相应 Win32 函数的逻辑包装器。 VirtualAlloc 的 Win32 实现会检索或提交调用进程的虚拟地址空间中的页面区域。

语法

HRESULT VirtualAlloc (  
    [in]  void*   pAddress,  
    [in]  SIZE_T  dwSize,  
    [in]  DWORD   flAllocationType,  
    [in]  DWORD   flProtect,  
    [in]  EMemoryCriticalLevel dwCriticalLevel,  
    [out] void**  ppMem  
);  

参数

pAddress
[in] 指向要分配的区域的起始地址的指针。

dwSize
[in] 区域的大小(以字节为单位)。

flAllocationType
[in] 内存分配的类型

flProtect
[in]要分配的页区域的内存保护。

dwCriticalLevel
[in]一 个 EMemoryCriticalLevel 值,指示分配失败的影响。

ppMem
[out]指向已分配内存的起始地址的指针;如果无法满足请求,则返回 null。

返回值

HRESULT 说明
S_OK 已成功返回 VirtualAlloc
HOST_E_CLRNOTAVAILABLE 公共语言运行时 (CLR) 未加载到进程中,或 CLR 处于无法运行托管代码或无法成功处理调用的状态。
HOST_E_TIMEOUT 调用超时。
HOST_E_NOT_OWNER 调用方未持有锁。
HOST_E_ABANDONED 阻塞的线程或纤程正在等待某一事件,而该事件已被取消。
E_FAIL 发生未知的灾难性故障。 当方法返回 E_FAIL 时,进程中无法再使用 CLR。 后续调用承载方法会返回 HOST_E_CLRNOTAVAILABLE。
E_OUTOFMEMORY 内存不足,无法完成分配请求。

注解

通过调用 VirtualAlloc 在进程的地址空间中保留区域。 参数 pAddress 包含需要的内存块的开始地址。 此参数通常设置为 null。 操作系统会记录可供进程使用的免费地址范围。 如果 pAddress 值为 null,则指示系统保留其认为合适的区域。 或者,可以为内存块提供特定的起始地址。 在这两种情况下,输出参数 ppMem 都作为指向已分配内存的指针返回。 函数本身返回 HRESULT 值。

Win32 VirtualAlloc 函数没有参数 ppMem,而是返回指向已分配内存的指针。 有关详细信息,请参阅 Windows 平台文档。

要求

平台:请参阅系统要求

标头:MSCorEE.h

库:作为资源包含在 MSCorEE.dll 中

.NET Framework 版本:自 2.0 起可用

另请参阅