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


Функция OfferVirtualMemory (memoryapi.h)

Указывает, что данные, содержащиеся в диапазоне страниц памяти, больше не нужны приложению и могут быть удалены системой при необходимости.

Указанные страницы будут помечены как недоступные, удалены из рабочего набора процесса и не будут записаны в файл подкачки.

Чтобы позже освободить предлагаемые страницы, вызовите ReclaimVirtualMemory.

Синтаксис

DWORD OfferVirtualMemory(
  [in] PVOID          VirtualAddress,
  [in] SIZE_T         Size,
  [in] OFFER_PRIORITY Priority
);

Параметры

[in] VirtualAddress

Выровненный по страницам начальный адрес предлагаемой памяти.

[in] Size

Размер (в байтах) области памяти для предложения. Размер должен быть целым числом, кратным размеру системной страницы.

[in] Priority

Приоритет указывает, насколько важна предлагаемая память для приложения. Более высокий приоритет увеличивает вероятность того, что предлагаемая память может быть восстановлена без изменений при вызове ReclaimVirtualMemory. Система обычно удаляет память с более низким приоритетом перед удалением памяти с более высоким приоритетом. Приоритет должен иметь одно из следующих значений.

Значение Значение
VMOfferPriorityVeryLow
0x00000001
Предлагаемая память имеет очень низкий приоритет и должна быть первой отбрасываемой.
VMOfferPriorityLow
0x00000002
Предлагаемая память имеет низкий приоритет.
VMOfferPriorityBelowNormal
0x00000003
Предлагаемая память ниже нормального приоритета.
VMOfferPriorityNormal
0x00000004
Предлагаемая память имеет обычный приоритет для приложения и должна быть последней, отбрасываемой.

Возвращаемое значение

ERROR_SUCCESS в случае успешного выполнения; в противном случае — код системной ошибки .

Комментарии

Чтобы освободить предложенные страницы, вызовите ReclaimVirtualMemory. Возможно, данные на освобожденных страницах были удалены. В этом случае содержимое области памяти не определено и должно быть перезаписано приложением.

Не вызывайте OfferVirtualMemory , чтобы предложить заблокированную виртуальную память. Это приведет к разблокировке указанного диапазона страниц.

Обратите внимание, что предложение и освобождение виртуальной памяти аналогично использованию флагов выделения MEM_RESET и MEM_RESET_UNDO памяти, за исключением того, что OfferVirtualMemory удаляет память из рабочего набора процесса и ограничивает доступ к предлагаемым страницам до тех пор, пока они не будут освобождены.

Требования

Требование Значение
Минимальная версия клиента Windows 8.1 с обновлением [классические приложения | Приложения UWP]
Минимальная версия сервера обновление Windows Server 2012 R2 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header memoryapi.h (включая Windows.h, Memoryapi.h)
Библиотека onecore.lib
DLL Kernel32.dll

См. также

DiscardVirtualMemory

Функции управления памятью

ReclaimVirtualMemory

Функции виртуальной памяти

VirtualAlloc

VirtualFree

VirtualLock

VirtualQuery