プログラミングのメモ帳(C/C++/HSP)

日々のプログラミングで気づいた点や小技集を紹介します。(Windows 10/XP/Vista、VC2017、HSP)

プロセスの最大/最小ワーキングセットを取得

2008年07月11日 15時22分00秒 | プロセス関連

プロセスの最大/最小ワーキングセットを取得するにはGetProcessWorkingSetSize()関数を利用します。
プロセスの『ワーキングセット』とは、プロセスが利用しているメモリでページ・フォールトを起こさずに常に使える物理メモリのことです。
詳しくはMSDNサイトや仮想メモリ、メモリページで独自に調べてみて下さい。(戻る)

  1. プロセスのハンドルを開く(OpenProcess)
  2. プロセスの優先順位クラスを取得(GetProcessWorkingSetSize)
  3. プロセスのハンドルを閉じる(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()関数で設定することが出来ます。

関連記事



コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« プロセスのI/O操作情報を取得 | トップ | プロセスのワーキングセット... »
最新の画像もっと見る

コメントを投稿

プロセス関連」カテゴリの最新記事