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


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

См. также раздел