SetProcessWorkingSetSize

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

SetProcessWorkingSetSize hProcess, dwMinimumWorkingSetSize, dwMaximumWorkingSetSize

hProcess : [intptr] ワーキングセットサイズを設定するプロセスへのハンドル。
dwMinimumWorkingSetSize : [int] プロセスの最小ワーキングセットサイズ (バイト単位)。仮想メモリマネージャはプロセスがアクティブな時にこのサイズ以上を常駐させようとする。このパラメータはゼロより大きく、最大ワーキングセットサイズ以下でなければならない。既定サイズは 50 ページ (例: 4K ページサイズで 204,800 バイト) である。値がゼロより大きいが 20 ページ未満の場合、最小値は 20 ページに設定される。dwMinimumWorkingSetSize と dwMaximumWorkingSetSize の両方に (SIZE_T)-1 を指定すると、関数は指定プロセスのワーキングセットから可能な限りのページを削除する。
dwMaximumWorkingSetSize : [int] プロセスの最大ワーキングセットサイズ (バイト単位)。仮想メモリマネージャはプロセスがアクティブで空きメモリが少ない時にこのサイズ以上をプロセスに常駐させないよう試みる。

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

解説

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

[戻り値]
関数が成功した場合、戻り値は非ゼロである。失敗した場合はゼロである。拡張エラー情報を取得するには GetLastError を呼び出す。

[備考]

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

情報

プラグイン / モジュール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