共用方式為


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

Common Language Runtime (CLR) 尚未載入至處理序中,或者此 CLR 目前的狀態無法執行 Managed 程式碼或成功處理呼叫。

HOST_E_TIMEOUT

呼叫已逾時。

HOST_E_NOT_OWNER

呼叫端不具備鎖定功能。

HOST_E_ABANDONED

已封鎖執行緒或 Fiber 在等候事件時,該事件已遭取消。

E_FAIL

發生未知的重大錯誤。 當方法傳回 E_FAIL 時,便無法在處理序內使用 CLR。 對裝載方法的後續呼叫會傳回 HOST_E_CLRNOTAVAILABLE。

E_OUTOFMEMORY

可用的記憶體不足,無法完成配置要求。

備註

您可以藉由呼叫 VirtualAlloc,保留處理序之位址空間中的區域。 pAddress 參數包含所需記憶體區塊的起始位址。 這個參數一般會設為 null。 作業系統會保留您的處理序可使用之可用位址範圍記錄。 pAddress 值為 null,會指示系統保留認為可符合的區域。 不過,您可以對記憶體區塊提供特定起始位址。 在這兩個情況下,會將輸出參數 ppMem 當做所配置記憶體的指標傳回。 函式本身會傳回 HRESULT 值。

Win32 VirtualAlloc 函式沒有 ppMem 參數,因此會改為傳回所配置記憶體的指標。 如需詳細資訊,請參閱 Windows 平台的說明文件。

需求

**平台:**請參閱 .NET Framework 系統需求

**標頭:**MSCorEE.h

程式庫:包含做為 MSCorEE.dll 中的資源

**.NET Framework 版本:**4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0

請參閱

參考

IHostMemoryManager 介面