プロセスのハンドル数を取得するにはGetProcessHandleCount()関数を利用します。(戻る)
- プロセスのハンドルを開く(OpenProcess)
- プロセスのハンドル数を取得(GetProcessHandleCount)
- プロセスのハンドルを閉じる(CloseHandle)
プロセスを開くときにPROCESS_QUERY_INFORMATIONアクセス権を割り当てる必要があります。
プロトタイプ宣言
HANDLE OpenProcess( DWORD dwDesiredAccess, // アクセス・フラグ BOOL bInheritHandle, // ハンドルの継承オプション DWORD dwProcessId // プロセス識別子 ); BOOL CloseHandle( HANDLE hObject // オブジェクトのハンドル ); BOOL GetProcessHandleCount( HANDLE hProcess, // プロセスのハンドル PDWORD pdwHandleCount // ハンドル数へのポインタ );
サンプル
#define _WIN32_WINNT (0x0501) // GetProcessHandleCount() #include <stdio.h> #include <stdlib.h> #include <windows.h> // メイン関数 int main( int argc, char *argv[] ) { DWORD dwProcessID = GetCurrentProcessId(); HANDLE hProcess; DWORD dwHandle; if ( argc > 1 ){ dwProcessID = atoi( argv[1] ); } if ( (hProcess = OpenProcess(PROCESS_QUERY_INFORMATION,FALSE,dwProcessID)) != NULL ){ if ( GetProcessHandleCount(hProcess,&dwHandle) ){ printf( TEXT("プロセスID:%lu\n"), dwProcessID ); printf( TEXT("ハンドル数:%lu個\n"), dwHandle ); } else{ printf( TEXT("%lu:GetProcessHandleCount()関数のエラーです。\n"), GetLastError() ); } CloseHandle( hProcess ); return 0; } printf( TEXT("%lu:OpenProcess()関数のエラーです。\n"), GetLastError() ); return 1; }
- GetProcessHandleCount()関数はWindows 2000以降でサポートされました。
- それ以前のバージョンでは利用できません。
関連記事
- プロセスの時間情報を取得
- プロセスのハンドル数を取得
- プロセスのメモリ情報を取得
- プロセスのメモリ・ページ情報を取得
- プロセスのI/O操作情報を取得
- プロセスのGDI/USERオブジェクトを取得
- プロセスの最大/最小ワーキングセットを取得
- プロセスのワーキングセットを最小化
- プロセスのセッションIDを取得
- プロセスの優先順位クラスを取得
※コメント投稿者のブログIDはブログ作成者のみに通知されます