System.getProcessInfo (実行中のプロセス情報)

  1. 文法
  2. 詳細
  3. 引数
  4. 例外
  5. 戻り値
  6. 関連項目

1. 文法

メンバ型
関数
メンバ所有者
global.System (static)
呼び出し
global.System.getProcessInfo( pid, flags )

2. 詳細

OS上で実行中の、指定したプロセスの情報を取得します。

この関数は、Windows 2000以降のWindows系OSでしか機能しません。非対応のOSで実行した場合には、例外が発生します。 この関数を使用する場合は、必ず例外処理コードを記述する、あるいは事前に対応チェックを行うなど、何らかの例外対策をしてください。

3. 引数

pid ( Integer ) [default: void]
取得したいプロセスのプロセスIDを指定します。 voidを指定した場合は、現在の吉里吉里のプロセスIDが指定されたものと見なされます。
flags ( Integer ) [default: tppfBasicInfo]
取得する情報を指定します。 指定できる値は、下記の定数のビット論理和です。
  • tppfBasicInfo : プロセスの基本情報を取得します。
  • tppfModuleInfo : モジュールの情報を取得します。
  • tppfTokenInfo : アクセストークンに関する情報を取得します。
  • tppfMemoryInfo : メモリの情報を取得します。
  • tppfTimeInfo : プロセスの実行時間情報を取得します。
  • tppfIOInfo : プロセスのI/O情報を取得します。

4. 例外

5. 戻り値

プロセスの情報を、辞書配列で返します。 指定した pidのプロセスが存在しない場合はvoidを返します。 取得できる情報(辞書配列のキーと値)は引数 flagsに依存します。 キーは下記の通りで、特に断りがない限り、値は整数型です。

ProcessID
プロセスIDです。
ParentProcessID
親プロセスのプロセスIDです。
CountThreads
プロセスによって開始された実行スレッドの数です。
PriorityClassBase
プロセスによって作成されるスレッドの基本優先レベルです。
ExeFile
プロセスの実行ファイル名を表す文字列です。
ErrorFlag
情報取得時のエラーフラグです。 エラーがなければ0が格納されます。 下記の定数とのビット論理積をとった結果が非ゼロであれば、そのエラーに該当するということになります。
  • tppfModuleInfo : モジュールの情報取得に失敗した。
  • tppfTokenInfo : プロセスのアクセストークン情報取得に失敗した。
  • tppfTimeInfo : プロセスの実行時間情報取得に失敗した。
  • tppfMemoryInfo : メモリの情報取得に失敗した。
  • tppfIOInfo : プロセスのI/O情報取得に失敗した。
  • tppfTimeZoneInfo : タイムゾーン情報取得に失敗した。
  • tppfProcessInfo : プロセスの情報取得に失敗した。
ErrorMessage
情報取得時のエラーメッセージを表す文字列です。エラーがなければ空文字列が格納されます。

tppfModuleInfo を指定すると、モジュールの情報を取得できます。

ModuleBaseName
プロセスがロードしているモジュールのベース名(実行ファイル名)を表す文字列です。
ModuleFileName
プロセスがロードしているモジュールファイル名のフルパス(実行ファイル名のフルパス)を表す文字列です。

tppfTokenInfo を指定すると、プロセスのアクセストークンに関する情報を取得できます。 現バージョンでは、情報の検索対象はローカルコンピュータのみで、リモートコンピュータは対象外です。

AccountName
プロセス実行ユーザのアカウント名を表す文字列です。
DomainName
プロセス実行ユーザのドメイン名を表す文字列です。 ほとんどのアカウントに対して、システムが最後に再起動されたときのコンピュータ名がドメイン名として格納されます。 コンピュータ名を変更した場合、システムを再起動するまでは変更前のコンピュータ名が格納されます。 Windows NT Server、Windows 2000 Server、Windows Server 2003 の各システムでは、ほとんどのアカウントに対して、そのサーバーが所属するドメインのドメインコントローラ名が、ドメイン名として格納されます。

tppfTimeInfo を指定すると、プロセスの実行時間に関する情報を取得できます。

StartTime
プロセス作成時刻(ローカル)を表す文字列です。 値は W3C Date and Time Formatsで規定される形式で、 YYYY-MM-DDThh:mm:ss.sssTZD です。
ExitTime
プロセス終了時刻(ローカル)を表す文字列です。形式はStartTimeと同じです。
StartTimeUTC
プロセス開始時刻(UTC)を表す文字列です。形式はStartTimeと同じです。
ExitTimeUTC
プロセス終了時刻(UTC)を表す文字列です。形式はStartTimeと同じです。
KernelTime
カーネルモードでのプロセス動作時間です。単位は100ナノ秒です。実行中のコンピュータに搭載された全CPUでの合計動作時間です。
UserTime
ユーザーモードでのプロセス動作時間です。単位は100ナノ秒です。実行中のコンピュータに搭載された全CPUでの合計動作時間です。
CPUUsage
CPU使用率です。単位はパーセントです。 前回計測時からの平均使用率が格納されます。 初回計測時には、当該プロセス起動時からの平均使用率が格納されます。 前回計測時からあまり時間が経過していない(現バージョンでは0.1秒)場合は、負の値が格納されます。

