OfferVirtualMemory 関数 (memoryapi.h)

メモリ ページの範囲に含まれるデータがアプリケーションで不要になり、必要に応じてシステムによって破棄できることを示します。

指定されたページはアクセス不可としてマークされ、プロセス ワーキング セットから削除され、ページング ファイルに書き込まれません。

後で提供されたページを再利用するには、 ReclaimVirtualMemory を呼び出します。

構文

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

パラメーター

[in] VirtualAddress

提供するメモリのページアライン開始アドレス。

[in] Size

提供するメモリ領域のサイズ (バイト単位)。 サイズ は、システム ページ サイズの整数倍数である必要があります。

[in] Priority

Priority は、提供されるメモリがアプリケーションにとってどれほど重要であるかを示します。 優先度が高いほど、 ReclaimVirtualMemory を呼び出すときに、提供されたメモリをそのまま再利用できる確率が高くなります。 システムは通常、優先度の高いメモリを破棄する前に、優先順位の低いメモリを破棄します。 優先度 は、次のいずれかの値である必要があります。

意味
VMOfferPriorityVeryLow
0x00000001
提供されるメモリの優先度は非常に低く、最初に破棄する必要があります。
VMOfferPriorityLow
0x00000002
提供されるメモリの優先度は低くなります。
VMOfferPriorityBelowNormal
0x00000003
提供されるメモリが通常の優先順位を下回る。
VMOfferPriorityNormal
0x00000004
提供されるメモリはアプリケーションに対して通常の優先順位であり、最後に破棄する必要があります。

戻り値

成功した場合はERROR_SUCCESS。それ以外の場合は システム エラー コード

注釈

提供されているページを再利用するには、 ReclaimVirtualMemory を呼び出します。 再利用されたページのデータは破棄されている可能性があります。この場合、メモリ領域の内容は未定義であり、アプリケーションによって書き換える必要があります。

OfferVirtualMemory を呼び出して、ロックされている仮想メモリを提供しないでください。 これにより、指定した範囲のページのロックが解除されます。

仮想メモリの提供と再利用は、MEM_RESETとMEM_RESET_UNDOメモリ割り当てフラグの使用と似ていますが、 OfferVirtualMemory はプロセス ワーキング セットからメモリを削除し、提供されているページへのアクセスを再利用するまで制限する点に注意してください。

要件

要件
サポートされている最小のクライアント Windows 8.1 Update [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2012 R2 Update [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー memoryapi.h (Windows.h、Memoryapi.h を含む)
Library onecore.lib
[DLL] Kernel32.dll

関連項目

DiscardVirtualMemory

メモリ管理関数

ReclaimVirtualMemory

仮想メモリ関数

VirtualAlloc

VirtualFree

VirtualLock

VirtualQuery