プロセスの最大/最小ワーキングセットを取得するにはGetProcessWorkingSetSize()関数を利用します。
プロセスの『ワーキングセット』とは、プロセスが利用しているメモリでページ・フォールトを起こさずに常に使える物理メモリのことです。
詳しくはMSDNサイトや仮想メモリ、メモリページで独自に調べてみて下さい。(戻る)
- プロセスのハンドルを開く(OpenProcess)
- プロセスの優先順位クラスを取得(GetProcessWorkingSetSize)
- プロセスのハンドルを閉じる(CloseHandle)
プロセスを開くときにPROCESS_QUERY_INFORMATIONアクセス権を割り当てる必要があります。
プロトタイプ宣言
HANDLE OpenProcess( DWORD dwDesiredAccess, // アクセス・フラグ BOOL bInheritHandle, // ハンドルの継承オプション DWORD dwProcessId // プロセス識別子 ); BOOL CloseHandle( HANDLE hObject // オブジェクトのハンドル ); BOOL GetProcessWorkingSetSize( HANDLE hProcess, // プロセスのハンドル LPDWORD lpMinimumWorkingSetSize, // 最小ワーキングセットへのポインタ LPDWORD lpMaximumWorkingSetSize // 最大ワーキングセットへのポインタ );
サンプル
#include <stdio.h> #include <stdlib.h> #include <windows.h> // メイン関数 int main( int argc, char *argv[] ) { HANDLE hProcess; DWORD dwProcessID = GetCurrentProcessId(); DWORD dwMin; DWORD dwMax; if ( argc > 1 ){ dwProcessID = atoi( argv[1] ); } if ( (hProcess = OpenProcess(PROCESS_QUERY_INFORMATION,FALSE,dwProcessID)) != NULL ){ if ( GetProcessWorkingSetSize(hProcess,&dwMin,&dwMax) ){ printf( TEXT("プロセスID :%lu\n"), dwProcessID ); printf( TEXT("プロセス・ハンドル :0x%p\n"), hProcess ); printf( TEXT("最小のワーキングセットサイズ:%10luバイト(%lu KB)\n"), dwMin, (dwMin / 1024) ); printf( TEXT("最大のワーキングセットサイズ:%10luバイト(%lu KB)\n"), dwMax, (dwMax / 1024) ); } else{ printf( TEXT("%lu:GetProcessWorkingSetSize()関数のエラーです。\n"), GetLastError() ); } CloseHandle( hProcess ); return 0; } printf( TEXT("%lu:OpenProcess()関数のエラーです。\n"), GetLastError() ); return 1; }
- プロセスの最大/最小ワーキングセットはSetProcessWorkingSetSize()関数で設定することが出来ます。
関連記事
- プロセスの時間情報を取得
- プロセスのハンドル数を取得
- プロセスのメモリ情報を取得
- プロセスのメモリ・ページ情報を取得
- プロセスのI/O操作情報を取得
- プロセスのGDI/USERオブジェクトを取得
- プロセスの最大/最小ワーキングセットを取得
- プロセスのワーキングセットを最小化
- プロセスのセッションIDを取得
- プロセスの優先順位クラスを取得
※コメント投稿者のブログIDはブログ作成者のみに通知されます