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