Поделиться через


Метод 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

См. также

Ссылки

Интерфейс IHostMemoryManager