tppfMemoryInfo を指定すると、プロセスごとのメモリ使用情報を取得できます。

PageFaultCount
ページフォールト数です。
WorkingSetSize
現在のワーキングセットサイズです。単位はバイトです。
PeakWorkingSetSize
ワーキングセットサイズの最大値です。単位はバイトです。
QuotaPagedPoolUsage
現在のページプール使用サイズです。単位はバイトです。
QuotaPeakPagedPoolUsage
ページプール使用サイズの最大値です。単位はバイトです。
QuotaNonPagedPoolUsage
現在の非ページプール使用サイズです。単位はバイトです。
QuotaPeakNonPagedPoolUsage
非ページプール使用サイズの最大値です。単位はバイトです。
PagefileUsage
ページファイルとして割り当てられた領域のサイズ。単位はバイトです。
PeakPagefileUsage
ページファイルとして割り当てられた領域の最大サイズです。単位はバイトです。

tppfIOInfo を指定すると、プロセスのI/Oに関する情報を取得できます。

ReadOperationCount
実行された読み込み操作回数です。
WriteOperationCount
実行された書き込み操作回数です。
OtherOperationCount
読み込み、書き込み以外のI/O操作回数です。
ReadTransferCount
読み込みサイズです。単位はバイトです。
WriteTransferCount
書き込みサイズです。単位はバイトです。
OtherTransferCount
読み込み、書き込み以外の操作で発生したI/Oサイズです。単位はバイトです。

6. 例

現在の吉里吉里のプロセス情報を取得してみます。

var dic = System.getProcessInfo(void, 
  tppfModuleInfo | tppfTokenInfo | tppfMemoryInfo | tppfTimeInfo | tppfIOInfo);

変数 dic の内容は以下のようになります。

%[
 "ProcessID" => int 10572,
 "ParentProcessID" => int 10748,
 "CountThreads" => int 3,
 "PriorityClassBase" => int 8,
 "ExeFile" => string "krkr.eXe",
 "ErrorFlag" => int 0,
 "ErrorMessage" => string "",

 "ModuleBaseName" => string "krkr.eXe",
 "ModuleFileName" => string "C:\\path\\to\\kirikiri2\\krkr.eXe",

 "AccountName" => string "Hoge",
 "DomainName" => string "MYDOMAIN",

 "StartTime" => string "2006-01-21T20:22:13.468+09:00",
 "ExitTime" => string "1601-01-01T09:00:00.000+09:00",
 "StartTimeUTC" => string "2006-01-21T11:22:13.468Z",
 "ExitTimeUTC" => string "1601-01-01T00:00:00.000Z",
 "KernelTime" => int 625000,
 "UserTime" => int 781250,
 "CPUUsage" => int 0,

 "PageFaultCount" => int 2800,
 "WorkingSetSize" => int 6995968,
 "PeakWorkingSetSize" => int 7090176,
 "PagefileUsage" => int 3411968,
 "PeakPagefileUsage" => int 5292032,
 "QuotaPagedPoolUsage" => int 28760,
 "QuotaPeakPagedPoolUsage" => int 28784,
 "QuotaNonPagedPoolUsage" => int 3280,
 "QuotaPeakNonPagedPoolUsage" => int 3636,

 "ReadOperationCount" => int 8,
 "WriteOperationCount" => int 0,
 "OtherOperationCount" => int 369,
 "ReadTransferCount" => int 2767018,
 "WriteTransferCount" => int 0,
 "OtherTransferCount" => int 3760
]

CSRSS.EXEのプロセス情報を取得してみます(PIDが192の場合)。 CSRSS.EXEは、プロセス管理やメモリ管理等を行うシステムプロセスです。

var dic = System.getProcessInfo(192, 
  tppfModuleInfo | tppfTokenInfo | tppfMemoryInfo | tppfTimeInfo | tppfIOInfo);

変数 dic の内容は以下のようになります。

%[
 "ProcessID" => int 192,
 "ParentProcessID" => int 164,
 "CountThreads" => int 10,
 "PriorityClassBase" => int 13,
 "ExeFile" => string "CSRSS.EXE",
 "ErrorFlag" => int 8192,
 "ErrorMessage" => string "プロセス情報を取得できませんでした。\nアクセスが拒否されました。\r\n"
]

7. 関連項目