Win32 API 日本語リファレンス
ホームSystem.JobObjects › JOBOBJECT_BASIC_ACCOUNTING_INFORMATION

JOBOBJECT_BASIC_ACCOUNTING_INFORMATION

構造体
サイズx64: 48 バイト / x86: 48 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
TotalUserTimeLONGLONG8+0+0ジョブに関連付けられているすべてのアクティブなプロセス、およびジョブとの関連付けが解除された終了済みプロセスすべてのユーザーモード実行時間の合計です(100 ナノ秒単位)。
TotalKernelTimeLONGLONG8+8+8ジョブに関連付けられているすべてのアクティブなプロセス、およびジョブとの関連付けが解除された終了済みプロセスすべてのカーネルモード実行時間の合計です(100 ナノ秒単位)。
ThisPeriodTotalUserTimeLONGLONG8+16+16

ジョブ単位のユーザーモード時間制限を設定した最後の呼び出し以降の、ジョブに関連付けられているすべてのアクティブなプロセス(およびジョブとの関連付けが解除された終了済みプロセスすべて)のユーザーモード実行時間の合計です(100 ナノ秒単位)。

このメンバーは、ジョブの作成時、およびジョブ単位のユーザーモード時間制限が設定されるたびに 0 に設定されます。

ThisPeriodTotalKernelTimeLONGLONG8+24+24

ジョブ単位のカーネルモード時間制限を設定した最後の呼び出し以降の、ジョブに関連付けられているすべてのアクティブなプロセス(およびジョブとの関連付けが解除された終了済みプロセスすべて)のカーネルモード実行時間の合計です(100 ナノ秒単位)。

このメンバーは、ジョブの作成時、およびジョブ単位のカーネルモード時間制限が設定されるたびに 0 に設定されます。

TotalPageFaultCountDWORD4+32+32ジョブに関連付けられているすべてのアクティブなプロセス、およびジョブとの関連付けが解除された終了済みプロセスすべてで発生したページ フォールトの合計数です。
TotalProcessesDWORD4+36+36終了したプロセスを含む、ジョブの存続期間中にジョブに関連付けられたプロセスの合計数です。たとえば、プロセスをジョブに関連付けようとして制限違反により関連付けに失敗した場合でも、この値はインクリメントされます。
ActiveProcessesDWORD4+40+40現在ジョブに関連付けられているプロセスの合計数です。プロセスをジョブに関連付けようとして制限違反により関連付けに失敗した場合、この値は一時的にインクリメントされます。終了したプロセスが終了し、そのプロセスへのすべての参照が解放されると、この値はデクリメントされます。
TotalTerminatedProcessesDWORD4+44+44制限違反が原因で終了させられたプロセスの合計数です。

公式ドキュメント

ジョブ オブジェクトの基本的なアカウンティング情報を格納します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#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 Structure
import 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: uint32
struct 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