SetProcessWorkingSetSizeEx

指定したプロセスのワーキングセットの最小サイズと最大サイズを設定する。(SetProcessWorkingSetSizeEx)

SetProcessWorkingSetSizeEx hProcess, dwMinimumWorkingSetSize, dwMaximumWorkingSetSize, Flags

hProcess : [intptr] ワーキングセットサイズを設定するプロセスへのハンドル。ハンドルには PROCESS_SET_QUOTA アクセス権が必要である。詳細は「プロセスのセキュリティとアクセス権」を参照。
dwMinimumWorkingSetSize : [int] プロセスの最小ワーキングセットサイズ (バイト単位)。仮想メモリマネージャはプロセスがアクティブな時にこのサイズ以上を常駐させようとする。このパラメータはゼロより大きく、最大ワーキングセットサイズ以下でなければならない。既定サイズは 50 ページ (例: 4K ページサイズで 204,800 バイト) である。値がゼロより大きいが 20 ページ未満の場合、最小値は 20 ページに設定される。dwMinimumWorkingSetSize と dwMaximumWorkingSetSize の両方に (SIZE_T)-1 を指定すると、関数は指定プロセスのワーキングセットから可能な限りのページを削除する。
dwMaximumWorkingSetSize : [int] プロセスの最大ワーキングセットサイズ (バイト単位)。仮想メモリマネージャはプロセスがアクティブで空きメモリが少ない時にこのサイズ以上をプロセスに常駐させないよう試みる。このパラメータは 13 ページ以上 (例: 4K ページサイズで 53,248) で、システム全体の最大値 (利用可能ページ数 - 512 ページ) 未満でなければならない。既定サイズは 345 ページ (例: 4K ページサイズで 1,413,120 バイト) である。dwMinimumWorkingSetSize と dwMaximumWorkingSetSize の両方に (SIZE_T)-1 を指定すると、関数は指定プロセスのワーキングセットから可能な限りのページを削除する。詳細は備考を参照。
Flags : [int] 最小および最大ワーキングセットサイズの強制を制御するフラグ。

(プラグイン / モジュール : kernel32.dll)

解説

指定したプロセスのワーキングセットの最小サイズと最大サイズを設定する。(SetProcessWorkingSetSizeEx)

[戻り値]
関数が成功した場合、戻り値は 0 以外。関数が失敗した場合、戻り値は 0。拡張エラー情報を取得するには GetLastError を呼ぶ。

[備考]

プロセスのワーキングセットは、プロセスの仮想アドレス空間内のメモリページのうち現在物理メモリに常駐しているものの集合である。これらのページはページフォルトを起こさずにアプリケーションが使用できる。ページフォルトの詳細は「ワーキングセット」を参照。最小・最大ワーキングセットサイズはプロセスの仮想メモリページング挙動に影響する。指定プロセスのワーキングセットは、最小・最大両方に
(SIZE_T)-1 を指定することで空にできる。これはワーキングセットから可能な限りのページを削除する。同じ目的に
EmptyWorkingSet 関数も使用できる。dwMinimumWorkingSetSize または
dwMaximumWorkingSetSize がプロセスの現在のワーキングセットサイズより大きい場合、指定プロセスは
SE_INC_WORKING_SET_NAME
特権を持つ必要がある。一般にすべてのユーザーがこの特権を持つ。セキュリティ特権の詳細は「特権」を参照。Windows Server
2003: 指定プロセスは SE_INC_BASE_PRIORITY_NAME 特権を持つ必要がある。Administrators と
Power Users グループのユーザーは通常この特権を持つ。OS
はワーキングセットサイズを先着順に割り当てる。例えばあるアプリケーションが 64 MB システムで 40 MB
を最小ワーキングセットサイズに設定するのに成功した場合、次のアプリケーションが 40 MB を要求すると OS は拒否する。既定では
SetProcessWorkingSetSize
関数でアプリケーションの最小・最大ワーキングセットサイズを設定しても、要求されたメモリが予約される、あるいは常に常駐する保証はない。アプリケーションがアイドル状態になるか、低メモリ状況で需要があると、OS
はアプリケーションのワーキングセットを最小制限未満に減らすことがある。メモリが豊富な場合、OS
はアプリケーションが最大制限を超えることを許すこともある。QUOTA_LIMITS_HARDWS_MIN_ENABLE および
QUOTA_LIMITS_HARDWS_MAX_ENABLE
フラグにより制限の強制を保証できる。アプリケーションのワーキングセットサイズを増やすと、システムの他の部分から物理メモリを奪うことになる。これにより他のアプリケーションやシステム全体の性能を劣化させ、物理メモリを必要とする操作
(例: プロセス、スレッド、カーネルプールの作成) の失敗を招く可能性もある。したがって SetProcessWorkingSetSize
関数は慎重に使用すべきで、アプリケーション設計時には常にシステム全体の性能を考慮すべきである。アプリケーションは VirtualLock
関数で仮想アドレス空間の範囲をメモリ内にロックできるが、これによりシステム性能を劣化させうる。

情報

プラグイン / モジュールkernel32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の kernel32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_kernel32_gen2.hs