プロセスのワーキングセットをできるだけ減らして最小化します。
最小化するにはEmptyWorkingSet()関数、またはSetProcessWorkingSetSize()関数を利用します。(戻る)
- プロセスのハンドルを開く(OpenProcess)
- プロセスのワーキングセットを最小化(EmptyWorkingSet)
- プロセスのハンドルを閉じる(CloseHandle)
プロセスを開くときにPROCESS_QUERY_INFORMATIONとPROCESS_SET_QUOTAの2つのアクセス権を割り当てる必要があります。
プロトタイプ宣言
HANDLE OpenProcess( DWORD dwDesiredAccess, // アクセス・フラグ BOOL bInheritHandle, // ハンドルの継承オプション DWORD dwProcessId // プロセス識別子 ); BOOL CloseHandle( HANDLE hObject // オブジェクトのハンドル ); BOOL EmptyWorkingSet( HANDLE hProcess // プロセスのハンドル );
サンプル
#include <stdio.h> #include <stdlib.h> #include <windows.h> #include <Psapi.h> // Psapi.Lib // メイン関数 int main( int argc, char *argv[] ) { DWORD dwAccess = (PROCESS_QUERY_INFORMATION | PROCESS_SET_QUOTA); DWORD dwProcessID = GetCurrentProcessId(); HANDLE hProcess; if ( argc > 1 ){ dwProcessID = atoi( argv[1] ); } if ( (hProcess = OpenProcess(dwAccess,FALSE,dwProcessID)) != NULL ){ // if ( SetProcessWorkingSetSize(hProcess,0xFFFFFFFF,0xFFFFFFFF) ){ if ( EmptyWorkingSet(hProcess) ){ printf( TEXT("指定プロセスのワーキングセットを最小化しました。\n") ); } else{ printf( TEXT("%lu:EmptyWorkingSet()関数のエラーです。\n"), GetLastError() ); } CloseHandle( hProcess ); return 0; } printf( TEXT("%lu:OpenProcess()関数のエラーです。\n"), GetLastError() ); return 1; }
- ヘッダファイルとしてPsapi.hをインクルードします。
- インポートライブラリとしてPsapi.Libをリンクします。
- 不必要にプロセスのワーニングセットを最小化するとパフォーマンスが低下することがあります。
関連記事
- プロセスの時間情報を取得
- プロセスのハンドル数を取得
- プロセスのメモリ情報を取得
- プロセスのメモリ・ページ情報を取得
- プロセスのI/O操作情報を取得
- プロセスのGDI/USERオブジェクトを取得
- プロセスの最大/最小ワーキングセットを取得
- プロセスのワーキングセットを最小化
- プロセスのセッションIDを取得
- プロセスの優先順位クラスを取得
- [HSP]クリーニングの命令群
※コメント投稿者のブログIDはブログ作成者のみに通知されます