Метод 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 не загружена в процесс или находится в состоянии, в котором ей не удается выполнить управляемый код или успешно обработать вызов. |
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.
У функции VirtualAlloc для Win32 нет параметра ppMem, и она вместо него возвращает указатель на выделенную память. Дополнительные сведения см. в документации по платформе Windows.
Требования
Платформы: см. раздел Требования к системе для .NET Framework.
Заголовок: MSCorEE.h
Библиотека: включена как ресурс в MSCorEE.dll
Версии платформы .NET Framework: 4, 3.5 с пакетом обновления 1 (SP1), 3.5, 3.0 с пакетом обновления 1 (SP1), 3.0, 2.0 с пакетом обновления 1 (SP1), 2.0