ホーム › System.JobObjects › JOBOBJECT_BASIC_ACCOUNTING_INFORMATION
JOBOBJECT_BASIC_ACCOUNTING_INFORMATION
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| TotalUserTime | LONGLONG | 8 | +0 | +0 | ジョブ内全プロセスのユーザーモード合計時間(100ナノ秒単位)。 |
| TotalKernelTime | LONGLONG | 8 | +8 | +8 | ジョブ内全プロセスのカーネルモード合計時間(100ナノ秒単位)。 |
| ThisPeriodTotalUserTime | LONGLONG | 8 | +16 | +16 | 現在の課金期間のユーザーモード合計時間(100ナノ秒単位)。 |
| ThisPeriodTotalKernelTime | LONGLONG | 8 | +24 | +24 | 現在の課金期間のカーネルモード合計時間(100ナノ秒単位)。 |
| TotalPageFaultCount | DWORD | 4 | +32 | +32 | ジョブ内プロセスが発生させたページフォールト総数。 |
| TotalProcesses | DWORD | 4 | +36 | +36 | ジョブに関連付けられた累計プロセス数。 |
| ActiveProcesses | DWORD | 4 | +40 | +40 | 現在アクティブなプロセス数。 |
| TotalTerminatedProcesses | DWORD | 4 | +44 | +44 | 制限超過等で終了させられたプロセス累計数。 |
各言語での定義
#include <windows.h>
// JOBOBJECT_BASIC_ACCOUNTING_INFORMATION (x64 48 / x86 48 バイト)
typedef struct JOBOBJECT_BASIC_ACCOUNTING_INFORMATION {
LONGLONG TotalUserTime;
LONGLONG TotalKernelTime;
LONGLONG ThisPeriodTotalUserTime;
LONGLONG ThisPeriodTotalKernelTime;
DWORD TotalPageFaultCount;
DWORD TotalProcesses;
DWORD ActiveProcesses;
DWORD TotalTerminatedProcesses;
} JOBOBJECT_BASIC_ACCOUNTING_INFORMATION;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct JOBOBJECT_BASIC_ACCOUNTING_INFORMATION
{
public long TotalUserTime;
public long TotalKernelTime;
public long ThisPeriodTotalUserTime;
public long ThisPeriodTotalKernelTime;
public uint TotalPageFaultCount;
public uint TotalProcesses;
public uint ActiveProcesses;
public uint TotalTerminatedProcesses;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure JOBOBJECT_BASIC_ACCOUNTING_INFORMATION
Public TotalUserTime As Long
Public TotalKernelTime As Long
Public ThisPeriodTotalUserTime As Long
Public ThisPeriodTotalKernelTime As Long
Public TotalPageFaultCount As UInteger
Public TotalProcesses As UInteger
Public ActiveProcesses As UInteger
Public TotalTerminatedProcesses As UInteger
End Structureimport ctypes
from ctypes import wintypes
class JOBOBJECT_BASIC_ACCOUNTING_INFORMATION(ctypes.Structure):
_fields_ = [
("TotalUserTime", ctypes.c_longlong),
("TotalKernelTime", ctypes.c_longlong),
("ThisPeriodTotalUserTime", ctypes.c_longlong),
("ThisPeriodTotalKernelTime", ctypes.c_longlong),
("TotalPageFaultCount", wintypes.DWORD),
("TotalProcesses", wintypes.DWORD),
("ActiveProcesses", wintypes.DWORD),
("TotalTerminatedProcesses", wintypes.DWORD),
]#[repr(C)]
pub struct JOBOBJECT_BASIC_ACCOUNTING_INFORMATION {
pub TotalUserTime: i64,
pub TotalKernelTime: i64,
pub ThisPeriodTotalUserTime: i64,
pub ThisPeriodTotalKernelTime: i64,
pub TotalPageFaultCount: u32,
pub TotalProcesses: u32,
pub ActiveProcesses: u32,
pub TotalTerminatedProcesses: u32,
}import "golang.org/x/sys/windows"
type JOBOBJECT_BASIC_ACCOUNTING_INFORMATION struct {
TotalUserTime int64
TotalKernelTime int64
ThisPeriodTotalUserTime int64
ThisPeriodTotalKernelTime int64
TotalPageFaultCount uint32
TotalProcesses uint32
ActiveProcesses uint32
TotalTerminatedProcesses uint32
}type
JOBOBJECT_BASIC_ACCOUNTING_INFORMATION = record
TotalUserTime: Int64;
TotalKernelTime: Int64;
ThisPeriodTotalUserTime: Int64;
ThisPeriodTotalKernelTime: Int64;
TotalPageFaultCount: DWORD;
TotalProcesses: DWORD;
ActiveProcesses: DWORD;
TotalTerminatedProcesses: DWORD;
end;const JOBOBJECT_BASIC_ACCOUNTING_INFORMATION = extern struct {
TotalUserTime: i64,
TotalKernelTime: i64,
ThisPeriodTotalUserTime: i64,
ThisPeriodTotalKernelTime: i64,
TotalPageFaultCount: u32,
TotalProcesses: u32,
ActiveProcesses: u32,
TotalTerminatedProcesses: u32,
};type
JOBOBJECT_BASIC_ACCOUNTING_INFORMATION {.bycopy.} = object
TotalUserTime: int64
TotalKernelTime: int64
ThisPeriodTotalUserTime: int64
ThisPeriodTotalKernelTime: int64
TotalPageFaultCount: uint32
TotalProcesses: uint32
ActiveProcesses: uint32
TotalTerminatedProcesses: uint32struct JOBOBJECT_BASIC_ACCOUNTING_INFORMATION
{
long TotalUserTime;
long TotalKernelTime;
long ThisPeriodTotalUserTime;
long ThisPeriodTotalKernelTime;
uint TotalPageFaultCount;
uint TotalProcesses;
uint ActiveProcesses;
uint TotalTerminatedProcesses;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; JOBOBJECT_BASIC_ACCOUNTING_INFORMATION サイズ: 48 バイト(x64)
dim st, 12 ; 4byte整数×12(構造体サイズ 48 / 4 切り上げ)
; TotalUserTime : LONGLONG (+0, 8byte) qpoke st,0,値 / qpeek(st,0) ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; TotalKernelTime : LONGLONG (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; ThisPeriodTotalUserTime : LONGLONG (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; ThisPeriodTotalKernelTime : LONGLONG (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; TotalPageFaultCount : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; TotalProcesses : DWORD (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; ActiveProcesses : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; TotalTerminatedProcesses : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global JOBOBJECT_BASIC_ACCOUNTING_INFORMATION
#field int64 TotalUserTime
#field int64 TotalKernelTime
#field int64 ThisPeriodTotalUserTime
#field int64 ThisPeriodTotalKernelTime
#field int TotalPageFaultCount
#field int TotalProcesses
#field int ActiveProcesses
#field int TotalTerminatedProcesses
#endstruct
stdim st, JOBOBJECT_BASIC_ACCOUNTING_INFORMATION ; NSTRUCT 変数を確保
st->TotalUserTime = 100
mes "TotalUserTime=" + st->TotalUserTime