1 #![allow(non_snake_case, non_camel_case_types, non_upper_case_globals, clashing_extern_declarations, clippy::all)] 2 #[link(name = "windows")] 3 extern "system" { 4 #[cfg(feature = "Win32_Foundation")] AssignProcessToJobObject(hjob: super::super::Foundation::HANDLE, hprocess: super::super::Foundation::HANDLE) -> super::super::Foundation::BOOL5 pub fn AssignProcessToJobObject(hjob: super::super::Foundation::HANDLE, hprocess: super::super::Foundation::HANDLE) -> super::super::Foundation::BOOL; 6 #[cfg(all(feature = "Win32_Foundation", feature = "Win32_Security"))] CreateJobObjectA(lpjobattributes: *const super::super::Security::SECURITY_ATTRIBUTES, lpname: super::super::Foundation::PSTR) -> super::super::Foundation::HANDLE7 pub fn CreateJobObjectA(lpjobattributes: *const super::super::Security::SECURITY_ATTRIBUTES, lpname: super::super::Foundation::PSTR) -> super::super::Foundation::HANDLE; 8 #[cfg(all(feature = "Win32_Foundation", feature = "Win32_Security"))] CreateJobObjectW(lpjobattributes: *const super::super::Security::SECURITY_ATTRIBUTES, lpname: super::super::Foundation::PWSTR) -> super::super::Foundation::HANDLE9 pub fn CreateJobObjectW(lpjobattributes: *const super::super::Security::SECURITY_ATTRIBUTES, lpname: super::super::Foundation::PWSTR) -> super::super::Foundation::HANDLE; 10 #[cfg(feature = "Win32_Foundation")] CreateJobSet(numjob: u32, userjobset: *const JOB_SET_ARRAY, flags: u32) -> super::super::Foundation::BOOL11 pub fn CreateJobSet(numjob: u32, userjobset: *const JOB_SET_ARRAY, flags: u32) -> super::super::Foundation::BOOL; FreeMemoryJobObject(buffer: *const ::core::ffi::c_void)12 pub fn FreeMemoryJobObject(buffer: *const ::core::ffi::c_void); 13 #[cfg(feature = "Win32_Foundation")] IsProcessInJob(processhandle: super::super::Foundation::HANDLE, jobhandle: super::super::Foundation::HANDLE, result: *mut super::super::Foundation::BOOL) -> super::super::Foundation::BOOL14 pub fn IsProcessInJob(processhandle: super::super::Foundation::HANDLE, jobhandle: super::super::Foundation::HANDLE, result: *mut super::super::Foundation::BOOL) -> super::super::Foundation::BOOL; 15 #[cfg(feature = "Win32_Foundation")] OpenJobObjectA(dwdesiredaccess: u32, binherithandle: super::super::Foundation::BOOL, lpname: super::super::Foundation::PSTR) -> super::super::Foundation::HANDLE16 pub fn OpenJobObjectA(dwdesiredaccess: u32, binherithandle: super::super::Foundation::BOOL, lpname: super::super::Foundation::PSTR) -> super::super::Foundation::HANDLE; 17 #[cfg(feature = "Win32_Foundation")] OpenJobObjectW(dwdesiredaccess: u32, binherithandle: super::super::Foundation::BOOL, lpname: super::super::Foundation::PWSTR) -> super::super::Foundation::HANDLE18 pub fn OpenJobObjectW(dwdesiredaccess: u32, binherithandle: super::super::Foundation::BOOL, lpname: super::super::Foundation::PWSTR) -> super::super::Foundation::HANDLE; 19 #[cfg(feature = "Win32_Foundation")] QueryInformationJobObject(hjob: super::super::Foundation::HANDLE, jobobjectinformationclass: JOBOBJECTINFOCLASS, lpjobobjectinformation: *mut ::core::ffi::c_void, cbjobobjectinformationlength: u32, lpreturnlength: *mut u32) -> super::super::Foundation::BOOL20 pub fn QueryInformationJobObject(hjob: super::super::Foundation::HANDLE, jobobjectinformationclass: JOBOBJECTINFOCLASS, lpjobobjectinformation: *mut ::core::ffi::c_void, cbjobobjectinformationlength: u32, lpreturnlength: *mut u32) -> super::super::Foundation::BOOL; 21 #[cfg(feature = "Win32_Foundation")] QueryIoRateControlInformationJobObject(hjob: super::super::Foundation::HANDLE, volumename: super::super::Foundation::PWSTR, infoblocks: *mut *mut JOBOBJECT_IO_RATE_CONTROL_INFORMATION, infoblockcount: *mut u32) -> u3222 pub fn QueryIoRateControlInformationJobObject(hjob: super::super::Foundation::HANDLE, volumename: super::super::Foundation::PWSTR, infoblocks: *mut *mut JOBOBJECT_IO_RATE_CONTROL_INFORMATION, infoblockcount: *mut u32) -> u32; 23 #[cfg(feature = "Win32_Foundation")] SetInformationJobObject(hjob: super::super::Foundation::HANDLE, jobobjectinformationclass: JOBOBJECTINFOCLASS, lpjobobjectinformation: *const ::core::ffi::c_void, cbjobobjectinformationlength: u32) -> super::super::Foundation::BOOL24 pub fn SetInformationJobObject(hjob: super::super::Foundation::HANDLE, jobobjectinformationclass: JOBOBJECTINFOCLASS, lpjobobjectinformation: *const ::core::ffi::c_void, cbjobobjectinformationlength: u32) -> super::super::Foundation::BOOL; 25 #[cfg(feature = "Win32_Foundation")] SetIoRateControlInformationJobObject(hjob: super::super::Foundation::HANDLE, ioratecontrolinfo: *const JOBOBJECT_IO_RATE_CONTROL_INFORMATION) -> u3226 pub fn SetIoRateControlInformationJobObject(hjob: super::super::Foundation::HANDLE, ioratecontrolinfo: *const JOBOBJECT_IO_RATE_CONTROL_INFORMATION) -> u32; 27 #[cfg(feature = "Win32_Foundation")] TerminateJobObject(hjob: super::super::Foundation::HANDLE, uexitcode: u32) -> super::super::Foundation::BOOL28 pub fn TerminateJobObject(hjob: super::super::Foundation::HANDLE, uexitcode: u32) -> super::super::Foundation::BOOL; 29 #[cfg(feature = "Win32_Foundation")] UserHandleGrantAccess(huserhandle: super::super::Foundation::HANDLE, hjob: super::super::Foundation::HANDLE, bgrant: super::super::Foundation::BOOL) -> super::super::Foundation::BOOL30 pub fn UserHandleGrantAccess(huserhandle: super::super::Foundation::HANDLE, hjob: super::super::Foundation::HANDLE, bgrant: super::super::Foundation::BOOL) -> super::super::Foundation::BOOL; 31 } 32 pub type JOBOBJECTINFOCLASS = i32; 33 pub const JobObjectBasicAccountingInformation: JOBOBJECTINFOCLASS = 1i32; 34 pub const JobObjectBasicLimitInformation: JOBOBJECTINFOCLASS = 2i32; 35 pub const JobObjectBasicProcessIdList: JOBOBJECTINFOCLASS = 3i32; 36 pub const JobObjectBasicUIRestrictions: JOBOBJECTINFOCLASS = 4i32; 37 pub const JobObjectSecurityLimitInformation: JOBOBJECTINFOCLASS = 5i32; 38 pub const JobObjectEndOfJobTimeInformation: JOBOBJECTINFOCLASS = 6i32; 39 pub const JobObjectAssociateCompletionPortInformation: JOBOBJECTINFOCLASS = 7i32; 40 pub const JobObjectBasicAndIoAccountingInformation: JOBOBJECTINFOCLASS = 8i32; 41 pub const JobObjectExtendedLimitInformation: JOBOBJECTINFOCLASS = 9i32; 42 pub const JobObjectJobSetInformation: JOBOBJECTINFOCLASS = 10i32; 43 pub const JobObjectGroupInformation: JOBOBJECTINFOCLASS = 11i32; 44 pub const JobObjectNotificationLimitInformation: JOBOBJECTINFOCLASS = 12i32; 45 pub const JobObjectLimitViolationInformation: JOBOBJECTINFOCLASS = 13i32; 46 pub const JobObjectGroupInformationEx: JOBOBJECTINFOCLASS = 14i32; 47 pub const JobObjectCpuRateControlInformation: JOBOBJECTINFOCLASS = 15i32; 48 pub const JobObjectCompletionFilter: JOBOBJECTINFOCLASS = 16i32; 49 pub const JobObjectCompletionCounter: JOBOBJECTINFOCLASS = 17i32; 50 pub const JobObjectReserved1Information: JOBOBJECTINFOCLASS = 18i32; 51 pub const JobObjectReserved2Information: JOBOBJECTINFOCLASS = 19i32; 52 pub const JobObjectReserved3Information: JOBOBJECTINFOCLASS = 20i32; 53 pub const JobObjectReserved4Information: JOBOBJECTINFOCLASS = 21i32; 54 pub const JobObjectReserved5Information: JOBOBJECTINFOCLASS = 22i32; 55 pub const JobObjectReserved6Information: JOBOBJECTINFOCLASS = 23i32; 56 pub const JobObjectReserved7Information: JOBOBJECTINFOCLASS = 24i32; 57 pub const JobObjectReserved8Information: JOBOBJECTINFOCLASS = 25i32; 58 pub const JobObjectReserved9Information: JOBOBJECTINFOCLASS = 26i32; 59 pub const JobObjectReserved10Information: JOBOBJECTINFOCLASS = 27i32; 60 pub const JobObjectReserved11Information: JOBOBJECTINFOCLASS = 28i32; 61 pub const JobObjectReserved12Information: JOBOBJECTINFOCLASS = 29i32; 62 pub const JobObjectReserved13Information: JOBOBJECTINFOCLASS = 30i32; 63 pub const JobObjectReserved14Information: JOBOBJECTINFOCLASS = 31i32; 64 pub const JobObjectNetRateControlInformation: JOBOBJECTINFOCLASS = 32i32; 65 pub const JobObjectNotificationLimitInformation2: JOBOBJECTINFOCLASS = 33i32; 66 pub const JobObjectLimitViolationInformation2: JOBOBJECTINFOCLASS = 34i32; 67 pub const JobObjectCreateSilo: JOBOBJECTINFOCLASS = 35i32; 68 pub const JobObjectSiloBasicInformation: JOBOBJECTINFOCLASS = 36i32; 69 pub const JobObjectReserved15Information: JOBOBJECTINFOCLASS = 37i32; 70 pub const JobObjectReserved16Information: JOBOBJECTINFOCLASS = 38i32; 71 pub const JobObjectReserved17Information: JOBOBJECTINFOCLASS = 39i32; 72 pub const JobObjectReserved18Information: JOBOBJECTINFOCLASS = 40i32; 73 pub const JobObjectReserved19Information: JOBOBJECTINFOCLASS = 41i32; 74 pub const JobObjectReserved20Information: JOBOBJECTINFOCLASS = 42i32; 75 pub const JobObjectReserved21Information: JOBOBJECTINFOCLASS = 43i32; 76 pub const JobObjectReserved22Information: JOBOBJECTINFOCLASS = 44i32; 77 pub const JobObjectReserved23Information: JOBOBJECTINFOCLASS = 45i32; 78 pub const JobObjectReserved24Information: JOBOBJECTINFOCLASS = 46i32; 79 pub const JobObjectReserved25Information: JOBOBJECTINFOCLASS = 47i32; 80 pub const MaxJobObjectInfoClass: JOBOBJECTINFOCLASS = 48i32; 81 #[repr(C)] 82 #[cfg(feature = "Win32_Foundation")] 83 pub struct JOBOBJECT_ASSOCIATE_COMPLETION_PORT { 84 pub CompletionKey: *mut ::core::ffi::c_void, 85 pub CompletionPort: super::super::Foundation::HANDLE, 86 } 87 #[cfg(feature = "Win32_Foundation")] 88 impl ::core::marker::Copy for JOBOBJECT_ASSOCIATE_COMPLETION_PORT {} 89 #[cfg(feature = "Win32_Foundation")] 90 impl ::core::clone::Clone for JOBOBJECT_ASSOCIATE_COMPLETION_PORT { clone(&self) -> Self91 fn clone(&self) -> Self { 92 *self 93 } 94 } 95 #[repr(C)] 96 pub struct JOBOBJECT_BASIC_ACCOUNTING_INFORMATION { 97 pub TotalUserTime: i64, 98 pub TotalKernelTime: i64, 99 pub ThisPeriodTotalUserTime: i64, 100 pub ThisPeriodTotalKernelTime: i64, 101 pub TotalPageFaultCount: u32, 102 pub TotalProcesses: u32, 103 pub ActiveProcesses: u32, 104 pub TotalTerminatedProcesses: u32, 105 } 106 impl ::core::marker::Copy for JOBOBJECT_BASIC_ACCOUNTING_INFORMATION {} 107 impl ::core::clone::Clone for JOBOBJECT_BASIC_ACCOUNTING_INFORMATION { clone(&self) -> Self108 fn clone(&self) -> Self { 109 *self 110 } 111 } 112 #[repr(C)] 113 #[cfg(feature = "Win32_System_Threading")] 114 pub struct JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION { 115 pub BasicInfo: JOBOBJECT_BASIC_ACCOUNTING_INFORMATION, 116 pub IoInfo: super::Threading::IO_COUNTERS, 117 } 118 #[cfg(feature = "Win32_System_Threading")] 119 impl ::core::marker::Copy for JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION {} 120 #[cfg(feature = "Win32_System_Threading")] 121 impl ::core::clone::Clone for JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION { clone(&self) -> Self122 fn clone(&self) -> Self { 123 *self 124 } 125 } 126 #[repr(C)] 127 pub struct JOBOBJECT_BASIC_LIMIT_INFORMATION { 128 pub PerProcessUserTimeLimit: i64, 129 pub PerJobUserTimeLimit: i64, 130 pub LimitFlags: JOB_OBJECT_LIMIT, 131 pub MinimumWorkingSetSize: usize, 132 pub MaximumWorkingSetSize: usize, 133 pub ActiveProcessLimit: u32, 134 pub Affinity: usize, 135 pub PriorityClass: u32, 136 pub SchedulingClass: u32, 137 } 138 impl ::core::marker::Copy for JOBOBJECT_BASIC_LIMIT_INFORMATION {} 139 impl ::core::clone::Clone for JOBOBJECT_BASIC_LIMIT_INFORMATION { clone(&self) -> Self140 fn clone(&self) -> Self { 141 *self 142 } 143 } 144 #[repr(C)] 145 pub struct JOBOBJECT_BASIC_PROCESS_ID_LIST { 146 pub NumberOfAssignedProcesses: u32, 147 pub NumberOfProcessIdsInList: u32, 148 pub ProcessIdList: [usize; 1], 149 } 150 impl ::core::marker::Copy for JOBOBJECT_BASIC_PROCESS_ID_LIST {} 151 impl ::core::clone::Clone for JOBOBJECT_BASIC_PROCESS_ID_LIST { clone(&self) -> Self152 fn clone(&self) -> Self { 153 *self 154 } 155 } 156 #[repr(C)] 157 pub struct JOBOBJECT_BASIC_UI_RESTRICTIONS { 158 pub UIRestrictionsClass: JOB_OBJECT_UILIMIT, 159 } 160 impl ::core::marker::Copy for JOBOBJECT_BASIC_UI_RESTRICTIONS {} 161 impl ::core::clone::Clone for JOBOBJECT_BASIC_UI_RESTRICTIONS { clone(&self) -> Self162 fn clone(&self) -> Self { 163 *self 164 } 165 } 166 #[repr(C)] 167 pub struct JOBOBJECT_CPU_RATE_CONTROL_INFORMATION { 168 pub ControlFlags: JOB_OBJECT_CPU_RATE_CONTROL, 169 pub Anonymous: JOBOBJECT_CPU_RATE_CONTROL_INFORMATION_0, 170 } 171 impl ::core::marker::Copy for JOBOBJECT_CPU_RATE_CONTROL_INFORMATION {} 172 impl ::core::clone::Clone for JOBOBJECT_CPU_RATE_CONTROL_INFORMATION { clone(&self) -> Self173 fn clone(&self) -> Self { 174 *self 175 } 176 } 177 #[repr(C)] 178 pub union JOBOBJECT_CPU_RATE_CONTROL_INFORMATION_0 { 179 pub CpuRate: u32, 180 pub Weight: u32, 181 pub Anonymous: JOBOBJECT_CPU_RATE_CONTROL_INFORMATION_0_0, 182 } 183 impl ::core::marker::Copy for JOBOBJECT_CPU_RATE_CONTROL_INFORMATION_0 {} 184 impl ::core::clone::Clone for JOBOBJECT_CPU_RATE_CONTROL_INFORMATION_0 { clone(&self) -> Self185 fn clone(&self) -> Self { 186 *self 187 } 188 } 189 #[repr(C)] 190 pub struct JOBOBJECT_CPU_RATE_CONTROL_INFORMATION_0_0 { 191 pub MinRate: u16, 192 pub MaxRate: u16, 193 } 194 impl ::core::marker::Copy for JOBOBJECT_CPU_RATE_CONTROL_INFORMATION_0_0 {} 195 impl ::core::clone::Clone for JOBOBJECT_CPU_RATE_CONTROL_INFORMATION_0_0 { clone(&self) -> Self196 fn clone(&self) -> Self { 197 *self 198 } 199 } 200 #[repr(C)] 201 pub struct JOBOBJECT_END_OF_JOB_TIME_INFORMATION { 202 pub EndOfJobTimeAction: JOB_OBJECT_TERMINATE_AT_END_ACTION, 203 } 204 impl ::core::marker::Copy for JOBOBJECT_END_OF_JOB_TIME_INFORMATION {} 205 impl ::core::clone::Clone for JOBOBJECT_END_OF_JOB_TIME_INFORMATION { clone(&self) -> Self206 fn clone(&self) -> Self { 207 *self 208 } 209 } 210 #[repr(C)] 211 #[cfg(feature = "Win32_System_Threading")] 212 pub struct JOBOBJECT_EXTENDED_LIMIT_INFORMATION { 213 pub BasicLimitInformation: JOBOBJECT_BASIC_LIMIT_INFORMATION, 214 pub IoInfo: super::Threading::IO_COUNTERS, 215 pub ProcessMemoryLimit: usize, 216 pub JobMemoryLimit: usize, 217 pub PeakProcessMemoryUsed: usize, 218 pub PeakJobMemoryUsed: usize, 219 } 220 #[cfg(feature = "Win32_System_Threading")] 221 impl ::core::marker::Copy for JOBOBJECT_EXTENDED_LIMIT_INFORMATION {} 222 #[cfg(feature = "Win32_System_Threading")] 223 impl ::core::clone::Clone for JOBOBJECT_EXTENDED_LIMIT_INFORMATION { clone(&self) -> Self224 fn clone(&self) -> Self { 225 *self 226 } 227 } 228 pub type JOBOBJECT_IO_ATTRIBUTION_CONTROL_FLAGS = i32; 229 pub const JOBOBJECT_IO_ATTRIBUTION_CONTROL_ENABLE: JOBOBJECT_IO_ATTRIBUTION_CONTROL_FLAGS = 1i32; 230 pub const JOBOBJECT_IO_ATTRIBUTION_CONTROL_DISABLE: JOBOBJECT_IO_ATTRIBUTION_CONTROL_FLAGS = 2i32; 231 pub const JOBOBJECT_IO_ATTRIBUTION_CONTROL_VALID_FLAGS: JOBOBJECT_IO_ATTRIBUTION_CONTROL_FLAGS = 3i32; 232 #[repr(C)] 233 pub struct JOBOBJECT_IO_ATTRIBUTION_INFORMATION { 234 pub ControlFlags: u32, 235 pub ReadStats: JOBOBJECT_IO_ATTRIBUTION_STATS, 236 pub WriteStats: JOBOBJECT_IO_ATTRIBUTION_STATS, 237 } 238 impl ::core::marker::Copy for JOBOBJECT_IO_ATTRIBUTION_INFORMATION {} 239 impl ::core::clone::Clone for JOBOBJECT_IO_ATTRIBUTION_INFORMATION { clone(&self) -> Self240 fn clone(&self) -> Self { 241 *self 242 } 243 } 244 #[repr(C)] 245 pub struct JOBOBJECT_IO_ATTRIBUTION_STATS { 246 pub IoCount: usize, 247 pub TotalNonOverlappedQueueTime: u64, 248 pub TotalNonOverlappedServiceTime: u64, 249 pub TotalSize: u64, 250 } 251 impl ::core::marker::Copy for JOBOBJECT_IO_ATTRIBUTION_STATS {} 252 impl ::core::clone::Clone for JOBOBJECT_IO_ATTRIBUTION_STATS { clone(&self) -> Self253 fn clone(&self) -> Self { 254 *self 255 } 256 } 257 #[repr(C)] 258 #[cfg(feature = "Win32_Foundation")] 259 pub struct JOBOBJECT_IO_RATE_CONTROL_INFORMATION { 260 pub MaxIops: i64, 261 pub MaxBandwidth: i64, 262 pub ReservationIops: i64, 263 pub VolumeName: super::super::Foundation::PWSTR, 264 pub BaseIoSize: u32, 265 pub ControlFlags: JOB_OBJECT_IO_RATE_CONTROL_FLAGS, 266 } 267 #[cfg(feature = "Win32_Foundation")] 268 impl ::core::marker::Copy for JOBOBJECT_IO_RATE_CONTROL_INFORMATION {} 269 #[cfg(feature = "Win32_Foundation")] 270 impl ::core::clone::Clone for JOBOBJECT_IO_RATE_CONTROL_INFORMATION { clone(&self) -> Self271 fn clone(&self) -> Self { 272 *self 273 } 274 } 275 #[repr(C)] 276 #[cfg(feature = "Win32_Foundation")] 277 pub struct JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE { 278 pub MaxIops: i64, 279 pub MaxBandwidth: i64, 280 pub ReservationIops: i64, 281 pub VolumeName: super::super::Foundation::PWSTR, 282 pub BaseIoSize: u32, 283 pub ControlFlags: JOB_OBJECT_IO_RATE_CONTROL_FLAGS, 284 pub VolumeNameLength: u16, 285 } 286 #[cfg(feature = "Win32_Foundation")] 287 impl ::core::marker::Copy for JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE {} 288 #[cfg(feature = "Win32_Foundation")] 289 impl ::core::clone::Clone for JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE { clone(&self) -> Self290 fn clone(&self) -> Self { 291 *self 292 } 293 } 294 #[repr(C)] 295 #[cfg(feature = "Win32_Foundation")] 296 pub struct JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V2 { 297 pub MaxIops: i64, 298 pub MaxBandwidth: i64, 299 pub ReservationIops: i64, 300 pub VolumeName: super::super::Foundation::PWSTR, 301 pub BaseIoSize: u32, 302 pub ControlFlags: JOB_OBJECT_IO_RATE_CONTROL_FLAGS, 303 pub VolumeNameLength: u16, 304 pub CriticalReservationIops: i64, 305 pub ReservationBandwidth: i64, 306 pub CriticalReservationBandwidth: i64, 307 pub MaxTimePercent: i64, 308 pub ReservationTimePercent: i64, 309 pub CriticalReservationTimePercent: i64, 310 } 311 #[cfg(feature = "Win32_Foundation")] 312 impl ::core::marker::Copy for JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V2 {} 313 #[cfg(feature = "Win32_Foundation")] 314 impl ::core::clone::Clone for JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V2 { clone(&self) -> Self315 fn clone(&self) -> Self { 316 *self 317 } 318 } 319 #[repr(C)] 320 #[cfg(feature = "Win32_Foundation")] 321 pub struct JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V3 { 322 pub MaxIops: i64, 323 pub MaxBandwidth: i64, 324 pub ReservationIops: i64, 325 pub VolumeName: super::super::Foundation::PWSTR, 326 pub BaseIoSize: u32, 327 pub ControlFlags: JOB_OBJECT_IO_RATE_CONTROL_FLAGS, 328 pub VolumeNameLength: u16, 329 pub CriticalReservationIops: i64, 330 pub ReservationBandwidth: i64, 331 pub CriticalReservationBandwidth: i64, 332 pub MaxTimePercent: i64, 333 pub ReservationTimePercent: i64, 334 pub CriticalReservationTimePercent: i64, 335 pub SoftMaxIops: i64, 336 pub SoftMaxBandwidth: i64, 337 pub SoftMaxTimePercent: i64, 338 pub LimitExcessNotifyIops: i64, 339 pub LimitExcessNotifyBandwidth: i64, 340 pub LimitExcessNotifyTimePercent: i64, 341 } 342 #[cfg(feature = "Win32_Foundation")] 343 impl ::core::marker::Copy for JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V3 {} 344 #[cfg(feature = "Win32_Foundation")] 345 impl ::core::clone::Clone for JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V3 { clone(&self) -> Self346 fn clone(&self) -> Self { 347 *self 348 } 349 } 350 #[repr(C)] 351 pub struct JOBOBJECT_JOBSET_INFORMATION { 352 pub MemberLevel: u32, 353 } 354 impl ::core::marker::Copy for JOBOBJECT_JOBSET_INFORMATION {} 355 impl ::core::clone::Clone for JOBOBJECT_JOBSET_INFORMATION { clone(&self) -> Self356 fn clone(&self) -> Self { 357 *self 358 } 359 } 360 #[repr(C)] 361 pub struct JOBOBJECT_LIMIT_VIOLATION_INFORMATION { 362 pub LimitFlags: JOB_OBJECT_LIMIT, 363 pub ViolationLimitFlags: JOB_OBJECT_LIMIT, 364 pub IoReadBytes: u64, 365 pub IoReadBytesLimit: u64, 366 pub IoWriteBytes: u64, 367 pub IoWriteBytesLimit: u64, 368 pub PerJobUserTime: i64, 369 pub PerJobUserTimeLimit: i64, 370 pub JobMemory: u64, 371 pub JobMemoryLimit: u64, 372 pub RateControlTolerance: JOBOBJECT_RATE_CONTROL_TOLERANCE, 373 pub RateControlToleranceLimit: JOBOBJECT_RATE_CONTROL_TOLERANCE, 374 } 375 impl ::core::marker::Copy for JOBOBJECT_LIMIT_VIOLATION_INFORMATION {} 376 impl ::core::clone::Clone for JOBOBJECT_LIMIT_VIOLATION_INFORMATION { clone(&self) -> Self377 fn clone(&self) -> Self { 378 *self 379 } 380 } 381 #[repr(C)] 382 pub struct JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2 { 383 pub LimitFlags: JOB_OBJECT_LIMIT, 384 pub ViolationLimitFlags: JOB_OBJECT_LIMIT, 385 pub IoReadBytes: u64, 386 pub IoReadBytesLimit: u64, 387 pub IoWriteBytes: u64, 388 pub IoWriteBytesLimit: u64, 389 pub PerJobUserTime: i64, 390 pub PerJobUserTimeLimit: i64, 391 pub JobMemory: u64, 392 pub Anonymous1: JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2_0, 393 pub Anonymous2: JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2_1, 394 pub Anonymous3: JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2_2, 395 pub JobLowMemoryLimit: u64, 396 pub IoRateControlTolerance: JOBOBJECT_RATE_CONTROL_TOLERANCE, 397 pub IoRateControlToleranceLimit: JOBOBJECT_RATE_CONTROL_TOLERANCE, 398 pub NetRateControlTolerance: JOBOBJECT_RATE_CONTROL_TOLERANCE, 399 pub NetRateControlToleranceLimit: JOBOBJECT_RATE_CONTROL_TOLERANCE, 400 } 401 impl ::core::marker::Copy for JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2 {} 402 impl ::core::clone::Clone for JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2 { clone(&self) -> Self403 fn clone(&self) -> Self { 404 *self 405 } 406 } 407 #[repr(C)] 408 pub union JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2_0 { 409 pub JobHighMemoryLimit: u64, 410 pub JobMemoryLimit: u64, 411 } 412 impl ::core::marker::Copy for JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2_0 {} 413 impl ::core::clone::Clone for JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2_0 { clone(&self) -> Self414 fn clone(&self) -> Self { 415 *self 416 } 417 } 418 #[repr(C)] 419 pub union JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2_1 { 420 pub RateControlTolerance: JOBOBJECT_RATE_CONTROL_TOLERANCE, 421 pub CpuRateControlTolerance: JOBOBJECT_RATE_CONTROL_TOLERANCE, 422 } 423 impl ::core::marker::Copy for JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2_1 {} 424 impl ::core::clone::Clone for JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2_1 { clone(&self) -> Self425 fn clone(&self) -> Self { 426 *self 427 } 428 } 429 #[repr(C)] 430 pub union JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2_2 { 431 pub RateControlToleranceLimit: JOBOBJECT_RATE_CONTROL_TOLERANCE, 432 pub CpuRateControlToleranceLimit: JOBOBJECT_RATE_CONTROL_TOLERANCE, 433 } 434 impl ::core::marker::Copy for JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2_2 {} 435 impl ::core::clone::Clone for JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2_2 { clone(&self) -> Self436 fn clone(&self) -> Self { 437 *self 438 } 439 } 440 #[repr(C)] 441 pub struct JOBOBJECT_NET_RATE_CONTROL_INFORMATION { 442 pub MaxBandwidth: u64, 443 pub ControlFlags: JOB_OBJECT_NET_RATE_CONTROL_FLAGS, 444 pub DscpTag: u8, 445 } 446 impl ::core::marker::Copy for JOBOBJECT_NET_RATE_CONTROL_INFORMATION {} 447 impl ::core::clone::Clone for JOBOBJECT_NET_RATE_CONTROL_INFORMATION { clone(&self) -> Self448 fn clone(&self) -> Self { 449 *self 450 } 451 } 452 #[repr(C)] 453 pub struct JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION { 454 pub IoReadBytesLimit: u64, 455 pub IoWriteBytesLimit: u64, 456 pub PerJobUserTimeLimit: i64, 457 pub JobMemoryLimit: u64, 458 pub RateControlTolerance: JOBOBJECT_RATE_CONTROL_TOLERANCE, 459 pub RateControlToleranceInterval: JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL, 460 pub LimitFlags: JOB_OBJECT_LIMIT, 461 } 462 impl ::core::marker::Copy for JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION {} 463 impl ::core::clone::Clone for JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION { clone(&self) -> Self464 fn clone(&self) -> Self { 465 *self 466 } 467 } 468 #[repr(C)] 469 pub struct JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 { 470 pub IoReadBytesLimit: u64, 471 pub IoWriteBytesLimit: u64, 472 pub PerJobUserTimeLimit: i64, 473 pub Anonymous1: JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2_0, 474 pub Anonymous2: JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2_1, 475 pub Anonymous3: JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2_2, 476 pub LimitFlags: JOB_OBJECT_LIMIT, 477 pub IoRateControlTolerance: JOBOBJECT_RATE_CONTROL_TOLERANCE, 478 pub JobLowMemoryLimit: u64, 479 pub IoRateControlToleranceInterval: JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL, 480 pub NetRateControlTolerance: JOBOBJECT_RATE_CONTROL_TOLERANCE, 481 pub NetRateControlToleranceInterval: JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL, 482 } 483 impl ::core::marker::Copy for JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 {} 484 impl ::core::clone::Clone for JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 { clone(&self) -> Self485 fn clone(&self) -> Self { 486 *self 487 } 488 } 489 #[repr(C)] 490 pub union JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2_0 { 491 pub JobHighMemoryLimit: u64, 492 pub JobMemoryLimit: u64, 493 } 494 impl ::core::marker::Copy for JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2_0 {} 495 impl ::core::clone::Clone for JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2_0 { clone(&self) -> Self496 fn clone(&self) -> Self { 497 *self 498 } 499 } 500 #[repr(C)] 501 pub union JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2_1 { 502 pub RateControlTolerance: JOBOBJECT_RATE_CONTROL_TOLERANCE, 503 pub CpuRateControlTolerance: JOBOBJECT_RATE_CONTROL_TOLERANCE, 504 } 505 impl ::core::marker::Copy for JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2_1 {} 506 impl ::core::clone::Clone for JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2_1 { clone(&self) -> Self507 fn clone(&self) -> Self { 508 *self 509 } 510 } 511 #[repr(C)] 512 pub union JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2_2 { 513 pub RateControlToleranceInterval: JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL, 514 pub CpuRateControlToleranceInterval: JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL, 515 } 516 impl ::core::marker::Copy for JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2_2 {} 517 impl ::core::clone::Clone for JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2_2 { clone(&self) -> Self518 fn clone(&self) -> Self { 519 *self 520 } 521 } 522 pub type JOBOBJECT_RATE_CONTROL_TOLERANCE = i32; 523 pub const ToleranceLow: JOBOBJECT_RATE_CONTROL_TOLERANCE = 1i32; 524 pub const ToleranceMedium: JOBOBJECT_RATE_CONTROL_TOLERANCE = 2i32; 525 pub const ToleranceHigh: JOBOBJECT_RATE_CONTROL_TOLERANCE = 3i32; 526 pub type JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL = i32; 527 pub const ToleranceIntervalShort: JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL = 1i32; 528 pub const ToleranceIntervalMedium: JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL = 2i32; 529 pub const ToleranceIntervalLong: JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL = 3i32; 530 #[repr(C)] 531 #[cfg(all(feature = "Win32_Foundation", feature = "Win32_Security"))] 532 pub struct JOBOBJECT_SECURITY_LIMIT_INFORMATION { 533 pub SecurityLimitFlags: JOB_OBJECT_SECURITY, 534 pub JobToken: super::super::Foundation::HANDLE, 535 pub SidsToDisable: *mut super::super::Security::TOKEN_GROUPS, 536 pub PrivilegesToDelete: *mut super::super::Security::TOKEN_PRIVILEGES, 537 pub RestrictedSids: *mut super::super::Security::TOKEN_GROUPS, 538 } 539 #[cfg(all(feature = "Win32_Foundation", feature = "Win32_Security"))] 540 impl ::core::marker::Copy for JOBOBJECT_SECURITY_LIMIT_INFORMATION {} 541 #[cfg(all(feature = "Win32_Foundation", feature = "Win32_Security"))] 542 impl ::core::clone::Clone for JOBOBJECT_SECURITY_LIMIT_INFORMATION { clone(&self) -> Self543 fn clone(&self) -> Self { 544 *self 545 } 546 } 547 pub type JOB_OBJECT_CPU_RATE_CONTROL = u32; 548 pub const JOB_OBJECT_CPU_RATE_CONTROL_ENABLE: JOB_OBJECT_CPU_RATE_CONTROL = 1u32; 549 pub const JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED: JOB_OBJECT_CPU_RATE_CONTROL = 2u32; 550 pub const JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP: JOB_OBJECT_CPU_RATE_CONTROL = 4u32; 551 pub const JOB_OBJECT_CPU_RATE_CONTROL_NOTIFY: JOB_OBJECT_CPU_RATE_CONTROL = 8u32; 552 pub const JOB_OBJECT__CPU_RATE_CONTROL_MIN_MAX_RATE: JOB_OBJECT_CPU_RATE_CONTROL = 16u32; 553 pub type JOB_OBJECT_IO_RATE_CONTROL_FLAGS = i32; 554 pub const JOB_OBJECT_IO_RATE_CONTROL_ENABLE: JOB_OBJECT_IO_RATE_CONTROL_FLAGS = 1i32; 555 pub const JOB_OBJECT_IO_RATE_CONTROL_STANDALONE_VOLUME: JOB_OBJECT_IO_RATE_CONTROL_FLAGS = 2i32; 556 pub const JOB_OBJECT_IO_RATE_CONTROL_FORCE_UNIT_ACCESS_ALL: JOB_OBJECT_IO_RATE_CONTROL_FLAGS = 4i32; 557 pub const JOB_OBJECT_IO_RATE_CONTROL_FORCE_UNIT_ACCESS_ON_SOFT_CAP: JOB_OBJECT_IO_RATE_CONTROL_FLAGS = 8i32; 558 pub const JOB_OBJECT_IO_RATE_CONTROL_VALID_FLAGS: JOB_OBJECT_IO_RATE_CONTROL_FLAGS = 15i32; 559 pub type JOB_OBJECT_LIMIT = u32; 560 pub const JOB_OBJECT_LIMIT_WORKINGSET: JOB_OBJECT_LIMIT = 1u32; 561 pub const JOB_OBJECT_LIMIT_PROCESS_TIME: JOB_OBJECT_LIMIT = 2u32; 562 pub const JOB_OBJECT_LIMIT_JOB_TIME: JOB_OBJECT_LIMIT = 4u32; 563 pub const JOB_OBJECT_LIMIT_ACTIVE_PROCESS: JOB_OBJECT_LIMIT = 8u32; 564 pub const JOB_OBJECT_LIMIT_AFFINITY: JOB_OBJECT_LIMIT = 16u32; 565 pub const JOB_OBJECT_LIMIT_PRIORITY_CLASS: JOB_OBJECT_LIMIT = 32u32; 566 pub const JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME: JOB_OBJECT_LIMIT = 64u32; 567 pub const JOB_OBJECT_LIMIT_SCHEDULING_CLASS: JOB_OBJECT_LIMIT = 128u32; 568 pub const JOB_OBJECT_LIMIT_PROCESS_MEMORY: JOB_OBJECT_LIMIT = 256u32; 569 pub const JOB_OBJECT_LIMIT_JOB_MEMORY: JOB_OBJECT_LIMIT = 512u32; 570 pub const JOB_OBJECT_LIMIT_JOB_MEMORY_HIGH: JOB_OBJECT_LIMIT = 512u32; 571 pub const JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION: JOB_OBJECT_LIMIT = 1024u32; 572 pub const JOB_OBJECT_LIMIT_BREAKAWAY_OK: JOB_OBJECT_LIMIT = 2048u32; 573 pub const JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK: JOB_OBJECT_LIMIT = 4096u32; 574 pub const JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE: JOB_OBJECT_LIMIT = 8192u32; 575 pub const JOB_OBJECT_LIMIT_SUBSET_AFFINITY: JOB_OBJECT_LIMIT = 16384u32; 576 pub const JOB_OBJECT_LIMIT_JOB_MEMORY_LOW: JOB_OBJECT_LIMIT = 32768u32; 577 pub const JOB_OBJECT_LIMIT_JOB_READ_BYTES: JOB_OBJECT_LIMIT = 65536u32; 578 pub const JOB_OBJECT_LIMIT_JOB_WRITE_BYTES: JOB_OBJECT_LIMIT = 131072u32; 579 pub const JOB_OBJECT_LIMIT_RATE_CONTROL: JOB_OBJECT_LIMIT = 262144u32; 580 pub const JOB_OBJECT_LIMIT_CPU_RATE_CONTROL: JOB_OBJECT_LIMIT = 262144u32; 581 pub const JOB_OBJECT_LIMIT_IO_RATE_CONTROL: JOB_OBJECT_LIMIT = 524288u32; 582 pub const JOB_OBJECT_LIMIT_NET_RATE_CONTROL: JOB_OBJECT_LIMIT = 1048576u32; 583 pub const JOB_OBJECT_LIMIT_VALID_FLAGS: JOB_OBJECT_LIMIT = 524287u32; 584 pub const JOB_OBJECT_BASIC_LIMIT_VALID_FLAGS: JOB_OBJECT_LIMIT = 255u32; 585 pub const JOB_OBJECT_EXTENDED_LIMIT_VALID_FLAGS: JOB_OBJECT_LIMIT = 32767u32; 586 pub const JOB_OBJECT_NOTIFICATION_LIMIT_VALID_FLAGS: JOB_OBJECT_LIMIT = 2064900u32; 587 pub type JOB_OBJECT_NET_RATE_CONTROL_FLAGS = i32; 588 pub const JOB_OBJECT_NET_RATE_CONTROL_ENABLE: JOB_OBJECT_NET_RATE_CONTROL_FLAGS = 1i32; 589 pub const JOB_OBJECT_NET_RATE_CONTROL_MAX_BANDWIDTH: JOB_OBJECT_NET_RATE_CONTROL_FLAGS = 2i32; 590 pub const JOB_OBJECT_NET_RATE_CONTROL_DSCP_TAG: JOB_OBJECT_NET_RATE_CONTROL_FLAGS = 4i32; 591 pub const JOB_OBJECT_NET_RATE_CONTROL_VALID_FLAGS: JOB_OBJECT_NET_RATE_CONTROL_FLAGS = 7i32; 592 pub type JOB_OBJECT_SECURITY = u32; 593 pub const JOB_OBJECT_SECURITY_NO_ADMIN: JOB_OBJECT_SECURITY = 1u32; 594 pub const JOB_OBJECT_SECURITY_RESTRICTED_TOKEN: JOB_OBJECT_SECURITY = 2u32; 595 pub const JOB_OBJECT_SECURITY_ONLY_TOKEN: JOB_OBJECT_SECURITY = 4u32; 596 pub const JOB_OBJECT_SECURITY_FILTER_TOKENS: JOB_OBJECT_SECURITY = 8u32; 597 pub const JOB_OBJECT_SECURITY_VALID_FLAGS: JOB_OBJECT_SECURITY = 15u32; 598 pub type JOB_OBJECT_TERMINATE_AT_END_ACTION = u32; 599 pub const JOB_OBJECT_TERMINATE_AT_END_OF_JOB: JOB_OBJECT_TERMINATE_AT_END_ACTION = 0u32; 600 pub const JOB_OBJECT_POST_AT_END_OF_JOB: JOB_OBJECT_TERMINATE_AT_END_ACTION = 1u32; 601 pub type JOB_OBJECT_UILIMIT = u32; 602 pub const JOB_OBJECT_UILIMIT_NONE: JOB_OBJECT_UILIMIT = 0u32; 603 pub const JOB_OBJECT_UILIMIT_HANDLES: JOB_OBJECT_UILIMIT = 1u32; 604 pub const JOB_OBJECT_UILIMIT_READCLIPBOARD: JOB_OBJECT_UILIMIT = 2u32; 605 pub const JOB_OBJECT_UILIMIT_WRITECLIPBOARD: JOB_OBJECT_UILIMIT = 4u32; 606 pub const JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS: JOB_OBJECT_UILIMIT = 8u32; 607 pub const JOB_OBJECT_UILIMIT_DISPLAYSETTINGS: JOB_OBJECT_UILIMIT = 16u32; 608 pub const JOB_OBJECT_UILIMIT_GLOBALATOMS: JOB_OBJECT_UILIMIT = 32u32; 609 pub const JOB_OBJECT_UILIMIT_DESKTOP: JOB_OBJECT_UILIMIT = 64u32; 610 pub const JOB_OBJECT_UILIMIT_EXITWINDOWS: JOB_OBJECT_UILIMIT = 128u32; 611 #[repr(C)] 612 #[cfg(feature = "Win32_Foundation")] 613 pub struct JOB_SET_ARRAY { 614 pub JobHandle: super::super::Foundation::HANDLE, 615 pub MemberLevel: u32, 616 pub Flags: u32, 617 } 618 #[cfg(feature = "Win32_Foundation")] 619 impl ::core::marker::Copy for JOB_SET_ARRAY {} 620 #[cfg(feature = "Win32_Foundation")] 621 impl ::core::clone::Clone for JOB_SET_ARRAY { clone(&self) -> Self622 fn clone(&self) -> Self { 623 *self 624 } 625 } 626