750 lines
33 KiB
Zig
750 lines
33 KiB
Zig
//! NOTE: this file is autogenerated, DO NOT MODIFY
|
|
//--------------------------------------------------------------------------------
|
|
// Section: Constants (0)
|
|
//--------------------------------------------------------------------------------
|
|
|
|
//--------------------------------------------------------------------------------
|
|
// Section: Types (34)
|
|
//--------------------------------------------------------------------------------
|
|
pub const JOB_OBJECT_LIMIT = enum(u32) {
|
|
LIMIT_WORKINGSET = 1,
|
|
LIMIT_PROCESS_TIME = 2,
|
|
LIMIT_JOB_TIME = 4,
|
|
LIMIT_ACTIVE_PROCESS = 8,
|
|
LIMIT_AFFINITY = 16,
|
|
LIMIT_PRIORITY_CLASS = 32,
|
|
LIMIT_PRESERVE_JOB_TIME = 64,
|
|
LIMIT_SCHEDULING_CLASS = 128,
|
|
LIMIT_PROCESS_MEMORY = 256,
|
|
LIMIT_JOB_MEMORY = 512,
|
|
// LIMIT_JOB_MEMORY_HIGH = 512, this enum value conflicts with LIMIT_JOB_MEMORY
|
|
LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 1024,
|
|
LIMIT_BREAKAWAY_OK = 2048,
|
|
LIMIT_SILENT_BREAKAWAY_OK = 4096,
|
|
LIMIT_KILL_ON_JOB_CLOSE = 8192,
|
|
LIMIT_SUBSET_AFFINITY = 16384,
|
|
LIMIT_JOB_MEMORY_LOW = 32768,
|
|
LIMIT_JOB_READ_BYTES = 65536,
|
|
LIMIT_JOB_WRITE_BYTES = 131072,
|
|
LIMIT_RATE_CONTROL = 262144,
|
|
// LIMIT_CPU_RATE_CONTROL = 262144, this enum value conflicts with LIMIT_RATE_CONTROL
|
|
LIMIT_IO_RATE_CONTROL = 524288,
|
|
LIMIT_NET_RATE_CONTROL = 1048576,
|
|
LIMIT_VALID_FLAGS = 524287,
|
|
BASIC_LIMIT_VALID_FLAGS = 255,
|
|
EXTENDED_LIMIT_VALID_FLAGS = 32767,
|
|
NOTIFICATION_LIMIT_VALID_FLAGS = 2064900,
|
|
_,
|
|
pub fn initFlags(o: struct {
|
|
LIMIT_WORKINGSET: u1 = 0,
|
|
LIMIT_PROCESS_TIME: u1 = 0,
|
|
LIMIT_JOB_TIME: u1 = 0,
|
|
LIMIT_ACTIVE_PROCESS: u1 = 0,
|
|
LIMIT_AFFINITY: u1 = 0,
|
|
LIMIT_PRIORITY_CLASS: u1 = 0,
|
|
LIMIT_PRESERVE_JOB_TIME: u1 = 0,
|
|
LIMIT_SCHEDULING_CLASS: u1 = 0,
|
|
LIMIT_PROCESS_MEMORY: u1 = 0,
|
|
LIMIT_JOB_MEMORY: u1 = 0,
|
|
LIMIT_DIE_ON_UNHANDLED_EXCEPTION: u1 = 0,
|
|
LIMIT_BREAKAWAY_OK: u1 = 0,
|
|
LIMIT_SILENT_BREAKAWAY_OK: u1 = 0,
|
|
LIMIT_KILL_ON_JOB_CLOSE: u1 = 0,
|
|
LIMIT_SUBSET_AFFINITY: u1 = 0,
|
|
LIMIT_JOB_MEMORY_LOW: u1 = 0,
|
|
LIMIT_JOB_READ_BYTES: u1 = 0,
|
|
LIMIT_JOB_WRITE_BYTES: u1 = 0,
|
|
LIMIT_RATE_CONTROL: u1 = 0,
|
|
LIMIT_IO_RATE_CONTROL: u1 = 0,
|
|
LIMIT_NET_RATE_CONTROL: u1 = 0,
|
|
LIMIT_VALID_FLAGS: u1 = 0,
|
|
BASIC_LIMIT_VALID_FLAGS: u1 = 0,
|
|
EXTENDED_LIMIT_VALID_FLAGS: u1 = 0,
|
|
NOTIFICATION_LIMIT_VALID_FLAGS: u1 = 0,
|
|
}) JOB_OBJECT_LIMIT {
|
|
return @as(JOB_OBJECT_LIMIT, @enumFromInt(
|
|
(if (o.LIMIT_WORKINGSET == 1) @intFromEnum(JOB_OBJECT_LIMIT.LIMIT_WORKINGSET) else 0)
|
|
| (if (o.LIMIT_PROCESS_TIME == 1) @intFromEnum(JOB_OBJECT_LIMIT.LIMIT_PROCESS_TIME) else 0)
|
|
| (if (o.LIMIT_JOB_TIME == 1) @intFromEnum(JOB_OBJECT_LIMIT.LIMIT_JOB_TIME) else 0)
|
|
| (if (o.LIMIT_ACTIVE_PROCESS == 1) @intFromEnum(JOB_OBJECT_LIMIT.LIMIT_ACTIVE_PROCESS) else 0)
|
|
| (if (o.LIMIT_AFFINITY == 1) @intFromEnum(JOB_OBJECT_LIMIT.LIMIT_AFFINITY) else 0)
|
|
| (if (o.LIMIT_PRIORITY_CLASS == 1) @intFromEnum(JOB_OBJECT_LIMIT.LIMIT_PRIORITY_CLASS) else 0)
|
|
| (if (o.LIMIT_PRESERVE_JOB_TIME == 1) @intFromEnum(JOB_OBJECT_LIMIT.LIMIT_PRESERVE_JOB_TIME) else 0)
|
|
| (if (o.LIMIT_SCHEDULING_CLASS == 1) @intFromEnum(JOB_OBJECT_LIMIT.LIMIT_SCHEDULING_CLASS) else 0)
|
|
| (if (o.LIMIT_PROCESS_MEMORY == 1) @intFromEnum(JOB_OBJECT_LIMIT.LIMIT_PROCESS_MEMORY) else 0)
|
|
| (if (o.LIMIT_JOB_MEMORY == 1) @intFromEnum(JOB_OBJECT_LIMIT.LIMIT_JOB_MEMORY) else 0)
|
|
| (if (o.LIMIT_DIE_ON_UNHANDLED_EXCEPTION == 1) @intFromEnum(JOB_OBJECT_LIMIT.LIMIT_DIE_ON_UNHANDLED_EXCEPTION) else 0)
|
|
| (if (o.LIMIT_BREAKAWAY_OK == 1) @intFromEnum(JOB_OBJECT_LIMIT.LIMIT_BREAKAWAY_OK) else 0)
|
|
| (if (o.LIMIT_SILENT_BREAKAWAY_OK == 1) @intFromEnum(JOB_OBJECT_LIMIT.LIMIT_SILENT_BREAKAWAY_OK) else 0)
|
|
| (if (o.LIMIT_KILL_ON_JOB_CLOSE == 1) @intFromEnum(JOB_OBJECT_LIMIT.LIMIT_KILL_ON_JOB_CLOSE) else 0)
|
|
| (if (o.LIMIT_SUBSET_AFFINITY == 1) @intFromEnum(JOB_OBJECT_LIMIT.LIMIT_SUBSET_AFFINITY) else 0)
|
|
| (if (o.LIMIT_JOB_MEMORY_LOW == 1) @intFromEnum(JOB_OBJECT_LIMIT.LIMIT_JOB_MEMORY_LOW) else 0)
|
|
| (if (o.LIMIT_JOB_READ_BYTES == 1) @intFromEnum(JOB_OBJECT_LIMIT.LIMIT_JOB_READ_BYTES) else 0)
|
|
| (if (o.LIMIT_JOB_WRITE_BYTES == 1) @intFromEnum(JOB_OBJECT_LIMIT.LIMIT_JOB_WRITE_BYTES) else 0)
|
|
| (if (o.LIMIT_RATE_CONTROL == 1) @intFromEnum(JOB_OBJECT_LIMIT.LIMIT_RATE_CONTROL) else 0)
|
|
| (if (o.LIMIT_IO_RATE_CONTROL == 1) @intFromEnum(JOB_OBJECT_LIMIT.LIMIT_IO_RATE_CONTROL) else 0)
|
|
| (if (o.LIMIT_NET_RATE_CONTROL == 1) @intFromEnum(JOB_OBJECT_LIMIT.LIMIT_NET_RATE_CONTROL) else 0)
|
|
| (if (o.LIMIT_VALID_FLAGS == 1) @intFromEnum(JOB_OBJECT_LIMIT.LIMIT_VALID_FLAGS) else 0)
|
|
| (if (o.BASIC_LIMIT_VALID_FLAGS == 1) @intFromEnum(JOB_OBJECT_LIMIT.BASIC_LIMIT_VALID_FLAGS) else 0)
|
|
| (if (o.EXTENDED_LIMIT_VALID_FLAGS == 1) @intFromEnum(JOB_OBJECT_LIMIT.EXTENDED_LIMIT_VALID_FLAGS) else 0)
|
|
| (if (o.NOTIFICATION_LIMIT_VALID_FLAGS == 1) @intFromEnum(JOB_OBJECT_LIMIT.NOTIFICATION_LIMIT_VALID_FLAGS) else 0)
|
|
));
|
|
}
|
|
};
|
|
pub const JOB_OBJECT_LIMIT_WORKINGSET = JOB_OBJECT_LIMIT.LIMIT_WORKINGSET;
|
|
pub const JOB_OBJECT_LIMIT_PROCESS_TIME = JOB_OBJECT_LIMIT.LIMIT_PROCESS_TIME;
|
|
pub const JOB_OBJECT_LIMIT_JOB_TIME = JOB_OBJECT_LIMIT.LIMIT_JOB_TIME;
|
|
pub const JOB_OBJECT_LIMIT_ACTIVE_PROCESS = JOB_OBJECT_LIMIT.LIMIT_ACTIVE_PROCESS;
|
|
pub const JOB_OBJECT_LIMIT_AFFINITY = JOB_OBJECT_LIMIT.LIMIT_AFFINITY;
|
|
pub const JOB_OBJECT_LIMIT_PRIORITY_CLASS = JOB_OBJECT_LIMIT.LIMIT_PRIORITY_CLASS;
|
|
pub const JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = JOB_OBJECT_LIMIT.LIMIT_PRESERVE_JOB_TIME;
|
|
pub const JOB_OBJECT_LIMIT_SCHEDULING_CLASS = JOB_OBJECT_LIMIT.LIMIT_SCHEDULING_CLASS;
|
|
pub const JOB_OBJECT_LIMIT_PROCESS_MEMORY = JOB_OBJECT_LIMIT.LIMIT_PROCESS_MEMORY;
|
|
pub const JOB_OBJECT_LIMIT_JOB_MEMORY = JOB_OBJECT_LIMIT.LIMIT_JOB_MEMORY;
|
|
pub const JOB_OBJECT_LIMIT_JOB_MEMORY_HIGH = JOB_OBJECT_LIMIT.LIMIT_JOB_MEMORY;
|
|
pub const JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = JOB_OBJECT_LIMIT.LIMIT_DIE_ON_UNHANDLED_EXCEPTION;
|
|
pub const JOB_OBJECT_LIMIT_BREAKAWAY_OK = JOB_OBJECT_LIMIT.LIMIT_BREAKAWAY_OK;
|
|
pub const JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK = JOB_OBJECT_LIMIT.LIMIT_SILENT_BREAKAWAY_OK;
|
|
pub const JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE = JOB_OBJECT_LIMIT.LIMIT_KILL_ON_JOB_CLOSE;
|
|
pub const JOB_OBJECT_LIMIT_SUBSET_AFFINITY = JOB_OBJECT_LIMIT.LIMIT_SUBSET_AFFINITY;
|
|
pub const JOB_OBJECT_LIMIT_JOB_MEMORY_LOW = JOB_OBJECT_LIMIT.LIMIT_JOB_MEMORY_LOW;
|
|
pub const JOB_OBJECT_LIMIT_JOB_READ_BYTES = JOB_OBJECT_LIMIT.LIMIT_JOB_READ_BYTES;
|
|
pub const JOB_OBJECT_LIMIT_JOB_WRITE_BYTES = JOB_OBJECT_LIMIT.LIMIT_JOB_WRITE_BYTES;
|
|
pub const JOB_OBJECT_LIMIT_RATE_CONTROL = JOB_OBJECT_LIMIT.LIMIT_RATE_CONTROL;
|
|
pub const JOB_OBJECT_LIMIT_CPU_RATE_CONTROL = JOB_OBJECT_LIMIT.LIMIT_RATE_CONTROL;
|
|
pub const JOB_OBJECT_LIMIT_IO_RATE_CONTROL = JOB_OBJECT_LIMIT.LIMIT_IO_RATE_CONTROL;
|
|
pub const JOB_OBJECT_LIMIT_NET_RATE_CONTROL = JOB_OBJECT_LIMIT.LIMIT_NET_RATE_CONTROL;
|
|
pub const JOB_OBJECT_LIMIT_VALID_FLAGS = JOB_OBJECT_LIMIT.LIMIT_VALID_FLAGS;
|
|
pub const JOB_OBJECT_BASIC_LIMIT_VALID_FLAGS = JOB_OBJECT_LIMIT.BASIC_LIMIT_VALID_FLAGS;
|
|
pub const JOB_OBJECT_EXTENDED_LIMIT_VALID_FLAGS = JOB_OBJECT_LIMIT.EXTENDED_LIMIT_VALID_FLAGS;
|
|
pub const JOB_OBJECT_NOTIFICATION_LIMIT_VALID_FLAGS = JOB_OBJECT_LIMIT.NOTIFICATION_LIMIT_VALID_FLAGS;
|
|
|
|
pub const JOB_OBJECT_UILIMIT = enum(u32) {
|
|
NONE = 0,
|
|
HANDLES = 1,
|
|
READCLIPBOARD = 2,
|
|
WRITECLIPBOARD = 4,
|
|
SYSTEMPARAMETERS = 8,
|
|
DISPLAYSETTINGS = 16,
|
|
GLOBALATOMS = 32,
|
|
DESKTOP = 64,
|
|
EXITWINDOWS = 128,
|
|
_,
|
|
pub fn initFlags(o: struct {
|
|
NONE: u1 = 0,
|
|
HANDLES: u1 = 0,
|
|
READCLIPBOARD: u1 = 0,
|
|
WRITECLIPBOARD: u1 = 0,
|
|
SYSTEMPARAMETERS: u1 = 0,
|
|
DISPLAYSETTINGS: u1 = 0,
|
|
GLOBALATOMS: u1 = 0,
|
|
DESKTOP: u1 = 0,
|
|
EXITWINDOWS: u1 = 0,
|
|
}) JOB_OBJECT_UILIMIT {
|
|
return @as(JOB_OBJECT_UILIMIT, @enumFromInt(
|
|
(if (o.NONE == 1) @intFromEnum(JOB_OBJECT_UILIMIT.NONE) else 0)
|
|
| (if (o.HANDLES == 1) @intFromEnum(JOB_OBJECT_UILIMIT.HANDLES) else 0)
|
|
| (if (o.READCLIPBOARD == 1) @intFromEnum(JOB_OBJECT_UILIMIT.READCLIPBOARD) else 0)
|
|
| (if (o.WRITECLIPBOARD == 1) @intFromEnum(JOB_OBJECT_UILIMIT.WRITECLIPBOARD) else 0)
|
|
| (if (o.SYSTEMPARAMETERS == 1) @intFromEnum(JOB_OBJECT_UILIMIT.SYSTEMPARAMETERS) else 0)
|
|
| (if (o.DISPLAYSETTINGS == 1) @intFromEnum(JOB_OBJECT_UILIMIT.DISPLAYSETTINGS) else 0)
|
|
| (if (o.GLOBALATOMS == 1) @intFromEnum(JOB_OBJECT_UILIMIT.GLOBALATOMS) else 0)
|
|
| (if (o.DESKTOP == 1) @intFromEnum(JOB_OBJECT_UILIMIT.DESKTOP) else 0)
|
|
| (if (o.EXITWINDOWS == 1) @intFromEnum(JOB_OBJECT_UILIMIT.EXITWINDOWS) else 0)
|
|
));
|
|
}
|
|
};
|
|
pub const JOB_OBJECT_UILIMIT_NONE = JOB_OBJECT_UILIMIT.NONE;
|
|
pub const JOB_OBJECT_UILIMIT_HANDLES = JOB_OBJECT_UILIMIT.HANDLES;
|
|
pub const JOB_OBJECT_UILIMIT_READCLIPBOARD = JOB_OBJECT_UILIMIT.READCLIPBOARD;
|
|
pub const JOB_OBJECT_UILIMIT_WRITECLIPBOARD = JOB_OBJECT_UILIMIT.WRITECLIPBOARD;
|
|
pub const JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = JOB_OBJECT_UILIMIT.SYSTEMPARAMETERS;
|
|
pub const JOB_OBJECT_UILIMIT_DISPLAYSETTINGS = JOB_OBJECT_UILIMIT.DISPLAYSETTINGS;
|
|
pub const JOB_OBJECT_UILIMIT_GLOBALATOMS = JOB_OBJECT_UILIMIT.GLOBALATOMS;
|
|
pub const JOB_OBJECT_UILIMIT_DESKTOP = JOB_OBJECT_UILIMIT.DESKTOP;
|
|
pub const JOB_OBJECT_UILIMIT_EXITWINDOWS = JOB_OBJECT_UILIMIT.EXITWINDOWS;
|
|
|
|
pub const JOB_OBJECT_SECURITY = enum(u32) {
|
|
NO_ADMIN = 1,
|
|
RESTRICTED_TOKEN = 2,
|
|
ONLY_TOKEN = 4,
|
|
FILTER_TOKENS = 8,
|
|
VALID_FLAGS = 15,
|
|
_,
|
|
pub fn initFlags(o: struct {
|
|
NO_ADMIN: u1 = 0,
|
|
RESTRICTED_TOKEN: u1 = 0,
|
|
ONLY_TOKEN: u1 = 0,
|
|
FILTER_TOKENS: u1 = 0,
|
|
VALID_FLAGS: u1 = 0,
|
|
}) JOB_OBJECT_SECURITY {
|
|
return @as(JOB_OBJECT_SECURITY, @enumFromInt(
|
|
(if (o.NO_ADMIN == 1) @intFromEnum(JOB_OBJECT_SECURITY.NO_ADMIN) else 0)
|
|
| (if (o.RESTRICTED_TOKEN == 1) @intFromEnum(JOB_OBJECT_SECURITY.RESTRICTED_TOKEN) else 0)
|
|
| (if (o.ONLY_TOKEN == 1) @intFromEnum(JOB_OBJECT_SECURITY.ONLY_TOKEN) else 0)
|
|
| (if (o.FILTER_TOKENS == 1) @intFromEnum(JOB_OBJECT_SECURITY.FILTER_TOKENS) else 0)
|
|
| (if (o.VALID_FLAGS == 1) @intFromEnum(JOB_OBJECT_SECURITY.VALID_FLAGS) else 0)
|
|
));
|
|
}
|
|
};
|
|
pub const JOB_OBJECT_SECURITY_NO_ADMIN = JOB_OBJECT_SECURITY.NO_ADMIN;
|
|
pub const JOB_OBJECT_SECURITY_RESTRICTED_TOKEN = JOB_OBJECT_SECURITY.RESTRICTED_TOKEN;
|
|
pub const JOB_OBJECT_SECURITY_ONLY_TOKEN = JOB_OBJECT_SECURITY.ONLY_TOKEN;
|
|
pub const JOB_OBJECT_SECURITY_FILTER_TOKENS = JOB_OBJECT_SECURITY.FILTER_TOKENS;
|
|
pub const JOB_OBJECT_SECURITY_VALID_FLAGS = JOB_OBJECT_SECURITY.VALID_FLAGS;
|
|
|
|
pub const JOB_OBJECT_CPU_RATE_CONTROL = enum(u32) {
|
|
CPU_RATE_CONTROL_ENABLE = 1,
|
|
CPU_RATE_CONTROL_WEIGHT_BASED = 2,
|
|
CPU_RATE_CONTROL_HARD_CAP = 4,
|
|
CPU_RATE_CONTROL_NOTIFY = 8,
|
|
_CPU_RATE_CONTROL_MIN_MAX_RATE = 16,
|
|
};
|
|
pub const JOB_OBJECT_CPU_RATE_CONTROL_ENABLE = JOB_OBJECT_CPU_RATE_CONTROL.CPU_RATE_CONTROL_ENABLE;
|
|
pub const JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED = JOB_OBJECT_CPU_RATE_CONTROL.CPU_RATE_CONTROL_WEIGHT_BASED;
|
|
pub const JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP = JOB_OBJECT_CPU_RATE_CONTROL.CPU_RATE_CONTROL_HARD_CAP;
|
|
pub const JOB_OBJECT_CPU_RATE_CONTROL_NOTIFY = JOB_OBJECT_CPU_RATE_CONTROL.CPU_RATE_CONTROL_NOTIFY;
|
|
pub const JOB_OBJECT__CPU_RATE_CONTROL_MIN_MAX_RATE = JOB_OBJECT_CPU_RATE_CONTROL._CPU_RATE_CONTROL_MIN_MAX_RATE;
|
|
|
|
pub const JOB_OBJECT_TERMINATE_AT_END_ACTION = enum(u32) {
|
|
TERMINATE_AT_END_OF_JOB = 0,
|
|
POST_AT_END_OF_JOB = 1,
|
|
};
|
|
pub const JOB_OBJECT_TERMINATE_AT_END_OF_JOB = JOB_OBJECT_TERMINATE_AT_END_ACTION.TERMINATE_AT_END_OF_JOB;
|
|
pub const JOB_OBJECT_POST_AT_END_OF_JOB = JOB_OBJECT_TERMINATE_AT_END_ACTION.POST_AT_END_OF_JOB;
|
|
|
|
pub const JOBOBJECT_IO_RATE_CONTROL_INFORMATION = extern struct {
|
|
MaxIops: i64,
|
|
MaxBandwidth: i64,
|
|
ReservationIops: i64,
|
|
VolumeName: ?[*:0]const u16,
|
|
BaseIoSize: u32,
|
|
ControlFlags: JOB_OBJECT_IO_RATE_CONTROL_FLAGS,
|
|
};
|
|
|
|
pub const JOB_SET_ARRAY = extern struct {
|
|
JobHandle: ?HANDLE,
|
|
MemberLevel: u32,
|
|
Flags: u32,
|
|
};
|
|
|
|
pub const JOBOBJECT_BASIC_ACCOUNTING_INFORMATION = extern struct {
|
|
TotalUserTime: LARGE_INTEGER,
|
|
TotalKernelTime: LARGE_INTEGER,
|
|
ThisPeriodTotalUserTime: LARGE_INTEGER,
|
|
ThisPeriodTotalKernelTime: LARGE_INTEGER,
|
|
TotalPageFaultCount: u32,
|
|
TotalProcesses: u32,
|
|
ActiveProcesses: u32,
|
|
TotalTerminatedProcesses: u32,
|
|
};
|
|
|
|
pub const JOBOBJECT_BASIC_LIMIT_INFORMATION = extern struct {
|
|
PerProcessUserTimeLimit: LARGE_INTEGER,
|
|
PerJobUserTimeLimit: LARGE_INTEGER,
|
|
LimitFlags: JOB_OBJECT_LIMIT,
|
|
MinimumWorkingSetSize: usize,
|
|
MaximumWorkingSetSize: usize,
|
|
ActiveProcessLimit: u32,
|
|
Affinity: usize,
|
|
PriorityClass: u32,
|
|
SchedulingClass: u32,
|
|
};
|
|
|
|
pub const JOBOBJECT_EXTENDED_LIMIT_INFORMATION = extern struct {
|
|
BasicLimitInformation: JOBOBJECT_BASIC_LIMIT_INFORMATION,
|
|
IoInfo: IO_COUNTERS,
|
|
ProcessMemoryLimit: usize,
|
|
JobMemoryLimit: usize,
|
|
PeakProcessMemoryUsed: usize,
|
|
PeakJobMemoryUsed: usize,
|
|
};
|
|
|
|
pub const JOBOBJECT_BASIC_PROCESS_ID_LIST = extern struct {
|
|
NumberOfAssignedProcesses: u32,
|
|
NumberOfProcessIdsInList: u32,
|
|
ProcessIdList: [1]usize,
|
|
};
|
|
|
|
pub const JOBOBJECT_BASIC_UI_RESTRICTIONS = extern struct {
|
|
UIRestrictionsClass: JOB_OBJECT_UILIMIT,
|
|
};
|
|
|
|
pub const JOBOBJECT_SECURITY_LIMIT_INFORMATION = extern struct {
|
|
SecurityLimitFlags: JOB_OBJECT_SECURITY,
|
|
JobToken: ?HANDLE,
|
|
SidsToDisable: ?*TOKEN_GROUPS,
|
|
PrivilegesToDelete: ?*TOKEN_PRIVILEGES,
|
|
RestrictedSids: ?*TOKEN_GROUPS,
|
|
};
|
|
|
|
pub const JOBOBJECT_END_OF_JOB_TIME_INFORMATION = extern struct {
|
|
EndOfJobTimeAction: JOB_OBJECT_TERMINATE_AT_END_ACTION,
|
|
};
|
|
|
|
pub const JOBOBJECT_ASSOCIATE_COMPLETION_PORT = extern struct {
|
|
CompletionKey: ?*anyopaque,
|
|
CompletionPort: ?HANDLE,
|
|
};
|
|
|
|
pub const JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION = extern struct {
|
|
BasicInfo: JOBOBJECT_BASIC_ACCOUNTING_INFORMATION,
|
|
IoInfo: IO_COUNTERS,
|
|
};
|
|
|
|
pub const JOBOBJECT_JOBSET_INFORMATION = extern struct {
|
|
MemberLevel: u32,
|
|
};
|
|
|
|
pub const JOBOBJECT_RATE_CONTROL_TOLERANCE = enum(i32) {
|
|
Low = 1,
|
|
Medium = 2,
|
|
High = 3,
|
|
};
|
|
pub const ToleranceLow = JOBOBJECT_RATE_CONTROL_TOLERANCE.Low;
|
|
pub const ToleranceMedium = JOBOBJECT_RATE_CONTROL_TOLERANCE.Medium;
|
|
pub const ToleranceHigh = JOBOBJECT_RATE_CONTROL_TOLERANCE.High;
|
|
|
|
pub const JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL = enum(i32) {
|
|
Short = 1,
|
|
Medium = 2,
|
|
Long = 3,
|
|
};
|
|
// TODO: enum 'JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL' has known issues with its value aliases
|
|
|
|
pub const JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION = extern struct {
|
|
IoReadBytesLimit: u64,
|
|
IoWriteBytesLimit: u64,
|
|
PerJobUserTimeLimit: LARGE_INTEGER,
|
|
JobMemoryLimit: u64,
|
|
RateControlTolerance: JOBOBJECT_RATE_CONTROL_TOLERANCE,
|
|
RateControlToleranceInterval: JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL,
|
|
LimitFlags: JOB_OBJECT_LIMIT,
|
|
};
|
|
|
|
pub const JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 = extern struct {
|
|
IoReadBytesLimit: u64,
|
|
IoWriteBytesLimit: u64,
|
|
PerJobUserTimeLimit: LARGE_INTEGER,
|
|
Anonymous1: extern union {
|
|
JobHighMemoryLimit: u64,
|
|
JobMemoryLimit: u64,
|
|
},
|
|
Anonymous2: extern union {
|
|
RateControlTolerance: JOBOBJECT_RATE_CONTROL_TOLERANCE,
|
|
CpuRateControlTolerance: JOBOBJECT_RATE_CONTROL_TOLERANCE,
|
|
},
|
|
Anonymous3: extern union {
|
|
RateControlToleranceInterval: JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL,
|
|
CpuRateControlToleranceInterval: JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL,
|
|
},
|
|
LimitFlags: JOB_OBJECT_LIMIT,
|
|
IoRateControlTolerance: JOBOBJECT_RATE_CONTROL_TOLERANCE,
|
|
JobLowMemoryLimit: u64,
|
|
IoRateControlToleranceInterval: JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL,
|
|
NetRateControlTolerance: JOBOBJECT_RATE_CONTROL_TOLERANCE,
|
|
NetRateControlToleranceInterval: JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL,
|
|
};
|
|
|
|
pub const JOBOBJECT_LIMIT_VIOLATION_INFORMATION = extern struct {
|
|
LimitFlags: JOB_OBJECT_LIMIT,
|
|
ViolationLimitFlags: JOB_OBJECT_LIMIT,
|
|
IoReadBytes: u64,
|
|
IoReadBytesLimit: u64,
|
|
IoWriteBytes: u64,
|
|
IoWriteBytesLimit: u64,
|
|
PerJobUserTime: LARGE_INTEGER,
|
|
PerJobUserTimeLimit: LARGE_INTEGER,
|
|
JobMemory: u64,
|
|
JobMemoryLimit: u64,
|
|
RateControlTolerance: JOBOBJECT_RATE_CONTROL_TOLERANCE,
|
|
RateControlToleranceLimit: JOBOBJECT_RATE_CONTROL_TOLERANCE,
|
|
};
|
|
|
|
pub const JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2 = extern struct {
|
|
LimitFlags: JOB_OBJECT_LIMIT,
|
|
ViolationLimitFlags: JOB_OBJECT_LIMIT,
|
|
IoReadBytes: u64,
|
|
IoReadBytesLimit: u64,
|
|
IoWriteBytes: u64,
|
|
IoWriteBytesLimit: u64,
|
|
PerJobUserTime: LARGE_INTEGER,
|
|
PerJobUserTimeLimit: LARGE_INTEGER,
|
|
JobMemory: u64,
|
|
Anonymous1: extern union {
|
|
JobHighMemoryLimit: u64,
|
|
JobMemoryLimit: u64,
|
|
},
|
|
Anonymous2: extern union {
|
|
RateControlTolerance: JOBOBJECT_RATE_CONTROL_TOLERANCE,
|
|
CpuRateControlTolerance: JOBOBJECT_RATE_CONTROL_TOLERANCE,
|
|
},
|
|
Anonymous3: extern union {
|
|
RateControlToleranceLimit: JOBOBJECT_RATE_CONTROL_TOLERANCE,
|
|
CpuRateControlToleranceLimit: JOBOBJECT_RATE_CONTROL_TOLERANCE,
|
|
},
|
|
JobLowMemoryLimit: u64,
|
|
IoRateControlTolerance: JOBOBJECT_RATE_CONTROL_TOLERANCE,
|
|
IoRateControlToleranceLimit: JOBOBJECT_RATE_CONTROL_TOLERANCE,
|
|
NetRateControlTolerance: JOBOBJECT_RATE_CONTROL_TOLERANCE,
|
|
NetRateControlToleranceLimit: JOBOBJECT_RATE_CONTROL_TOLERANCE,
|
|
};
|
|
|
|
pub const JOBOBJECT_CPU_RATE_CONTROL_INFORMATION = extern struct {
|
|
ControlFlags: JOB_OBJECT_CPU_RATE_CONTROL,
|
|
Anonymous: extern union {
|
|
CpuRate: u32,
|
|
Weight: u32,
|
|
Anonymous: extern struct {
|
|
MinRate: u16,
|
|
MaxRate: u16,
|
|
},
|
|
},
|
|
};
|
|
|
|
pub const JOB_OBJECT_NET_RATE_CONTROL_FLAGS = enum(i32) {
|
|
ENABLE = 1,
|
|
MAX_BANDWIDTH = 2,
|
|
DSCP_TAG = 4,
|
|
VALID_FLAGS = 7,
|
|
};
|
|
pub const JOB_OBJECT_NET_RATE_CONTROL_ENABLE = JOB_OBJECT_NET_RATE_CONTROL_FLAGS.ENABLE;
|
|
pub const JOB_OBJECT_NET_RATE_CONTROL_MAX_BANDWIDTH = JOB_OBJECT_NET_RATE_CONTROL_FLAGS.MAX_BANDWIDTH;
|
|
pub const JOB_OBJECT_NET_RATE_CONTROL_DSCP_TAG = JOB_OBJECT_NET_RATE_CONTROL_FLAGS.DSCP_TAG;
|
|
pub const JOB_OBJECT_NET_RATE_CONTROL_VALID_FLAGS = JOB_OBJECT_NET_RATE_CONTROL_FLAGS.VALID_FLAGS;
|
|
|
|
pub const JOBOBJECT_NET_RATE_CONTROL_INFORMATION = extern struct {
|
|
MaxBandwidth: u64,
|
|
ControlFlags: JOB_OBJECT_NET_RATE_CONTROL_FLAGS,
|
|
DscpTag: u8,
|
|
};
|
|
|
|
pub const JOB_OBJECT_IO_RATE_CONTROL_FLAGS = enum(i32) {
|
|
ENABLE = 1,
|
|
STANDALONE_VOLUME = 2,
|
|
FORCE_UNIT_ACCESS_ALL = 4,
|
|
FORCE_UNIT_ACCESS_ON_SOFT_CAP = 8,
|
|
VALID_FLAGS = 15,
|
|
};
|
|
pub const JOB_OBJECT_IO_RATE_CONTROL_ENABLE = JOB_OBJECT_IO_RATE_CONTROL_FLAGS.ENABLE;
|
|
pub const JOB_OBJECT_IO_RATE_CONTROL_STANDALONE_VOLUME = JOB_OBJECT_IO_RATE_CONTROL_FLAGS.STANDALONE_VOLUME;
|
|
pub const JOB_OBJECT_IO_RATE_CONTROL_FORCE_UNIT_ACCESS_ALL = JOB_OBJECT_IO_RATE_CONTROL_FLAGS.FORCE_UNIT_ACCESS_ALL;
|
|
pub const JOB_OBJECT_IO_RATE_CONTROL_FORCE_UNIT_ACCESS_ON_SOFT_CAP = JOB_OBJECT_IO_RATE_CONTROL_FLAGS.FORCE_UNIT_ACCESS_ON_SOFT_CAP;
|
|
pub const JOB_OBJECT_IO_RATE_CONTROL_VALID_FLAGS = JOB_OBJECT_IO_RATE_CONTROL_FLAGS.VALID_FLAGS;
|
|
|
|
pub const JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE = extern struct {
|
|
MaxIops: i64,
|
|
MaxBandwidth: i64,
|
|
ReservationIops: i64,
|
|
VolumeName: ?PWSTR,
|
|
BaseIoSize: u32,
|
|
ControlFlags: JOB_OBJECT_IO_RATE_CONTROL_FLAGS,
|
|
VolumeNameLength: u16,
|
|
};
|
|
|
|
pub const JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V2 = extern struct {
|
|
MaxIops: i64,
|
|
MaxBandwidth: i64,
|
|
ReservationIops: i64,
|
|
VolumeName: ?PWSTR,
|
|
BaseIoSize: u32,
|
|
ControlFlags: JOB_OBJECT_IO_RATE_CONTROL_FLAGS,
|
|
VolumeNameLength: u16,
|
|
CriticalReservationIops: i64,
|
|
ReservationBandwidth: i64,
|
|
CriticalReservationBandwidth: i64,
|
|
MaxTimePercent: i64,
|
|
ReservationTimePercent: i64,
|
|
CriticalReservationTimePercent: i64,
|
|
};
|
|
|
|
pub const JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V3 = extern struct {
|
|
MaxIops: i64,
|
|
MaxBandwidth: i64,
|
|
ReservationIops: i64,
|
|
VolumeName: ?PWSTR,
|
|
BaseIoSize: u32,
|
|
ControlFlags: JOB_OBJECT_IO_RATE_CONTROL_FLAGS,
|
|
VolumeNameLength: u16,
|
|
CriticalReservationIops: i64,
|
|
ReservationBandwidth: i64,
|
|
CriticalReservationBandwidth: i64,
|
|
MaxTimePercent: i64,
|
|
ReservationTimePercent: i64,
|
|
CriticalReservationTimePercent: i64,
|
|
SoftMaxIops: i64,
|
|
SoftMaxBandwidth: i64,
|
|
SoftMaxTimePercent: i64,
|
|
LimitExcessNotifyIops: i64,
|
|
LimitExcessNotifyBandwidth: i64,
|
|
LimitExcessNotifyTimePercent: i64,
|
|
};
|
|
|
|
pub const JOBOBJECT_IO_ATTRIBUTION_CONTROL_FLAGS = enum(i32) {
|
|
ENABLE = 1,
|
|
DISABLE = 2,
|
|
VALID_FLAGS = 3,
|
|
};
|
|
pub const JOBOBJECT_IO_ATTRIBUTION_CONTROL_ENABLE = JOBOBJECT_IO_ATTRIBUTION_CONTROL_FLAGS.ENABLE;
|
|
pub const JOBOBJECT_IO_ATTRIBUTION_CONTROL_DISABLE = JOBOBJECT_IO_ATTRIBUTION_CONTROL_FLAGS.DISABLE;
|
|
pub const JOBOBJECT_IO_ATTRIBUTION_CONTROL_VALID_FLAGS = JOBOBJECT_IO_ATTRIBUTION_CONTROL_FLAGS.VALID_FLAGS;
|
|
|
|
pub const JOBOBJECT_IO_ATTRIBUTION_STATS = extern struct {
|
|
IoCount: usize,
|
|
TotalNonOverlappedQueueTime: u64,
|
|
TotalNonOverlappedServiceTime: u64,
|
|
TotalSize: u64,
|
|
};
|
|
|
|
pub const JOBOBJECT_IO_ATTRIBUTION_INFORMATION = extern struct {
|
|
ControlFlags: u32,
|
|
ReadStats: JOBOBJECT_IO_ATTRIBUTION_STATS,
|
|
WriteStats: JOBOBJECT_IO_ATTRIBUTION_STATS,
|
|
};
|
|
|
|
pub const JOBOBJECTINFOCLASS = enum(i32) {
|
|
JobObjectBasicAccountingInformation = 1,
|
|
JobObjectBasicLimitInformation = 2,
|
|
JobObjectBasicProcessIdList = 3,
|
|
JobObjectBasicUIRestrictions = 4,
|
|
JobObjectSecurityLimitInformation = 5,
|
|
JobObjectEndOfJobTimeInformation = 6,
|
|
JobObjectAssociateCompletionPortInformation = 7,
|
|
JobObjectBasicAndIoAccountingInformation = 8,
|
|
JobObjectExtendedLimitInformation = 9,
|
|
JobObjectJobSetInformation = 10,
|
|
JobObjectGroupInformation = 11,
|
|
JobObjectNotificationLimitInformation = 12,
|
|
JobObjectLimitViolationInformation = 13,
|
|
JobObjectGroupInformationEx = 14,
|
|
JobObjectCpuRateControlInformation = 15,
|
|
JobObjectCompletionFilter = 16,
|
|
JobObjectCompletionCounter = 17,
|
|
JobObjectReserved1Information = 18,
|
|
JobObjectReserved2Information = 19,
|
|
JobObjectReserved3Information = 20,
|
|
JobObjectReserved4Information = 21,
|
|
JobObjectReserved5Information = 22,
|
|
JobObjectReserved6Information = 23,
|
|
JobObjectReserved7Information = 24,
|
|
JobObjectReserved8Information = 25,
|
|
JobObjectReserved9Information = 26,
|
|
JobObjectReserved10Information = 27,
|
|
JobObjectReserved11Information = 28,
|
|
JobObjectReserved12Information = 29,
|
|
JobObjectReserved13Information = 30,
|
|
JobObjectReserved14Information = 31,
|
|
JobObjectNetRateControlInformation = 32,
|
|
JobObjectNotificationLimitInformation2 = 33,
|
|
JobObjectLimitViolationInformation2 = 34,
|
|
JobObjectCreateSilo = 35,
|
|
JobObjectSiloBasicInformation = 36,
|
|
JobObjectReserved15Information = 37,
|
|
JobObjectReserved16Information = 38,
|
|
JobObjectReserved17Information = 39,
|
|
JobObjectReserved18Information = 40,
|
|
JobObjectReserved19Information = 41,
|
|
JobObjectReserved20Information = 42,
|
|
JobObjectReserved21Information = 43,
|
|
JobObjectReserved22Information = 44,
|
|
JobObjectReserved23Information = 45,
|
|
JobObjectReserved24Information = 46,
|
|
JobObjectReserved25Information = 47,
|
|
MaxJobObjectInfoClass = 48,
|
|
};
|
|
pub const JobObjectBasicAccountingInformation = JOBOBJECTINFOCLASS.JobObjectBasicAccountingInformation;
|
|
pub const JobObjectBasicLimitInformation = JOBOBJECTINFOCLASS.JobObjectBasicLimitInformation;
|
|
pub const JobObjectBasicProcessIdList = JOBOBJECTINFOCLASS.JobObjectBasicProcessIdList;
|
|
pub const JobObjectBasicUIRestrictions = JOBOBJECTINFOCLASS.JobObjectBasicUIRestrictions;
|
|
pub const JobObjectSecurityLimitInformation = JOBOBJECTINFOCLASS.JobObjectSecurityLimitInformation;
|
|
pub const JobObjectEndOfJobTimeInformation = JOBOBJECTINFOCLASS.JobObjectEndOfJobTimeInformation;
|
|
pub const JobObjectAssociateCompletionPortInformation = JOBOBJECTINFOCLASS.JobObjectAssociateCompletionPortInformation;
|
|
pub const JobObjectBasicAndIoAccountingInformation = JOBOBJECTINFOCLASS.JobObjectBasicAndIoAccountingInformation;
|
|
pub const JobObjectExtendedLimitInformation = JOBOBJECTINFOCLASS.JobObjectExtendedLimitInformation;
|
|
pub const JobObjectJobSetInformation = JOBOBJECTINFOCLASS.JobObjectJobSetInformation;
|
|
pub const JobObjectGroupInformation = JOBOBJECTINFOCLASS.JobObjectGroupInformation;
|
|
pub const JobObjectNotificationLimitInformation = JOBOBJECTINFOCLASS.JobObjectNotificationLimitInformation;
|
|
pub const JobObjectLimitViolationInformation = JOBOBJECTINFOCLASS.JobObjectLimitViolationInformation;
|
|
pub const JobObjectGroupInformationEx = JOBOBJECTINFOCLASS.JobObjectGroupInformationEx;
|
|
pub const JobObjectCpuRateControlInformation = JOBOBJECTINFOCLASS.JobObjectCpuRateControlInformation;
|
|
pub const JobObjectCompletionFilter = JOBOBJECTINFOCLASS.JobObjectCompletionFilter;
|
|
pub const JobObjectCompletionCounter = JOBOBJECTINFOCLASS.JobObjectCompletionCounter;
|
|
pub const JobObjectReserved1Information = JOBOBJECTINFOCLASS.JobObjectReserved1Information;
|
|
pub const JobObjectReserved2Information = JOBOBJECTINFOCLASS.JobObjectReserved2Information;
|
|
pub const JobObjectReserved3Information = JOBOBJECTINFOCLASS.JobObjectReserved3Information;
|
|
pub const JobObjectReserved4Information = JOBOBJECTINFOCLASS.JobObjectReserved4Information;
|
|
pub const JobObjectReserved5Information = JOBOBJECTINFOCLASS.JobObjectReserved5Information;
|
|
pub const JobObjectReserved6Information = JOBOBJECTINFOCLASS.JobObjectReserved6Information;
|
|
pub const JobObjectReserved7Information = JOBOBJECTINFOCLASS.JobObjectReserved7Information;
|
|
pub const JobObjectReserved8Information = JOBOBJECTINFOCLASS.JobObjectReserved8Information;
|
|
pub const JobObjectReserved9Information = JOBOBJECTINFOCLASS.JobObjectReserved9Information;
|
|
pub const JobObjectReserved10Information = JOBOBJECTINFOCLASS.JobObjectReserved10Information;
|
|
pub const JobObjectReserved11Information = JOBOBJECTINFOCLASS.JobObjectReserved11Information;
|
|
pub const JobObjectReserved12Information = JOBOBJECTINFOCLASS.JobObjectReserved12Information;
|
|
pub const JobObjectReserved13Information = JOBOBJECTINFOCLASS.JobObjectReserved13Information;
|
|
pub const JobObjectReserved14Information = JOBOBJECTINFOCLASS.JobObjectReserved14Information;
|
|
pub const JobObjectNetRateControlInformation = JOBOBJECTINFOCLASS.JobObjectNetRateControlInformation;
|
|
pub const JobObjectNotificationLimitInformation2 = JOBOBJECTINFOCLASS.JobObjectNotificationLimitInformation2;
|
|
pub const JobObjectLimitViolationInformation2 = JOBOBJECTINFOCLASS.JobObjectLimitViolationInformation2;
|
|
pub const JobObjectCreateSilo = JOBOBJECTINFOCLASS.JobObjectCreateSilo;
|
|
pub const JobObjectSiloBasicInformation = JOBOBJECTINFOCLASS.JobObjectSiloBasicInformation;
|
|
pub const JobObjectReserved15Information = JOBOBJECTINFOCLASS.JobObjectReserved15Information;
|
|
pub const JobObjectReserved16Information = JOBOBJECTINFOCLASS.JobObjectReserved16Information;
|
|
pub const JobObjectReserved17Information = JOBOBJECTINFOCLASS.JobObjectReserved17Information;
|
|
pub const JobObjectReserved18Information = JOBOBJECTINFOCLASS.JobObjectReserved18Information;
|
|
pub const JobObjectReserved19Information = JOBOBJECTINFOCLASS.JobObjectReserved19Information;
|
|
pub const JobObjectReserved20Information = JOBOBJECTINFOCLASS.JobObjectReserved20Information;
|
|
pub const JobObjectReserved21Information = JOBOBJECTINFOCLASS.JobObjectReserved21Information;
|
|
pub const JobObjectReserved22Information = JOBOBJECTINFOCLASS.JobObjectReserved22Information;
|
|
pub const JobObjectReserved23Information = JOBOBJECTINFOCLASS.JobObjectReserved23Information;
|
|
pub const JobObjectReserved24Information = JOBOBJECTINFOCLASS.JobObjectReserved24Information;
|
|
pub const JobObjectReserved25Information = JOBOBJECTINFOCLASS.JobObjectReserved25Information;
|
|
pub const MaxJobObjectInfoClass = JOBOBJECTINFOCLASS.MaxJobObjectInfoClass;
|
|
|
|
|
|
//--------------------------------------------------------------------------------
|
|
// Section: Functions (14)
|
|
//--------------------------------------------------------------------------------
|
|
// TODO: this type is limited to platform 'windows5.1.2600'
|
|
pub extern "kernel32" fn IsProcessInJob(
|
|
ProcessHandle: ?HANDLE,
|
|
JobHandle: ?HANDLE,
|
|
Result: ?*BOOL,
|
|
) callconv(@import("std").os.windows.WINAPI) BOOL;
|
|
|
|
// TODO: this type is limited to platform 'windows5.1.2600'
|
|
pub extern "kernel32" fn CreateJobObjectW(
|
|
lpJobAttributes: ?*SECURITY_ATTRIBUTES,
|
|
lpName: ?[*:0]const u16,
|
|
) callconv(@import("std").os.windows.WINAPI) ?HANDLE;
|
|
|
|
// TODO: this type is limited to platform 'windows10.0.10240'
|
|
pub extern "kernel32" fn FreeMemoryJobObject(
|
|
Buffer: ?*anyopaque,
|
|
) callconv(@import("std").os.windows.WINAPI) void;
|
|
|
|
// TODO: this type is limited to platform 'windows5.1.2600'
|
|
pub extern "kernel32" fn OpenJobObjectW(
|
|
dwDesiredAccess: u32,
|
|
bInheritHandle: BOOL,
|
|
lpName: ?[*:0]const u16,
|
|
) callconv(@import("std").os.windows.WINAPI) ?HANDLE;
|
|
|
|
// TODO: this type is limited to platform 'windows5.1.2600'
|
|
pub extern "kernel32" fn AssignProcessToJobObject(
|
|
hJob: ?HANDLE,
|
|
hProcess: ?HANDLE,
|
|
) callconv(@import("std").os.windows.WINAPI) BOOL;
|
|
|
|
// TODO: this type is limited to platform 'windows5.1.2600'
|
|
pub extern "kernel32" fn TerminateJobObject(
|
|
hJob: ?HANDLE,
|
|
uExitCode: u32,
|
|
) callconv(@import("std").os.windows.WINAPI) BOOL;
|
|
|
|
// TODO: this type is limited to platform 'windows5.1.2600'
|
|
pub extern "kernel32" fn SetInformationJobObject(
|
|
hJob: ?HANDLE,
|
|
JobObjectInformationClass: JOBOBJECTINFOCLASS,
|
|
// TODO: what to do with BytesParamIndex 3?
|
|
lpJobObjectInformation: ?*anyopaque,
|
|
cbJobObjectInformationLength: u32,
|
|
) callconv(@import("std").os.windows.WINAPI) BOOL;
|
|
|
|
// TODO: this type is limited to platform 'windows10.0.10240'
|
|
pub extern "kernel32" fn SetIoRateControlInformationJobObject(
|
|
hJob: ?HANDLE,
|
|
IoRateControlInfo: ?*JOBOBJECT_IO_RATE_CONTROL_INFORMATION,
|
|
) callconv(@import("std").os.windows.WINAPI) u32;
|
|
|
|
// TODO: this type is limited to platform 'windows5.1.2600'
|
|
pub extern "kernel32" fn QueryInformationJobObject(
|
|
hJob: ?HANDLE,
|
|
JobObjectInformationClass: JOBOBJECTINFOCLASS,
|
|
// TODO: what to do with BytesParamIndex 3?
|
|
lpJobObjectInformation: ?*anyopaque,
|
|
cbJobObjectInformationLength: u32,
|
|
lpReturnLength: ?*u32,
|
|
) callconv(@import("std").os.windows.WINAPI) BOOL;
|
|
|
|
// TODO: this type is limited to platform 'windows10.0.10240'
|
|
pub extern "kernel32" fn QueryIoRateControlInformationJobObject(
|
|
hJob: ?HANDLE,
|
|
VolumeName: ?[*:0]const u16,
|
|
InfoBlocks: ?*?*JOBOBJECT_IO_RATE_CONTROL_INFORMATION,
|
|
InfoBlockCount: ?*u32,
|
|
) callconv(@import("std").os.windows.WINAPI) u32;
|
|
|
|
// TODO: this type is limited to platform 'windows5.1.2600'
|
|
pub extern "user32" fn UserHandleGrantAccess(
|
|
hUserHandle: ?HANDLE,
|
|
hJob: ?HANDLE,
|
|
bGrant: BOOL,
|
|
) callconv(@import("std").os.windows.WINAPI) BOOL;
|
|
|
|
// TODO: this type is limited to platform 'windows5.1.2600'
|
|
pub extern "kernel32" fn CreateJobObjectA(
|
|
lpJobAttributes: ?*SECURITY_ATTRIBUTES,
|
|
lpName: ?[*:0]const u8,
|
|
) callconv(@import("std").os.windows.WINAPI) ?HANDLE;
|
|
|
|
// TODO: this type is limited to platform 'windows5.1.2600'
|
|
pub extern "kernel32" fn OpenJobObjectA(
|
|
dwDesiredAccess: u32,
|
|
bInheritHandle: BOOL,
|
|
lpName: ?[*:0]const u8,
|
|
) callconv(@import("std").os.windows.WINAPI) ?HANDLE;
|
|
|
|
pub extern "kernel32" fn CreateJobSet(
|
|
NumJob: u32,
|
|
UserJobSet: [*]JOB_SET_ARRAY,
|
|
Flags: u32,
|
|
) callconv(@import("std").os.windows.WINAPI) BOOL;
|
|
|
|
|
|
//--------------------------------------------------------------------------------
|
|
// Section: Unicode Aliases (2)
|
|
//--------------------------------------------------------------------------------
|
|
const thismodule = @This();
|
|
pub usingnamespace switch (@import("../zig.zig").unicode_mode) {
|
|
.ansi => struct {
|
|
pub const CreateJobObject = thismodule.CreateJobObjectA;
|
|
pub const OpenJobObject = thismodule.OpenJobObjectA;
|
|
},
|
|
.wide => struct {
|
|
pub const CreateJobObject = thismodule.CreateJobObjectW;
|
|
pub const OpenJobObject = thismodule.OpenJobObjectW;
|
|
},
|
|
.unspecified => if (@import("builtin").is_test) struct {
|
|
pub const CreateJobObject = *opaque{};
|
|
pub const OpenJobObject = *opaque{};
|
|
} else struct {
|
|
pub const CreateJobObject = @compileError("'CreateJobObject' requires that UNICODE be set to true or false in the root module");
|
|
pub const OpenJobObject = @compileError("'OpenJobObject' requires that UNICODE be set to true or false in the root module");
|
|
},
|
|
};
|
|
//--------------------------------------------------------------------------------
|
|
// Section: Imports (9)
|
|
//--------------------------------------------------------------------------------
|
|
const BOOL = @import("../foundation.zig").BOOL;
|
|
const HANDLE = @import("../foundation.zig").HANDLE;
|
|
const IO_COUNTERS = @import("../system/threading.zig").IO_COUNTERS;
|
|
const LARGE_INTEGER = @import("../foundation.zig").LARGE_INTEGER;
|
|
const PSTR = @import("../foundation.zig").PSTR;
|
|
const PWSTR = @import("../foundation.zig").PWSTR;
|
|
const SECURITY_ATTRIBUTES = @import("../security.zig").SECURITY_ATTRIBUTES;
|
|
const TOKEN_GROUPS = @import("../security.zig").TOKEN_GROUPS;
|
|
const TOKEN_PRIVILEGES = @import("../security.zig").TOKEN_PRIVILEGES;
|
|
|
|
test {
|
|
@setEvalBranchQuota(
|
|
comptime @import("std").meta.declarations(@This()).len * 3
|
|
);
|
|
|
|
// reference all the pub declarations
|
|
if (!@import("builtin").is_test) return;
|
|
inline for (comptime @import("std").meta.declarations(@This())) |decl| {
|
|
_ = @field(@This(), decl.name);
|
|
}
|
|
}
|