]> git.proxmox.com Git - rustc.git/blob - vendor/windows-sys-0.28.0/src/Windows/Win32/Storage/IscsiDisc/mod.rs
New upstream version 1.66.0+dfsg1
[rustc.git] / vendor / windows-sys-0.28.0 / src / Windows / Win32 / Storage / IscsiDisc / mod.rs
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")]
5 pub fn AddISNSServerA(address: super::super::Foundation::PSTR) -> u32;
6 #[cfg(feature = "Win32_Foundation")]
7 pub fn AddISNSServerW(address: super::super::Foundation::PWSTR) -> u32;
8 #[cfg(feature = "Win32_Foundation")]
9 pub fn AddIScsiConnectionA(uniquesessionid: *mut ISCSI_UNIQUE_SESSION_ID, reserved: *mut ::core::ffi::c_void, initiatorportnumber: u32, targetportal: *mut ISCSI_TARGET_PORTALA, securityflags: u64, loginoptions: *mut ISCSI_LOGIN_OPTIONS, keysize: u32, key: super::super::Foundation::PSTR, connectionid: *mut ISCSI_UNIQUE_SESSION_ID) -> u32;
10 #[cfg(feature = "Win32_Foundation")]
11 pub fn AddIScsiConnectionW(uniquesessionid: *mut ISCSI_UNIQUE_SESSION_ID, reserved: *mut ::core::ffi::c_void, initiatorportnumber: u32, targetportal: *mut ISCSI_TARGET_PORTALW, securityflags: u64, loginoptions: *mut ISCSI_LOGIN_OPTIONS, keysize: u32, key: super::super::Foundation::PSTR, connectionid: *mut ISCSI_UNIQUE_SESSION_ID) -> u32;
12 #[cfg(feature = "Win32_Foundation")]
13 pub fn AddIScsiSendTargetPortalA(initiatorinstance: super::super::Foundation::PSTR, initiatorportnumber: u32, loginoptions: *mut ISCSI_LOGIN_OPTIONS, securityflags: u64, portal: *mut ISCSI_TARGET_PORTALA) -> u32;
14 #[cfg(feature = "Win32_Foundation")]
15 pub fn AddIScsiSendTargetPortalW(initiatorinstance: super::super::Foundation::PWSTR, initiatorportnumber: u32, loginoptions: *mut ISCSI_LOGIN_OPTIONS, securityflags: u64, portal: *mut ISCSI_TARGET_PORTALW) -> u32;
16 #[cfg(feature = "Win32_Foundation")]
17 pub fn AddIScsiStaticTargetA(targetname: super::super::Foundation::PSTR, targetalias: super::super::Foundation::PSTR, targetflags: u32, persist: super::super::Foundation::BOOLEAN, mappings: *mut ISCSI_TARGET_MAPPINGA, loginoptions: *mut ISCSI_LOGIN_OPTIONS, portalgroup: *mut ISCSI_TARGET_PORTAL_GROUPA) -> u32;
18 #[cfg(feature = "Win32_Foundation")]
19 pub fn AddIScsiStaticTargetW(targetname: super::super::Foundation::PWSTR, targetalias: super::super::Foundation::PWSTR, targetflags: u32, persist: super::super::Foundation::BOOLEAN, mappings: *mut ISCSI_TARGET_MAPPINGW, loginoptions: *mut ISCSI_LOGIN_OPTIONS, portalgroup: *mut ISCSI_TARGET_PORTAL_GROUPW) -> u32;
20 #[cfg(feature = "Win32_Foundation")]
21 pub fn AddPersistentIScsiDeviceA(devicepath: super::super::Foundation::PSTR) -> u32;
22 #[cfg(feature = "Win32_Foundation")]
23 pub fn AddPersistentIScsiDeviceW(devicepath: super::super::Foundation::PWSTR) -> u32;
24 #[cfg(feature = "Win32_Foundation")]
25 pub fn AddRadiusServerA(address: super::super::Foundation::PSTR) -> u32;
26 #[cfg(feature = "Win32_Foundation")]
27 pub fn AddRadiusServerW(address: super::super::Foundation::PWSTR) -> u32;
28 pub fn ClearPersistentIScsiDevices() -> u32;
29 #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Ioctl"))]
30 pub fn GetDevicesForIScsiSessionA(uniquesessionid: *mut ISCSI_UNIQUE_SESSION_ID, devicecount: *mut u32, devices: *mut ISCSI_DEVICE_ON_SESSIONA) -> u32;
31 #[cfg(feature = "Win32_System_Ioctl")]
32 pub fn GetDevicesForIScsiSessionW(uniquesessionid: *mut ISCSI_UNIQUE_SESSION_ID, devicecount: *mut u32, devices: *mut ISCSI_DEVICE_ON_SESSIONW) -> u32;
33 #[cfg(feature = "Win32_Foundation")]
34 pub fn GetIScsiIKEInfoA(initiatorname: super::super::Foundation::PSTR, initiatorportnumber: u32, reserved: *mut u32, authinfo: *mut IKE_AUTHENTICATION_INFORMATION) -> u32;
35 #[cfg(feature = "Win32_Foundation")]
36 pub fn GetIScsiIKEInfoW(initiatorname: super::super::Foundation::PWSTR, initiatorportnumber: u32, reserved: *mut u32, authinfo: *mut IKE_AUTHENTICATION_INFORMATION) -> u32;
37 #[cfg(feature = "Win32_Foundation")]
38 pub fn GetIScsiInitiatorNodeNameA(initiatornodename: super::super::Foundation::PSTR) -> u32;
39 #[cfg(feature = "Win32_Foundation")]
40 pub fn GetIScsiInitiatorNodeNameW(initiatornodename: super::super::Foundation::PWSTR) -> u32;
41 #[cfg(feature = "Win32_Foundation")]
42 pub fn GetIScsiSessionListA(buffersize: *mut u32, sessioncount: *mut u32, sessioninfo: *mut ISCSI_SESSION_INFOA) -> u32;
43 #[cfg(feature = "Win32_Foundation")]
44 pub fn GetIScsiSessionListEx(buffersize: *mut u32, sessioncountptr: *mut u32, sessioninfo: *mut ISCSI_SESSION_INFO_EX) -> u32;
45 #[cfg(feature = "Win32_Foundation")]
46 pub fn GetIScsiSessionListW(buffersize: *mut u32, sessioncount: *mut u32, sessioninfo: *mut ISCSI_SESSION_INFOW) -> u32;
47 #[cfg(feature = "Win32_Foundation")]
48 pub fn GetIScsiTargetInformationA(targetname: super::super::Foundation::PSTR, discoverymechanism: super::super::Foundation::PSTR, infoclass: TARGET_INFORMATION_CLASS, buffersize: *mut u32, buffer: *mut ::core::ffi::c_void) -> u32;
49 #[cfg(feature = "Win32_Foundation")]
50 pub fn GetIScsiTargetInformationW(targetname: super::super::Foundation::PWSTR, discoverymechanism: super::super::Foundation::PWSTR, infoclass: TARGET_INFORMATION_CLASS, buffersize: *mut u32, buffer: *mut ::core::ffi::c_void) -> u32;
51 pub fn GetIScsiVersionInformation(versioninfo: *mut ISCSI_VERSION_INFO) -> u32;
52 #[cfg(feature = "Win32_Foundation")]
53 pub fn LoginIScsiTargetA(
54 targetname: super::super::Foundation::PSTR,
55 isinformationalsession: super::super::Foundation::BOOLEAN,
56 initiatorinstance: super::super::Foundation::PSTR,
57 initiatorportnumber: u32,
58 targetportal: *mut ISCSI_TARGET_PORTALA,
59 securityflags: u64,
60 mappings: *mut ISCSI_TARGET_MAPPINGA,
61 loginoptions: *mut ISCSI_LOGIN_OPTIONS,
62 keysize: u32,
63 key: super::super::Foundation::PSTR,
64 ispersistent: super::super::Foundation::BOOLEAN,
65 uniquesessionid: *mut ISCSI_UNIQUE_SESSION_ID,
66 uniqueconnectionid: *mut ISCSI_UNIQUE_SESSION_ID,
67 ) -> u32;
68 #[cfg(feature = "Win32_Foundation")]
69 pub fn LoginIScsiTargetW(
70 targetname: super::super::Foundation::PWSTR,
71 isinformationalsession: super::super::Foundation::BOOLEAN,
72 initiatorinstance: super::super::Foundation::PWSTR,
73 initiatorportnumber: u32,
74 targetportal: *mut ISCSI_TARGET_PORTALW,
75 securityflags: u64,
76 mappings: *mut ISCSI_TARGET_MAPPINGW,
77 loginoptions: *mut ISCSI_LOGIN_OPTIONS,
78 keysize: u32,
79 key: super::super::Foundation::PSTR,
80 ispersistent: super::super::Foundation::BOOLEAN,
81 uniquesessionid: *mut ISCSI_UNIQUE_SESSION_ID,
82 uniqueconnectionid: *mut ISCSI_UNIQUE_SESSION_ID,
83 ) -> u32;
84 pub fn LogoutIScsiTarget(uniquesessionid: *mut ISCSI_UNIQUE_SESSION_ID) -> u32;
85 #[cfg(feature = "Win32_Foundation")]
86 pub fn RefreshISNSServerA(address: super::super::Foundation::PSTR) -> u32;
87 #[cfg(feature = "Win32_Foundation")]
88 pub fn RefreshISNSServerW(address: super::super::Foundation::PWSTR) -> u32;
89 #[cfg(feature = "Win32_Foundation")]
90 pub fn RefreshIScsiSendTargetPortalA(initiatorinstance: super::super::Foundation::PSTR, initiatorportnumber: u32, portal: *mut ISCSI_TARGET_PORTALA) -> u32;
91 #[cfg(feature = "Win32_Foundation")]
92 pub fn RefreshIScsiSendTargetPortalW(initiatorinstance: super::super::Foundation::PWSTR, initiatorportnumber: u32, portal: *mut ISCSI_TARGET_PORTALW) -> u32;
93 #[cfg(feature = "Win32_Foundation")]
94 pub fn RemoveISNSServerA(address: super::super::Foundation::PSTR) -> u32;
95 #[cfg(feature = "Win32_Foundation")]
96 pub fn RemoveISNSServerW(address: super::super::Foundation::PWSTR) -> u32;
97 pub fn RemoveIScsiConnection(uniquesessionid: *mut ISCSI_UNIQUE_SESSION_ID, connectionid: *mut ISCSI_UNIQUE_SESSION_ID) -> u32;
98 #[cfg(feature = "Win32_Foundation")]
99 pub fn RemoveIScsiPersistentTargetA(initiatorinstance: super::super::Foundation::PSTR, initiatorportnumber: u32, targetname: super::super::Foundation::PSTR, portal: *mut ISCSI_TARGET_PORTALA) -> u32;
100 #[cfg(feature = "Win32_Foundation")]
101 pub fn RemoveIScsiPersistentTargetW(initiatorinstance: super::super::Foundation::PWSTR, initiatorportnumber: u32, targetname: super::super::Foundation::PWSTR, portal: *mut ISCSI_TARGET_PORTALW) -> u32;
102 #[cfg(feature = "Win32_Foundation")]
103 pub fn RemoveIScsiSendTargetPortalA(initiatorinstance: super::super::Foundation::PSTR, initiatorportnumber: u32, portal: *mut ISCSI_TARGET_PORTALA) -> u32;
104 #[cfg(feature = "Win32_Foundation")]
105 pub fn RemoveIScsiSendTargetPortalW(initiatorinstance: super::super::Foundation::PWSTR, initiatorportnumber: u32, portal: *mut ISCSI_TARGET_PORTALW) -> u32;
106 #[cfg(feature = "Win32_Foundation")]
107 pub fn RemoveIScsiStaticTargetA(targetname: super::super::Foundation::PSTR) -> u32;
108 #[cfg(feature = "Win32_Foundation")]
109 pub fn RemoveIScsiStaticTargetW(targetname: super::super::Foundation::PWSTR) -> u32;
110 #[cfg(feature = "Win32_Foundation")]
111 pub fn RemovePersistentIScsiDeviceA(devicepath: super::super::Foundation::PSTR) -> u32;
112 #[cfg(feature = "Win32_Foundation")]
113 pub fn RemovePersistentIScsiDeviceW(devicepath: super::super::Foundation::PWSTR) -> u32;
114 #[cfg(feature = "Win32_Foundation")]
115 pub fn RemoveRadiusServerA(address: super::super::Foundation::PSTR) -> u32;
116 #[cfg(feature = "Win32_Foundation")]
117 pub fn RemoveRadiusServerW(address: super::super::Foundation::PWSTR) -> u32;
118 #[cfg(feature = "Win32_Foundation")]
119 pub fn ReportActiveIScsiTargetMappingsA(buffersize: *mut u32, mappingcount: *mut u32, mappings: *mut ISCSI_TARGET_MAPPINGA) -> u32;
120 pub fn ReportActiveIScsiTargetMappingsW(buffersize: *mut u32, mappingcount: *mut u32, mappings: *mut ISCSI_TARGET_MAPPINGW) -> u32;
121 #[cfg(feature = "Win32_Foundation")]
122 pub fn ReportISNSServerListA(buffersizeinchar: *mut u32, buffer: super::super::Foundation::PSTR) -> u32;
123 #[cfg(feature = "Win32_Foundation")]
124 pub fn ReportISNSServerListW(buffersizeinchar: *mut u32, buffer: super::super::Foundation::PWSTR) -> u32;
125 #[cfg(feature = "Win32_Foundation")]
126 pub fn ReportIScsiInitiatorListA(buffersize: *mut u32, buffer: super::super::Foundation::PSTR) -> u32;
127 #[cfg(feature = "Win32_Foundation")]
128 pub fn ReportIScsiInitiatorListW(buffersize: *mut u32, buffer: super::super::Foundation::PWSTR) -> u32;
129 #[cfg(feature = "Win32_Foundation")]
130 pub fn ReportIScsiPersistentLoginsA(count: *mut u32, persistentlogininfo: *mut PERSISTENT_ISCSI_LOGIN_INFOA, buffersizeinbytes: *mut u32) -> u32;
131 #[cfg(feature = "Win32_Foundation")]
132 pub fn ReportIScsiPersistentLoginsW(count: *mut u32, persistentlogininfo: *mut PERSISTENT_ISCSI_LOGIN_INFOW, buffersizeinbytes: *mut u32) -> u32;
133 #[cfg(feature = "Win32_Foundation")]
134 pub fn ReportIScsiSendTargetPortalsA(portalcount: *mut u32, portalinfo: *mut ISCSI_TARGET_PORTAL_INFOA) -> u32;
135 #[cfg(feature = "Win32_Foundation")]
136 pub fn ReportIScsiSendTargetPortalsExA(portalcount: *mut u32, portalinfosize: *mut u32, portalinfo: *mut ISCSI_TARGET_PORTAL_INFO_EXA) -> u32;
137 pub fn ReportIScsiSendTargetPortalsExW(portalcount: *mut u32, portalinfosize: *mut u32, portalinfo: *mut ISCSI_TARGET_PORTAL_INFO_EXW) -> u32;
138 pub fn ReportIScsiSendTargetPortalsW(portalcount: *mut u32, portalinfo: *mut ISCSI_TARGET_PORTAL_INFOW) -> u32;
139 #[cfg(feature = "Win32_Foundation")]
140 pub fn ReportIScsiTargetPortalsA(initiatorname: super::super::Foundation::PSTR, targetname: super::super::Foundation::PSTR, targetportaltag: *mut u16, elementcount: *mut u32, portals: *mut ISCSI_TARGET_PORTALA) -> u32;
141 #[cfg(feature = "Win32_Foundation")]
142 pub fn ReportIScsiTargetPortalsW(initiatorname: super::super::Foundation::PWSTR, targetname: super::super::Foundation::PWSTR, targetportaltag: *mut u16, elementcount: *mut u32, portals: *mut ISCSI_TARGET_PORTALW) -> u32;
143 #[cfg(feature = "Win32_Foundation")]
144 pub fn ReportIScsiTargetsA(forceupdate: super::super::Foundation::BOOLEAN, buffersize: *mut u32, buffer: super::super::Foundation::PSTR) -> u32;
145 #[cfg(feature = "Win32_Foundation")]
146 pub fn ReportIScsiTargetsW(forceupdate: super::super::Foundation::BOOLEAN, buffersize: *mut u32, buffer: super::super::Foundation::PWSTR) -> u32;
147 #[cfg(feature = "Win32_Foundation")]
148 pub fn ReportPersistentIScsiDevicesA(buffersizeinchar: *mut u32, buffer: super::super::Foundation::PSTR) -> u32;
149 #[cfg(feature = "Win32_Foundation")]
150 pub fn ReportPersistentIScsiDevicesW(buffersizeinchar: *mut u32, buffer: super::super::Foundation::PWSTR) -> u32;
151 #[cfg(feature = "Win32_Foundation")]
152 pub fn ReportRadiusServerListA(buffersizeinchar: *mut u32, buffer: super::super::Foundation::PSTR) -> u32;
153 #[cfg(feature = "Win32_Foundation")]
154 pub fn ReportRadiusServerListW(buffersizeinchar: *mut u32, buffer: super::super::Foundation::PWSTR) -> u32;
155 pub fn SendScsiInquiry(uniquesessionid: *mut ISCSI_UNIQUE_SESSION_ID, lun: u64, evpdcmddt: u8, pagecode: u8, scsistatus: *mut u8, responsesize: *mut u32, responsebuffer: *mut u8, sensesize: *mut u32, sensebuffer: *mut u8) -> u32;
156 pub fn SendScsiReadCapacity(uniquesessionid: *mut ISCSI_UNIQUE_SESSION_ID, lun: u64, scsistatus: *mut u8, responsesize: *mut u32, responsebuffer: *mut u8, sensesize: *mut u32, sensebuffer: *mut u8) -> u32;
157 pub fn SendScsiReportLuns(uniquesessionid: *mut ISCSI_UNIQUE_SESSION_ID, scsistatus: *mut u8, responsesize: *mut u32, responsebuffer: *mut u8, sensesize: *mut u32, sensebuffer: *mut u8) -> u32;
158 #[cfg(feature = "Win32_Foundation")]
159 pub fn SetIScsiGroupPresharedKey(keylength: u32, key: *mut u8, persist: super::super::Foundation::BOOLEAN) -> u32;
160 #[cfg(feature = "Win32_Foundation")]
161 pub fn SetIScsiIKEInfoA(initiatorname: super::super::Foundation::PSTR, initiatorportnumber: u32, authinfo: *mut IKE_AUTHENTICATION_INFORMATION, persist: super::super::Foundation::BOOLEAN) -> u32;
162 #[cfg(feature = "Win32_Foundation")]
163 pub fn SetIScsiIKEInfoW(initiatorname: super::super::Foundation::PWSTR, initiatorportnumber: u32, authinfo: *mut IKE_AUTHENTICATION_INFORMATION, persist: super::super::Foundation::BOOLEAN) -> u32;
164 pub fn SetIScsiInitiatorCHAPSharedSecret(sharedsecretlength: u32, sharedsecret: *mut u8) -> u32;
165 #[cfg(feature = "Win32_Foundation")]
166 pub fn SetIScsiInitiatorNodeNameA(initiatornodename: super::super::Foundation::PSTR) -> u32;
167 #[cfg(feature = "Win32_Foundation")]
168 pub fn SetIScsiInitiatorNodeNameW(initiatornodename: super::super::Foundation::PWSTR) -> u32;
169 pub fn SetIScsiInitiatorRADIUSSharedSecret(sharedsecretlength: u32, sharedsecret: *mut u8) -> u32;
170 #[cfg(feature = "Win32_Foundation")]
171 pub fn SetIScsiTunnelModeOuterAddressA(initiatorname: super::super::Foundation::PSTR, initiatorportnumber: u32, destinationaddress: super::super::Foundation::PSTR, outermodeaddress: super::super::Foundation::PSTR, persist: super::super::Foundation::BOOLEAN) -> u32;
172 #[cfg(feature = "Win32_Foundation")]
173 pub fn SetIScsiTunnelModeOuterAddressW(initiatorname: super::super::Foundation::PWSTR, initiatorportnumber: u32, destinationaddress: super::super::Foundation::PWSTR, outermodeaddress: super::super::Foundation::PWSTR, persist: super::super::Foundation::BOOLEAN) -> u32;
174 pub fn SetupPersistentIScsiDevices() -> u32;
175 pub fn SetupPersistentIScsiVolumes() -> u32;
176 }
177 pub const ATA_FLAGS_48BIT_COMMAND: u32 = 8u32;
178 pub const ATA_FLAGS_DATA_IN: u32 = 2u32;
179 pub const ATA_FLAGS_DATA_OUT: u32 = 4u32;
180 pub const ATA_FLAGS_DRDY_REQUIRED: u32 = 1u32;
181 pub const ATA_FLAGS_NO_MULTIPLE: u32 = 32u32;
182 pub const ATA_FLAGS_USE_DMA: u32 = 16u32;
183 #[repr(C)]
184 pub struct ATA_PASS_THROUGH_DIRECT {
185 pub Length: u16,
186 pub AtaFlags: u16,
187 pub PathId: u8,
188 pub TargetId: u8,
189 pub Lun: u8,
190 pub ReservedAsUchar: u8,
191 pub DataTransferLength: u32,
192 pub TimeOutValue: u32,
193 pub ReservedAsUlong: u32,
194 pub DataBuffer: *mut ::core::ffi::c_void,
195 pub PreviousTaskFile: [u8; 8],
196 pub CurrentTaskFile: [u8; 8],
197 }
198 impl ::core::marker::Copy for ATA_PASS_THROUGH_DIRECT {}
199 impl ::core::clone::Clone for ATA_PASS_THROUGH_DIRECT {
200 fn clone(&self) -> Self {
201 *self
202 }
203 }
204 #[repr(C)]
205 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
206 pub struct ATA_PASS_THROUGH_DIRECT32 {
207 pub Length: u16,
208 pub AtaFlags: u16,
209 pub PathId: u8,
210 pub TargetId: u8,
211 pub Lun: u8,
212 pub ReservedAsUchar: u8,
213 pub DataTransferLength: u32,
214 pub TimeOutValue: u32,
215 pub ReservedAsUlong: u32,
216 pub DataBuffer: *mut ::core::ffi::c_void,
217 pub PreviousTaskFile: [u8; 8],
218 pub CurrentTaskFile: [u8; 8],
219 }
220 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
221 impl ::core::marker::Copy for ATA_PASS_THROUGH_DIRECT32 {}
222 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
223 impl ::core::clone::Clone for ATA_PASS_THROUGH_DIRECT32 {
224 fn clone(&self) -> Self {
225 *self
226 }
227 }
228 #[repr(C)]
229 pub struct ATA_PASS_THROUGH_EX {
230 pub Length: u16,
231 pub AtaFlags: u16,
232 pub PathId: u8,
233 pub TargetId: u8,
234 pub Lun: u8,
235 pub ReservedAsUchar: u8,
236 pub DataTransferLength: u32,
237 pub TimeOutValue: u32,
238 pub ReservedAsUlong: u32,
239 pub DataBufferOffset: usize,
240 pub PreviousTaskFile: [u8; 8],
241 pub CurrentTaskFile: [u8; 8],
242 }
243 impl ::core::marker::Copy for ATA_PASS_THROUGH_EX {}
244 impl ::core::clone::Clone for ATA_PASS_THROUGH_EX {
245 fn clone(&self) -> Self {
246 *self
247 }
248 }
249 #[repr(C)]
250 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
251 pub struct ATA_PASS_THROUGH_EX32 {
252 pub Length: u16,
253 pub AtaFlags: u16,
254 pub PathId: u8,
255 pub TargetId: u8,
256 pub Lun: u8,
257 pub ReservedAsUchar: u8,
258 pub DataTransferLength: u32,
259 pub TimeOutValue: u32,
260 pub ReservedAsUlong: u32,
261 pub DataBufferOffset: u32,
262 pub PreviousTaskFile: [u8; 8],
263 pub CurrentTaskFile: [u8; 8],
264 }
265 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
266 impl ::core::marker::Copy for ATA_PASS_THROUGH_EX32 {}
267 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
268 impl ::core::clone::Clone for ATA_PASS_THROUGH_EX32 {
269 fn clone(&self) -> Self {
270 *self
271 }
272 }
273 #[repr(C)]
274 pub struct DSM_NOTIFICATION_REQUEST_BLOCK {
275 pub Size: u32,
276 pub Version: u32,
277 pub NotifyFlags: u32,
278 pub DataSetProfile: u32,
279 pub Reserved: [u32; 3],
280 pub DataSetRangesCount: u32,
281 pub DataSetRanges: [MP_DEVICE_DATA_SET_RANGE; 1],
282 }
283 impl ::core::marker::Copy for DSM_NOTIFICATION_REQUEST_BLOCK {}
284 impl ::core::clone::Clone for DSM_NOTIFICATION_REQUEST_BLOCK {
285 fn clone(&self) -> Self {
286 *self
287 }
288 }
289 pub type DUMP_DEVICE_POWERON_ROUTINE = unsafe extern "system" fn(context: *const ::core::ffi::c_void) -> i32;
290 #[repr(C)]
291 pub struct DUMP_DRIVER {
292 pub DumpDriverList: *mut ::core::ffi::c_void,
293 pub DriverName: [u16; 15],
294 pub BaseName: [u16; 15],
295 }
296 impl ::core::marker::Copy for DUMP_DRIVER {}
297 impl ::core::clone::Clone for DUMP_DRIVER {
298 fn clone(&self) -> Self {
299 *self
300 }
301 }
302 #[repr(C)]
303 #[cfg(feature = "Win32_Foundation")]
304 pub struct DUMP_DRIVER_EX {
305 pub DumpDriverList: *mut ::core::ffi::c_void,
306 pub DriverName: [u16; 15],
307 pub BaseName: [u16; 15],
308 pub DriverFullPath: NTSCSI_UNICODE_STRING,
309 }
310 #[cfg(feature = "Win32_Foundation")]
311 impl ::core::marker::Copy for DUMP_DRIVER_EX {}
312 #[cfg(feature = "Win32_Foundation")]
313 impl ::core::clone::Clone for DUMP_DRIVER_EX {
314 fn clone(&self) -> Self {
315 *self
316 }
317 }
318 pub const DUMP_DRIVER_NAME_LENGTH: u32 = 15u32;
319 pub const DUMP_EX_FLAG_DRIVER_FULL_PATH_SUPPORT: u32 = 8u32;
320 pub const DUMP_EX_FLAG_RESUME_SUPPORT: u32 = 4u32;
321 pub const DUMP_EX_FLAG_SUPPORT_64BITMEMORY: u32 = 1u32;
322 pub const DUMP_EX_FLAG_SUPPORT_DD_TELEMETRY: u32 = 2u32;
323 #[repr(C)]
324 #[cfg(feature = "Win32_Foundation")]
325 pub struct DUMP_POINTERS {
326 pub AdapterObject: *mut _ADAPTER_OBJECT,
327 pub MappedRegisterBase: *mut ::core::ffi::c_void,
328 pub DumpData: *mut ::core::ffi::c_void,
329 pub CommonBufferVa: *mut ::core::ffi::c_void,
330 pub CommonBufferPa: i64,
331 pub CommonBufferSize: u32,
332 pub AllocateCommonBuffers: super::super::Foundation::BOOLEAN,
333 pub UseDiskDump: super::super::Foundation::BOOLEAN,
334 pub Spare1: [u8; 2],
335 pub DeviceObject: *mut ::core::ffi::c_void,
336 }
337 #[cfg(feature = "Win32_Foundation")]
338 impl ::core::marker::Copy for DUMP_POINTERS {}
339 #[cfg(feature = "Win32_Foundation")]
340 impl ::core::clone::Clone for DUMP_POINTERS {
341 fn clone(&self) -> Self {
342 *self
343 }
344 }
345 #[repr(C)]
346 #[cfg(feature = "Win32_Foundation")]
347 pub struct DUMP_POINTERS_EX {
348 pub Header: DUMP_POINTERS_VERSION,
349 pub DumpData: *mut ::core::ffi::c_void,
350 pub CommonBufferVa: *mut ::core::ffi::c_void,
351 pub CommonBufferSize: u32,
352 pub AllocateCommonBuffers: super::super::Foundation::BOOLEAN,
353 pub DeviceObject: *mut ::core::ffi::c_void,
354 pub DriverList: *mut ::core::ffi::c_void,
355 pub dwPortFlags: u32,
356 pub MaxDeviceDumpSectionSize: u32,
357 pub MaxDeviceDumpLevel: u32,
358 pub MaxTransferSize: u32,
359 pub AdapterObject: *mut ::core::ffi::c_void,
360 pub MappedRegisterBase: *mut ::core::ffi::c_void,
361 pub DeviceReady: *mut super::super::Foundation::BOOLEAN,
362 pub DumpDevicePowerOn: PDUMP_DEVICE_POWERON_ROUTINE,
363 pub DumpDevicePowerOnContext: *mut ::core::ffi::c_void,
364 }
365 #[cfg(feature = "Win32_Foundation")]
366 impl ::core::marker::Copy for DUMP_POINTERS_EX {}
367 #[cfg(feature = "Win32_Foundation")]
368 impl ::core::clone::Clone for DUMP_POINTERS_EX {
369 fn clone(&self) -> Self {
370 *self
371 }
372 }
373 #[repr(C)]
374 pub struct DUMP_POINTERS_VERSION {
375 pub Version: u32,
376 pub Size: u32,
377 }
378 impl ::core::marker::Copy for DUMP_POINTERS_VERSION {}
379 impl ::core::clone::Clone for DUMP_POINTERS_VERSION {
380 fn clone(&self) -> Self {
381 *self
382 }
383 }
384 pub const DUMP_POINTERS_VERSION_1: u32 = 1u32;
385 pub const DUMP_POINTERS_VERSION_2: u32 = 2u32;
386 pub const DUMP_POINTERS_VERSION_3: u32 = 3u32;
387 pub const DUMP_POINTERS_VERSION_4: u32 = 4u32;
388 pub const FILE_DEVICE_SCSI: u32 = 27u32;
389 pub const FIRMWARE_FUNCTION_ACTIVATE: u32 = 3u32;
390 pub const FIRMWARE_FUNCTION_DOWNLOAD: u32 = 2u32;
391 pub const FIRMWARE_FUNCTION_GET_INFO: u32 = 1u32;
392 #[repr(C)]
393 pub struct FIRMWARE_REQUEST_BLOCK {
394 pub Version: u32,
395 pub Size: u32,
396 pub Function: u32,
397 pub Flags: u32,
398 pub DataBufferOffset: u32,
399 pub DataBufferLength: u32,
400 }
401 impl ::core::marker::Copy for FIRMWARE_REQUEST_BLOCK {}
402 impl ::core::clone::Clone for FIRMWARE_REQUEST_BLOCK {
403 fn clone(&self) -> Self {
404 *self
405 }
406 }
407 pub const FIRMWARE_REQUEST_BLOCK_STRUCTURE_VERSION: u32 = 1u32;
408 pub const FIRMWARE_REQUEST_FLAG_CONTROLLER: u32 = 1u32;
409 pub const FIRMWARE_REQUEST_FLAG_FIRST_SEGMENT: u32 = 4u32;
410 pub const FIRMWARE_REQUEST_FLAG_LAST_SEGMENT: u32 = 2u32;
411 pub const FIRMWARE_REQUEST_FLAG_SWITCH_TO_EXISTING_FIRMWARE: u32 = 2147483648u32;
412 pub const FIRMWARE_STATUS_COMMAND_ABORT: u32 = 133u32;
413 pub const FIRMWARE_STATUS_CONTROLLER_ERROR: u32 = 16u32;
414 pub const FIRMWARE_STATUS_DEVICE_ERROR: u32 = 64u32;
415 pub const FIRMWARE_STATUS_END_OF_MEDIA: u32 = 134u32;
416 pub const FIRMWARE_STATUS_ERROR: u32 = 1u32;
417 pub const FIRMWARE_STATUS_ID_NOT_FOUND: u32 = 131u32;
418 pub const FIRMWARE_STATUS_ILLEGAL_LENGTH: u32 = 135u32;
419 pub const FIRMWARE_STATUS_ILLEGAL_REQUEST: u32 = 2u32;
420 pub const FIRMWARE_STATUS_INPUT_BUFFER_TOO_BIG: u32 = 4u32;
421 pub const FIRMWARE_STATUS_INTERFACE_CRC_ERROR: u32 = 128u32;
422 pub const FIRMWARE_STATUS_INVALID_IMAGE: u32 = 7u32;
423 pub const FIRMWARE_STATUS_INVALID_PARAMETER: u32 = 3u32;
424 pub const FIRMWARE_STATUS_INVALID_SLOT: u32 = 6u32;
425 pub const FIRMWARE_STATUS_MEDIA_CHANGE: u32 = 130u32;
426 pub const FIRMWARE_STATUS_MEDIA_CHANGE_REQUEST: u32 = 132u32;
427 pub const FIRMWARE_STATUS_OUTPUT_BUFFER_TOO_SMALL: u32 = 5u32;
428 pub const FIRMWARE_STATUS_POWER_CYCLE_REQUIRED: u32 = 32u32;
429 pub const FIRMWARE_STATUS_SUCCESS: u32 = 0u32;
430 pub const FIRMWARE_STATUS_UNCORRECTABLE_DATA_ERROR: u32 = 129u32;
431 #[repr(C)]
432 pub struct HYBRID_DEMOTE_BY_SIZE {
433 pub Version: u32,
434 pub Size: u32,
435 pub SourcePriority: u8,
436 pub TargetPriority: u8,
437 pub Reserved0: u16,
438 pub Reserved1: u32,
439 pub LbaCount: u64,
440 }
441 impl ::core::marker::Copy for HYBRID_DEMOTE_BY_SIZE {}
442 impl ::core::clone::Clone for HYBRID_DEMOTE_BY_SIZE {
443 fn clone(&self) -> Self {
444 *self
445 }
446 }
447 #[repr(C)]
448 pub struct HYBRID_DIRTY_THRESHOLDS {
449 pub Version: u32,
450 pub Size: u32,
451 pub DirtyLowThreshold: u32,
452 pub DirtyHighThreshold: u32,
453 }
454 impl ::core::marker::Copy for HYBRID_DIRTY_THRESHOLDS {}
455 impl ::core::clone::Clone for HYBRID_DIRTY_THRESHOLDS {
456 fn clone(&self) -> Self {
457 *self
458 }
459 }
460 pub const HYBRID_FUNCTION_DEMOTE_BY_SIZE: u32 = 19u32;
461 pub const HYBRID_FUNCTION_DISABLE_CACHING_MEDIUM: u32 = 16u32;
462 pub const HYBRID_FUNCTION_ENABLE_CACHING_MEDIUM: u32 = 17u32;
463 pub const HYBRID_FUNCTION_GET_INFO: u32 = 1u32;
464 pub const HYBRID_FUNCTION_SET_DIRTY_THRESHOLD: u32 = 18u32;
465 #[repr(C)]
466 #[cfg(feature = "Win32_Foundation")]
467 pub struct HYBRID_INFORMATION {
468 pub Version: u32,
469 pub Size: u32,
470 pub HybridSupported: super::super::Foundation::BOOLEAN,
471 pub Status: NVCACHE_STATUS,
472 pub CacheTypeEffective: NVCACHE_TYPE,
473 pub CacheTypeDefault: NVCACHE_TYPE,
474 pub FractionBase: u32,
475 pub CacheSize: u64,
476 pub Attributes: HYBRID_INFORMATION_0,
477 pub Priorities: HYBRID_INFORMATION_1,
478 }
479 #[cfg(feature = "Win32_Foundation")]
480 impl ::core::marker::Copy for HYBRID_INFORMATION {}
481 #[cfg(feature = "Win32_Foundation")]
482 impl ::core::clone::Clone for HYBRID_INFORMATION {
483 fn clone(&self) -> Self {
484 *self
485 }
486 }
487 #[repr(C)]
488 #[cfg(feature = "Win32_Foundation")]
489 pub struct HYBRID_INFORMATION_0 {
490 pub _bitfield: u32,
491 }
492 #[cfg(feature = "Win32_Foundation")]
493 impl ::core::marker::Copy for HYBRID_INFORMATION_0 {}
494 #[cfg(feature = "Win32_Foundation")]
495 impl ::core::clone::Clone for HYBRID_INFORMATION_0 {
496 fn clone(&self) -> Self {
497 *self
498 }
499 }
500 #[repr(C)]
501 #[cfg(feature = "Win32_Foundation")]
502 pub struct HYBRID_INFORMATION_1 {
503 pub PriorityLevelCount: u8,
504 pub MaxPriorityBehavior: super::super::Foundation::BOOLEAN,
505 pub OptimalWriteGranularity: u8,
506 pub Reserved: u8,
507 pub DirtyThresholdLow: u32,
508 pub DirtyThresholdHigh: u32,
509 pub SupportedCommands: HYBRID_INFORMATION_1_0,
510 pub Priority: [NVCACHE_PRIORITY_LEVEL_DESCRIPTOR; 1],
511 }
512 #[cfg(feature = "Win32_Foundation")]
513 impl ::core::marker::Copy for HYBRID_INFORMATION_1 {}
514 #[cfg(feature = "Win32_Foundation")]
515 impl ::core::clone::Clone for HYBRID_INFORMATION_1 {
516 fn clone(&self) -> Self {
517 *self
518 }
519 }
520 #[repr(C)]
521 #[cfg(feature = "Win32_Foundation")]
522 pub struct HYBRID_INFORMATION_1_0 {
523 pub _bitfield: u32,
524 pub MaxEvictCommands: u32,
525 pub MaxLbaRangeCountForEvict: u32,
526 pub MaxLbaRangeCountForChangeLba: u32,
527 }
528 #[cfg(feature = "Win32_Foundation")]
529 impl ::core::marker::Copy for HYBRID_INFORMATION_1_0 {}
530 #[cfg(feature = "Win32_Foundation")]
531 impl ::core::clone::Clone for HYBRID_INFORMATION_1_0 {
532 fn clone(&self) -> Self {
533 *self
534 }
535 }
536 #[repr(C)]
537 pub struct HYBRID_REQUEST_BLOCK {
538 pub Version: u32,
539 pub Size: u32,
540 pub Function: u32,
541 pub Flags: u32,
542 pub DataBufferOffset: u32,
543 pub DataBufferLength: u32,
544 }
545 impl ::core::marker::Copy for HYBRID_REQUEST_BLOCK {}
546 impl ::core::clone::Clone for HYBRID_REQUEST_BLOCK {
547 fn clone(&self) -> Self {
548 *self
549 }
550 }
551 pub const HYBRID_REQUEST_BLOCK_STRUCTURE_VERSION: u32 = 1u32;
552 pub const HYBRID_REQUEST_INFO_STRUCTURE_VERSION: u32 = 1u32;
553 pub const HYBRID_STATUS_ENABLE_REFCOUNT_HOLD: u32 = 16u32;
554 pub const HYBRID_STATUS_ILLEGAL_REQUEST: u32 = 1u32;
555 pub const HYBRID_STATUS_INVALID_PARAMETER: u32 = 2u32;
556 pub const HYBRID_STATUS_OUTPUT_BUFFER_TOO_SMALL: u32 = 3u32;
557 pub const HYBRID_STATUS_SUCCESS: u32 = 0u32;
558 #[repr(C)]
559 pub struct IDE_IO_CONTROL {
560 pub HeaderLength: u32,
561 pub Signature: [u8; 8],
562 pub Timeout: u32,
563 pub ControlCode: u32,
564 pub ReturnStatus: u32,
565 pub DataLength: u32,
566 }
567 impl ::core::marker::Copy for IDE_IO_CONTROL {}
568 impl ::core::clone::Clone for IDE_IO_CONTROL {
569 fn clone(&self) -> Self {
570 *self
571 }
572 }
573 pub const ID_FQDN: u32 = 2u32;
574 pub const ID_IPV4_ADDR: u32 = 1u32;
575 pub const ID_IPV6_ADDR: u32 = 5u32;
576 pub const ID_USER_FQDN: u32 = 3u32;
577 #[repr(C)]
578 pub struct IKE_AUTHENTICATION_INFORMATION {
579 pub AuthMethod: IKE_AUTHENTICATION_METHOD,
580 pub Anonymous: IKE_AUTHENTICATION_INFORMATION_0,
581 }
582 impl ::core::marker::Copy for IKE_AUTHENTICATION_INFORMATION {}
583 impl ::core::clone::Clone for IKE_AUTHENTICATION_INFORMATION {
584 fn clone(&self) -> Self {
585 *self
586 }
587 }
588 #[repr(C)]
589 pub union IKE_AUTHENTICATION_INFORMATION_0 {
590 pub PsKey: IKE_AUTHENTICATION_PRESHARED_KEY,
591 }
592 impl ::core::marker::Copy for IKE_AUTHENTICATION_INFORMATION_0 {}
593 impl ::core::clone::Clone for IKE_AUTHENTICATION_INFORMATION_0 {
594 fn clone(&self) -> Self {
595 *self
596 }
597 }
598 pub type IKE_AUTHENTICATION_METHOD = i32;
599 pub const IKE_AUTHENTICATION_PRESHARED_KEY_METHOD: IKE_AUTHENTICATION_METHOD = 1i32;
600 #[repr(C)]
601 pub struct IKE_AUTHENTICATION_PRESHARED_KEY {
602 pub SecurityFlags: u64,
603 pub IdType: u8,
604 pub IdLengthInBytes: u32,
605 pub Id: *mut u8,
606 pub KeyLengthInBytes: u32,
607 pub Key: *mut u8,
608 }
609 impl ::core::marker::Copy for IKE_AUTHENTICATION_PRESHARED_KEY {}
610 impl ::core::clone::Clone for IKE_AUTHENTICATION_PRESHARED_KEY {
611 fn clone(&self) -> Self {
612 *self
613 }
614 }
615 pub const IOCTL_ATA_MINIPORT: u32 = 315444u32;
616 pub const IOCTL_ATA_PASS_THROUGH: u32 = 315436u32;
617 pub const IOCTL_ATA_PASS_THROUGH_DIRECT: u32 = 315440u32;
618 pub const IOCTL_IDE_PASS_THROUGH: u32 = 315432u32;
619 pub const IOCTL_MINIPORT_PROCESS_SERVICE_IRP: u32 = 315448u32;
620 pub const IOCTL_MPIO_PASS_THROUGH_PATH: u32 = 315452u32;
621 pub const IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT: u32 = 315456u32;
622 pub const IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT_EX: u32 = 315472u32;
623 pub const IOCTL_MPIO_PASS_THROUGH_PATH_EX: u32 = 315468u32;
624 pub const IOCTL_SCSI_BASE: u32 = 4u32;
625 pub const IOCTL_SCSI_FREE_DUMP_POINTERS: u32 = 266276u32;
626 pub const IOCTL_SCSI_GET_ADDRESS: u32 = 266264u32;
627 pub const IOCTL_SCSI_GET_CAPABILITIES: u32 = 266256u32;
628 pub const IOCTL_SCSI_GET_DUMP_POINTERS: u32 = 266272u32;
629 pub const IOCTL_SCSI_GET_INQUIRY_DATA: u32 = 266252u32;
630 pub const IOCTL_SCSI_MINIPORT: u32 = 315400u32;
631 pub const IOCTL_SCSI_PASS_THROUGH: u32 = 315396u32;
632 pub const IOCTL_SCSI_PASS_THROUGH_DIRECT: u32 = 315412u32;
633 pub const IOCTL_SCSI_PASS_THROUGH_DIRECT_EX: u32 = 315464u32;
634 pub const IOCTL_SCSI_PASS_THROUGH_EX: u32 = 315460u32;
635 pub const IOCTL_SCSI_RESCAN_BUS: u32 = 266268u32;
636 #[repr(C)]
637 #[cfg(feature = "Win32_Foundation")]
638 pub struct IO_SCSI_CAPABILITIES {
639 pub Length: u32,
640 pub MaximumTransferLength: u32,
641 pub MaximumPhysicalPages: u32,
642 pub SupportedAsynchronousEvents: u32,
643 pub AlignmentMask: u32,
644 pub TaggedQueuing: super::super::Foundation::BOOLEAN,
645 pub AdapterScansDown: super::super::Foundation::BOOLEAN,
646 pub AdapterUsesPio: super::super::Foundation::BOOLEAN,
647 }
648 #[cfg(feature = "Win32_Foundation")]
649 impl ::core::marker::Copy for IO_SCSI_CAPABILITIES {}
650 #[cfg(feature = "Win32_Foundation")]
651 impl ::core::clone::Clone for IO_SCSI_CAPABILITIES {
652 fn clone(&self) -> Self {
653 *self
654 }
655 }
656 pub type ISCSI_AUTH_TYPES = i32;
657 pub const ISCSI_NO_AUTH_TYPE: ISCSI_AUTH_TYPES = 0i32;
658 pub const ISCSI_CHAP_AUTH_TYPE: ISCSI_AUTH_TYPES = 1i32;
659 pub const ISCSI_MUTUAL_CHAP_AUTH_TYPE: ISCSI_AUTH_TYPES = 2i32;
660 #[repr(C)]
661 #[cfg(feature = "Win32_Foundation")]
662 pub struct ISCSI_CONNECTION_INFOA {
663 pub ConnectionId: ISCSI_UNIQUE_SESSION_ID,
664 pub InitiatorAddress: super::super::Foundation::PSTR,
665 pub TargetAddress: super::super::Foundation::PSTR,
666 pub InitiatorSocket: u16,
667 pub TargetSocket: u16,
668 pub CID: [u8; 2],
669 }
670 #[cfg(feature = "Win32_Foundation")]
671 impl ::core::marker::Copy for ISCSI_CONNECTION_INFOA {}
672 #[cfg(feature = "Win32_Foundation")]
673 impl ::core::clone::Clone for ISCSI_CONNECTION_INFOA {
674 fn clone(&self) -> Self {
675 *self
676 }
677 }
678 #[repr(C)]
679 #[cfg(feature = "Win32_Foundation")]
680 pub struct ISCSI_CONNECTION_INFOW {
681 pub ConnectionId: ISCSI_UNIQUE_SESSION_ID,
682 pub InitiatorAddress: super::super::Foundation::PWSTR,
683 pub TargetAddress: super::super::Foundation::PWSTR,
684 pub InitiatorSocket: u16,
685 pub TargetSocket: u16,
686 pub CID: [u8; 2],
687 }
688 #[cfg(feature = "Win32_Foundation")]
689 impl ::core::marker::Copy for ISCSI_CONNECTION_INFOW {}
690 #[cfg(feature = "Win32_Foundation")]
691 impl ::core::clone::Clone for ISCSI_CONNECTION_INFOW {
692 fn clone(&self) -> Self {
693 *self
694 }
695 }
696 #[repr(C)]
697 pub struct ISCSI_CONNECTION_INFO_EX {
698 pub ConnectionId: ISCSI_UNIQUE_SESSION_ID,
699 pub State: u8,
700 pub Protocol: u8,
701 pub HeaderDigest: u8,
702 pub DataDigest: u8,
703 pub MaxRecvDataSegmentLength: u32,
704 pub AuthType: ISCSI_AUTH_TYPES,
705 pub EstimatedThroughput: u64,
706 pub MaxDatagramSize: u32,
707 }
708 impl ::core::marker::Copy for ISCSI_CONNECTION_INFO_EX {}
709 impl ::core::clone::Clone for ISCSI_CONNECTION_INFO_EX {
710 fn clone(&self) -> Self {
711 *self
712 }
713 }
714 #[repr(C)]
715 #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Ioctl"))]
716 pub struct ISCSI_DEVICE_ON_SESSIONA {
717 pub InitiatorName: [super::super::Foundation::CHAR; 256],
718 pub TargetName: [super::super::Foundation::CHAR; 224],
719 pub ScsiAddress: SCSI_ADDRESS,
720 pub DeviceInterfaceType: ::windows_sys::core::GUID,
721 pub DeviceInterfaceName: [super::super::Foundation::CHAR; 260],
722 pub LegacyName: [super::super::Foundation::CHAR; 260],
723 pub StorageDeviceNumber: super::super::System::Ioctl::STORAGE_DEVICE_NUMBER,
724 pub DeviceInstance: u32,
725 }
726 #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Ioctl"))]
727 impl ::core::marker::Copy for ISCSI_DEVICE_ON_SESSIONA {}
728 #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Ioctl"))]
729 impl ::core::clone::Clone for ISCSI_DEVICE_ON_SESSIONA {
730 fn clone(&self) -> Self {
731 *self
732 }
733 }
734 #[repr(C)]
735 #[cfg(feature = "Win32_System_Ioctl")]
736 pub struct ISCSI_DEVICE_ON_SESSIONW {
737 pub InitiatorName: [u16; 256],
738 pub TargetName: [u16; 224],
739 pub ScsiAddress: SCSI_ADDRESS,
740 pub DeviceInterfaceType: ::windows_sys::core::GUID,
741 pub DeviceInterfaceName: [u16; 260],
742 pub LegacyName: [u16; 260],
743 pub StorageDeviceNumber: super::super::System::Ioctl::STORAGE_DEVICE_NUMBER,
744 pub DeviceInstance: u32,
745 }
746 #[cfg(feature = "Win32_System_Ioctl")]
747 impl ::core::marker::Copy for ISCSI_DEVICE_ON_SESSIONW {}
748 #[cfg(feature = "Win32_System_Ioctl")]
749 impl ::core::clone::Clone for ISCSI_DEVICE_ON_SESSIONW {
750 fn clone(&self) -> Self {
751 *self
752 }
753 }
754 pub type ISCSI_DIGEST_TYPES = i32;
755 pub const ISCSI_DIGEST_TYPE_NONE: ISCSI_DIGEST_TYPES = 0i32;
756 pub const ISCSI_DIGEST_TYPE_CRC32C: ISCSI_DIGEST_TYPES = 1i32;
757 pub const ISCSI_LOGIN_FLAG_ALLOW_PORTAL_HOPPING: u32 = 8u32;
758 pub const ISCSI_LOGIN_FLAG_MULTIPATH_ENABLED: u32 = 2u32;
759 pub const ISCSI_LOGIN_FLAG_REQUIRE_IPSEC: u32 = 1u32;
760 pub const ISCSI_LOGIN_FLAG_RESERVED1: u32 = 4u32;
761 pub const ISCSI_LOGIN_FLAG_USE_RADIUS_RESPONSE: u32 = 16u32;
762 pub const ISCSI_LOGIN_FLAG_USE_RADIUS_VERIFICATION: u32 = 32u32;
763 #[repr(C)]
764 pub struct ISCSI_LOGIN_OPTIONS {
765 pub Version: u32,
766 pub InformationSpecified: u32,
767 pub LoginFlags: u32,
768 pub AuthType: ISCSI_AUTH_TYPES,
769 pub HeaderDigest: ISCSI_DIGEST_TYPES,
770 pub DataDigest: ISCSI_DIGEST_TYPES,
771 pub MaximumConnections: u32,
772 pub DefaultTime2Wait: u32,
773 pub DefaultTime2Retain: u32,
774 pub UsernameLength: u32,
775 pub PasswordLength: u32,
776 pub Username: *mut u8,
777 pub Password: *mut u8,
778 }
779 impl ::core::marker::Copy for ISCSI_LOGIN_OPTIONS {}
780 impl ::core::clone::Clone for ISCSI_LOGIN_OPTIONS {
781 fn clone(&self) -> Self {
782 *self
783 }
784 }
785 pub const ISCSI_LOGIN_OPTIONS_AUTH_TYPE: u32 = 128u32;
786 pub const ISCSI_LOGIN_OPTIONS_DATA_DIGEST: u32 = 2u32;
787 pub const ISCSI_LOGIN_OPTIONS_DEFAULT_TIME_2_RETAIN: u32 = 16u32;
788 pub const ISCSI_LOGIN_OPTIONS_DEFAULT_TIME_2_WAIT: u32 = 8u32;
789 pub const ISCSI_LOGIN_OPTIONS_HEADER_DIGEST: u32 = 1u32;
790 pub const ISCSI_LOGIN_OPTIONS_MAXIMUM_CONNECTIONS: u32 = 4u32;
791 pub const ISCSI_LOGIN_OPTIONS_PASSWORD: u32 = 64u32;
792 pub const ISCSI_LOGIN_OPTIONS_USERNAME: u32 = 32u32;
793 pub const ISCSI_LOGIN_OPTIONS_VERSION: u32 = 0u32;
794 pub const ISCSI_SECURITY_FLAG_AGGRESSIVE_MODE_ENABLED: u32 = 8u32;
795 pub const ISCSI_SECURITY_FLAG_IKE_IPSEC_ENABLED: u32 = 2u32;
796 pub const ISCSI_SECURITY_FLAG_MAIN_MODE_ENABLED: u32 = 4u32;
797 pub const ISCSI_SECURITY_FLAG_PFS_ENABLED: u32 = 16u32;
798 pub const ISCSI_SECURITY_FLAG_TRANSPORT_MODE_PREFERRED: u32 = 32u32;
799 pub const ISCSI_SECURITY_FLAG_TUNNEL_MODE_PREFERRED: u32 = 64u32;
800 pub const ISCSI_SECURITY_FLAG_VALID: u32 = 1u32;
801 #[repr(C)]
802 #[cfg(feature = "Win32_Foundation")]
803 pub struct ISCSI_SESSION_INFOA {
804 pub SessionId: ISCSI_UNIQUE_SESSION_ID,
805 pub InitiatorName: super::super::Foundation::PSTR,
806 pub TargetNodeName: super::super::Foundation::PSTR,
807 pub TargetName: super::super::Foundation::PSTR,
808 pub ISID: [u8; 6],
809 pub TSID: [u8; 2],
810 pub ConnectionCount: u32,
811 pub Connections: *mut ISCSI_CONNECTION_INFOA,
812 }
813 #[cfg(feature = "Win32_Foundation")]
814 impl ::core::marker::Copy for ISCSI_SESSION_INFOA {}
815 #[cfg(feature = "Win32_Foundation")]
816 impl ::core::clone::Clone for ISCSI_SESSION_INFOA {
817 fn clone(&self) -> Self {
818 *self
819 }
820 }
821 #[repr(C)]
822 #[cfg(feature = "Win32_Foundation")]
823 pub struct ISCSI_SESSION_INFOW {
824 pub SessionId: ISCSI_UNIQUE_SESSION_ID,
825 pub InitiatorName: super::super::Foundation::PWSTR,
826 pub TargetNodeName: super::super::Foundation::PWSTR,
827 pub TargetName: super::super::Foundation::PWSTR,
828 pub ISID: [u8; 6],
829 pub TSID: [u8; 2],
830 pub ConnectionCount: u32,
831 pub Connections: *mut ISCSI_CONNECTION_INFOW,
832 }
833 #[cfg(feature = "Win32_Foundation")]
834 impl ::core::marker::Copy for ISCSI_SESSION_INFOW {}
835 #[cfg(feature = "Win32_Foundation")]
836 impl ::core::clone::Clone for ISCSI_SESSION_INFOW {
837 fn clone(&self) -> Self {
838 *self
839 }
840 }
841 #[repr(C)]
842 #[cfg(feature = "Win32_Foundation")]
843 pub struct ISCSI_SESSION_INFO_EX {
844 pub SessionId: ISCSI_UNIQUE_SESSION_ID,
845 pub InitialR2t: super::super::Foundation::BOOLEAN,
846 pub ImmediateData: super::super::Foundation::BOOLEAN,
847 pub Type: u8,
848 pub DataSequenceInOrder: super::super::Foundation::BOOLEAN,
849 pub DataPduInOrder: super::super::Foundation::BOOLEAN,
850 pub ErrorRecoveryLevel: u8,
851 pub MaxOutstandingR2t: u32,
852 pub FirstBurstLength: u32,
853 pub MaxBurstLength: u32,
854 pub MaximumConnections: u32,
855 pub ConnectionCount: u32,
856 pub Connections: *mut ISCSI_CONNECTION_INFO_EX,
857 }
858 #[cfg(feature = "Win32_Foundation")]
859 impl ::core::marker::Copy for ISCSI_SESSION_INFO_EX {}
860 #[cfg(feature = "Win32_Foundation")]
861 impl ::core::clone::Clone for ISCSI_SESSION_INFO_EX {
862 fn clone(&self) -> Self {
863 *self
864 }
865 }
866 pub const ISCSI_TARGET_FLAG_HIDE_STATIC_TARGET: u32 = 2u32;
867 pub const ISCSI_TARGET_FLAG_MERGE_TARGET_INFORMATION: u32 = 4u32;
868 #[repr(C)]
869 #[cfg(feature = "Win32_Foundation")]
870 pub struct ISCSI_TARGET_MAPPINGA {
871 pub InitiatorName: [super::super::Foundation::CHAR; 256],
872 pub TargetName: [super::super::Foundation::CHAR; 224],
873 pub OSDeviceName: [super::super::Foundation::CHAR; 260],
874 pub SessionId: ISCSI_UNIQUE_SESSION_ID,
875 pub OSBusNumber: u32,
876 pub OSTargetNumber: u32,
877 pub LUNCount: u32,
878 pub LUNList: *mut SCSI_LUN_LIST,
879 }
880 #[cfg(feature = "Win32_Foundation")]
881 impl ::core::marker::Copy for ISCSI_TARGET_MAPPINGA {}
882 #[cfg(feature = "Win32_Foundation")]
883 impl ::core::clone::Clone for ISCSI_TARGET_MAPPINGA {
884 fn clone(&self) -> Self {
885 *self
886 }
887 }
888 #[repr(C)]
889 pub struct ISCSI_TARGET_MAPPINGW {
890 pub InitiatorName: [u16; 256],
891 pub TargetName: [u16; 224],
892 pub OSDeviceName: [u16; 260],
893 pub SessionId: ISCSI_UNIQUE_SESSION_ID,
894 pub OSBusNumber: u32,
895 pub OSTargetNumber: u32,
896 pub LUNCount: u32,
897 pub LUNList: *mut SCSI_LUN_LIST,
898 }
899 impl ::core::marker::Copy for ISCSI_TARGET_MAPPINGW {}
900 impl ::core::clone::Clone for ISCSI_TARGET_MAPPINGW {
901 fn clone(&self) -> Self {
902 *self
903 }
904 }
905 #[repr(C)]
906 #[cfg(feature = "Win32_Foundation")]
907 pub struct ISCSI_TARGET_PORTALA {
908 pub SymbolicName: [super::super::Foundation::CHAR; 256],
909 pub Address: [super::super::Foundation::CHAR; 256],
910 pub Socket: u16,
911 }
912 #[cfg(feature = "Win32_Foundation")]
913 impl ::core::marker::Copy for ISCSI_TARGET_PORTALA {}
914 #[cfg(feature = "Win32_Foundation")]
915 impl ::core::clone::Clone for ISCSI_TARGET_PORTALA {
916 fn clone(&self) -> Self {
917 *self
918 }
919 }
920 #[repr(C)]
921 pub struct ISCSI_TARGET_PORTALW {
922 pub SymbolicName: [u16; 256],
923 pub Address: [u16; 256],
924 pub Socket: u16,
925 }
926 impl ::core::marker::Copy for ISCSI_TARGET_PORTALW {}
927 impl ::core::clone::Clone for ISCSI_TARGET_PORTALW {
928 fn clone(&self) -> Self {
929 *self
930 }
931 }
932 #[repr(C)]
933 #[cfg(feature = "Win32_Foundation")]
934 pub struct ISCSI_TARGET_PORTAL_GROUPA {
935 pub Count: u32,
936 pub Portals: [ISCSI_TARGET_PORTALA; 1],
937 }
938 #[cfg(feature = "Win32_Foundation")]
939 impl ::core::marker::Copy for ISCSI_TARGET_PORTAL_GROUPA {}
940 #[cfg(feature = "Win32_Foundation")]
941 impl ::core::clone::Clone for ISCSI_TARGET_PORTAL_GROUPA {
942 fn clone(&self) -> Self {
943 *self
944 }
945 }
946 #[repr(C)]
947 pub struct ISCSI_TARGET_PORTAL_GROUPW {
948 pub Count: u32,
949 pub Portals: [ISCSI_TARGET_PORTALW; 1],
950 }
951 impl ::core::marker::Copy for ISCSI_TARGET_PORTAL_GROUPW {}
952 impl ::core::clone::Clone for ISCSI_TARGET_PORTAL_GROUPW {
953 fn clone(&self) -> Self {
954 *self
955 }
956 }
957 #[repr(C)]
958 #[cfg(feature = "Win32_Foundation")]
959 pub struct ISCSI_TARGET_PORTAL_INFOA {
960 pub InitiatorName: [super::super::Foundation::CHAR; 256],
961 pub InitiatorPortNumber: u32,
962 pub SymbolicName: [super::super::Foundation::CHAR; 256],
963 pub Address: [super::super::Foundation::CHAR; 256],
964 pub Socket: u16,
965 }
966 #[cfg(feature = "Win32_Foundation")]
967 impl ::core::marker::Copy for ISCSI_TARGET_PORTAL_INFOA {}
968 #[cfg(feature = "Win32_Foundation")]
969 impl ::core::clone::Clone for ISCSI_TARGET_PORTAL_INFOA {
970 fn clone(&self) -> Self {
971 *self
972 }
973 }
974 #[repr(C)]
975 pub struct ISCSI_TARGET_PORTAL_INFOW {
976 pub InitiatorName: [u16; 256],
977 pub InitiatorPortNumber: u32,
978 pub SymbolicName: [u16; 256],
979 pub Address: [u16; 256],
980 pub Socket: u16,
981 }
982 impl ::core::marker::Copy for ISCSI_TARGET_PORTAL_INFOW {}
983 impl ::core::clone::Clone for ISCSI_TARGET_PORTAL_INFOW {
984 fn clone(&self) -> Self {
985 *self
986 }
987 }
988 #[repr(C)]
989 #[cfg(feature = "Win32_Foundation")]
990 pub struct ISCSI_TARGET_PORTAL_INFO_EXA {
991 pub InitiatorName: [super::super::Foundation::CHAR; 256],
992 pub InitiatorPortNumber: u32,
993 pub SymbolicName: [super::super::Foundation::CHAR; 256],
994 pub Address: [super::super::Foundation::CHAR; 256],
995 pub Socket: u16,
996 pub SecurityFlags: u64,
997 pub LoginOptions: ISCSI_LOGIN_OPTIONS,
998 }
999 #[cfg(feature = "Win32_Foundation")]
1000 impl ::core::marker::Copy for ISCSI_TARGET_PORTAL_INFO_EXA {}
1001 #[cfg(feature = "Win32_Foundation")]
1002 impl ::core::clone::Clone for ISCSI_TARGET_PORTAL_INFO_EXA {
1003 fn clone(&self) -> Self {
1004 *self
1005 }
1006 }
1007 #[repr(C)]
1008 pub struct ISCSI_TARGET_PORTAL_INFO_EXW {
1009 pub InitiatorName: [u16; 256],
1010 pub InitiatorPortNumber: u32,
1011 pub SymbolicName: [u16; 256],
1012 pub Address: [u16; 256],
1013 pub Socket: u16,
1014 pub SecurityFlags: u64,
1015 pub LoginOptions: ISCSI_LOGIN_OPTIONS,
1016 }
1017 impl ::core::marker::Copy for ISCSI_TARGET_PORTAL_INFO_EXW {}
1018 impl ::core::clone::Clone for ISCSI_TARGET_PORTAL_INFO_EXW {
1019 fn clone(&self) -> Self {
1020 *self
1021 }
1022 }
1023 #[repr(C)]
1024 pub struct ISCSI_UNIQUE_SESSION_ID {
1025 pub AdapterUnique: u64,
1026 pub AdapterSpecific: u64,
1027 }
1028 impl ::core::marker::Copy for ISCSI_UNIQUE_SESSION_ID {}
1029 impl ::core::clone::Clone for ISCSI_UNIQUE_SESSION_ID {
1030 fn clone(&self) -> Self {
1031 *self
1032 }
1033 }
1034 #[repr(C)]
1035 pub struct ISCSI_VERSION_INFO {
1036 pub MajorVersion: u32,
1037 pub MinorVersion: u32,
1038 pub BuildNumber: u32,
1039 }
1040 impl ::core::marker::Copy for ISCSI_VERSION_INFO {}
1041 impl ::core::clone::Clone for ISCSI_VERSION_INFO {
1042 fn clone(&self) -> Self {
1043 *self
1044 }
1045 }
1046 pub const MAX_ISCSI_ALIAS_LEN: u32 = 255u32;
1047 pub const MAX_ISCSI_DISCOVERY_DOMAIN_LEN: u32 = 256u32;
1048 pub const MAX_ISCSI_HBANAME_LEN: u32 = 256u32;
1049 pub const MAX_ISCSI_NAME_LEN: u32 = 223u32;
1050 pub const MAX_ISCSI_PORTAL_ADDRESS_LEN: u32 = 256u32;
1051 pub const MAX_ISCSI_PORTAL_ALIAS_LEN: u32 = 256u32;
1052 pub const MAX_ISCSI_PORTAL_NAME_LEN: u32 = 256u32;
1053 pub const MAX_ISCSI_TEXT_ADDRESS_LEN: u32 = 256u32;
1054 pub const MAX_RADIUS_ADDRESS_LEN: u32 = 41u32;
1055 pub const MINIPORT_DSM_NOTIFICATION_VERSION: u32 = 1u32;
1056 pub const MINIPORT_DSM_NOTIFICATION_VERSION_1: u32 = 1u32;
1057 pub const MINIPORT_DSM_NOTIFY_FLAG_BEGIN: u32 = 1u32;
1058 pub const MINIPORT_DSM_NOTIFY_FLAG_END: u32 = 2u32;
1059 pub const MINIPORT_DSM_PROFILE_CRASHDUMP_FILE: u32 = 3u32;
1060 pub const MINIPORT_DSM_PROFILE_HIBERNATION_FILE: u32 = 2u32;
1061 pub const MINIPORT_DSM_PROFILE_PAGE_FILE: u32 = 1u32;
1062 pub const MINIPORT_DSM_PROFILE_UNKNOWN: u32 = 0u32;
1063 pub const MPIO_IOCTL_FLAG_INVOLVE_DSM: u32 = 4u32;
1064 pub const MPIO_IOCTL_FLAG_USE_PATHID: u32 = 1u32;
1065 pub const MPIO_IOCTL_FLAG_USE_SCSIADDRESS: u32 = 2u32;
1066 #[repr(C)]
1067 pub struct MPIO_PASS_THROUGH_PATH {
1068 pub PassThrough: SCSI_PASS_THROUGH,
1069 pub Version: u32,
1070 pub Length: u16,
1071 pub Flags: u8,
1072 pub PortNumber: u8,
1073 pub MpioPathId: u64,
1074 }
1075 impl ::core::marker::Copy for MPIO_PASS_THROUGH_PATH {}
1076 impl ::core::clone::Clone for MPIO_PASS_THROUGH_PATH {
1077 fn clone(&self) -> Self {
1078 *self
1079 }
1080 }
1081 #[repr(C)]
1082 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
1083 pub struct MPIO_PASS_THROUGH_PATH32 {
1084 pub PassThrough: SCSI_PASS_THROUGH32,
1085 pub Version: u32,
1086 pub Length: u16,
1087 pub Flags: u8,
1088 pub PortNumber: u8,
1089 pub MpioPathId: u64,
1090 }
1091 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
1092 impl ::core::marker::Copy for MPIO_PASS_THROUGH_PATH32 {}
1093 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
1094 impl ::core::clone::Clone for MPIO_PASS_THROUGH_PATH32 {
1095 fn clone(&self) -> Self {
1096 *self
1097 }
1098 }
1099 #[repr(C)]
1100 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
1101 pub struct MPIO_PASS_THROUGH_PATH32_EX {
1102 pub PassThroughOffset: u32,
1103 pub Version: u32,
1104 pub Length: u16,
1105 pub Flags: u8,
1106 pub PortNumber: u8,
1107 pub MpioPathId: u64,
1108 }
1109 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
1110 impl ::core::marker::Copy for MPIO_PASS_THROUGH_PATH32_EX {}
1111 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
1112 impl ::core::clone::Clone for MPIO_PASS_THROUGH_PATH32_EX {
1113 fn clone(&self) -> Self {
1114 *self
1115 }
1116 }
1117 #[repr(C)]
1118 pub struct MPIO_PASS_THROUGH_PATH_DIRECT {
1119 pub PassThrough: SCSI_PASS_THROUGH_DIRECT,
1120 pub Version: u32,
1121 pub Length: u16,
1122 pub Flags: u8,
1123 pub PortNumber: u8,
1124 pub MpioPathId: u64,
1125 }
1126 impl ::core::marker::Copy for MPIO_PASS_THROUGH_PATH_DIRECT {}
1127 impl ::core::clone::Clone for MPIO_PASS_THROUGH_PATH_DIRECT {
1128 fn clone(&self) -> Self {
1129 *self
1130 }
1131 }
1132 #[repr(C)]
1133 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
1134 pub struct MPIO_PASS_THROUGH_PATH_DIRECT32 {
1135 pub PassThrough: SCSI_PASS_THROUGH_DIRECT32,
1136 pub Version: u32,
1137 pub Length: u16,
1138 pub Flags: u8,
1139 pub PortNumber: u8,
1140 pub MpioPathId: u64,
1141 }
1142 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
1143 impl ::core::marker::Copy for MPIO_PASS_THROUGH_PATH_DIRECT32 {}
1144 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
1145 impl ::core::clone::Clone for MPIO_PASS_THROUGH_PATH_DIRECT32 {
1146 fn clone(&self) -> Self {
1147 *self
1148 }
1149 }
1150 #[repr(C)]
1151 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
1152 pub struct MPIO_PASS_THROUGH_PATH_DIRECT32_EX {
1153 pub PassThroughOffset: u32,
1154 pub Version: u32,
1155 pub Length: u16,
1156 pub Flags: u8,
1157 pub PortNumber: u8,
1158 pub MpioPathId: u64,
1159 }
1160 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
1161 impl ::core::marker::Copy for MPIO_PASS_THROUGH_PATH_DIRECT32_EX {}
1162 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
1163 impl ::core::clone::Clone for MPIO_PASS_THROUGH_PATH_DIRECT32_EX {
1164 fn clone(&self) -> Self {
1165 *self
1166 }
1167 }
1168 #[repr(C)]
1169 pub struct MPIO_PASS_THROUGH_PATH_DIRECT_EX {
1170 pub PassThroughOffset: u32,
1171 pub Version: u32,
1172 pub Length: u16,
1173 pub Flags: u8,
1174 pub PortNumber: u8,
1175 pub MpioPathId: u64,
1176 }
1177 impl ::core::marker::Copy for MPIO_PASS_THROUGH_PATH_DIRECT_EX {}
1178 impl ::core::clone::Clone for MPIO_PASS_THROUGH_PATH_DIRECT_EX {
1179 fn clone(&self) -> Self {
1180 *self
1181 }
1182 }
1183 #[repr(C)]
1184 pub struct MPIO_PASS_THROUGH_PATH_EX {
1185 pub PassThroughOffset: u32,
1186 pub Version: u32,
1187 pub Length: u16,
1188 pub Flags: u8,
1189 pub PortNumber: u8,
1190 pub MpioPathId: u64,
1191 }
1192 impl ::core::marker::Copy for MPIO_PASS_THROUGH_PATH_EX {}
1193 impl ::core::clone::Clone for MPIO_PASS_THROUGH_PATH_EX {
1194 fn clone(&self) -> Self {
1195 *self
1196 }
1197 }
1198 #[repr(C)]
1199 pub struct MP_DEVICE_DATA_SET_RANGE {
1200 pub StartingOffset: i64,
1201 pub LengthInBytes: u64,
1202 }
1203 impl ::core::marker::Copy for MP_DEVICE_DATA_SET_RANGE {}
1204 impl ::core::clone::Clone for MP_DEVICE_DATA_SET_RANGE {
1205 fn clone(&self) -> Self {
1206 *self
1207 }
1208 }
1209 pub type MP_STORAGE_DIAGNOSTIC_LEVEL = i32;
1210 pub const MpStorageDiagnosticLevelDefault: MP_STORAGE_DIAGNOSTIC_LEVEL = 0i32;
1211 pub const MpStorageDiagnosticLevelMax: MP_STORAGE_DIAGNOSTIC_LEVEL = 1i32;
1212 pub type MP_STORAGE_DIAGNOSTIC_TARGET_TYPE = i32;
1213 pub const MpStorageDiagnosticTargetTypeUndefined: MP_STORAGE_DIAGNOSTIC_TARGET_TYPE = 0i32;
1214 pub const MpStorageDiagnosticTargetTypeMiniport: MP_STORAGE_DIAGNOSTIC_TARGET_TYPE = 2i32;
1215 pub const MpStorageDiagnosticTargetTypeHbaFirmware: MP_STORAGE_DIAGNOSTIC_TARGET_TYPE = 3i32;
1216 pub const MpStorageDiagnosticTargetTypeMax: MP_STORAGE_DIAGNOSTIC_TARGET_TYPE = 4i32;
1217 pub const NRB_FUNCTION_ADD_LBAS_PINNED_SET: u32 = 16u32;
1218 pub const NRB_FUNCTION_FLUSH_NVCACHE: u32 = 20u32;
1219 pub const NRB_FUNCTION_NVCACHE_INFO: u32 = 236u32;
1220 pub const NRB_FUNCTION_NVCACHE_POWER_MODE_RETURN: u32 = 1u32;
1221 pub const NRB_FUNCTION_NVCACHE_POWER_MODE_SET: u32 = 0u32;
1222 pub const NRB_FUNCTION_NVSEPARATED_FLUSH: u32 = 193u32;
1223 pub const NRB_FUNCTION_NVSEPARATED_INFO: u32 = 192u32;
1224 pub const NRB_FUNCTION_NVSEPARATED_WB_DISABLE: u32 = 194u32;
1225 pub const NRB_FUNCTION_NVSEPARATED_WB_REVERT_DEFAULT: u32 = 195u32;
1226 pub const NRB_FUNCTION_PASS_HINT_PAYLOAD: u32 = 224u32;
1227 pub const NRB_FUNCTION_QUERY_ASCENDER_STATUS: u32 = 208u32;
1228 pub const NRB_FUNCTION_QUERY_CACHE_MISS: u32 = 19u32;
1229 pub const NRB_FUNCTION_QUERY_HYBRID_DISK_STATUS: u32 = 209u32;
1230 pub const NRB_FUNCTION_QUERY_PINNED_SET: u32 = 18u32;
1231 pub const NRB_FUNCTION_REMOVE_LBAS_PINNED_SET: u32 = 17u32;
1232 pub const NRB_FUNCTION_SPINDLE_STATUS: u32 = 229u32;
1233 pub const NRB_ILLEGAL_REQUEST: u32 = 1u32;
1234 pub const NRB_INPUT_DATA_OVERRUN: u32 = 3u32;
1235 pub const NRB_INPUT_DATA_UNDERRUN: u32 = 4u32;
1236 pub const NRB_INVALID_PARAMETER: u32 = 2u32;
1237 pub const NRB_OUTPUT_DATA_OVERRUN: u32 = 5u32;
1238 pub const NRB_OUTPUT_DATA_UNDERRUN: u32 = 6u32;
1239 pub const NRB_SUCCESS: u32 = 0u32;
1240 #[repr(C)]
1241 #[cfg(feature = "Win32_Foundation")]
1242 pub struct NTSCSI_UNICODE_STRING {
1243 pub Length: u16,
1244 pub MaximumLength: u16,
1245 pub Buffer: super::super::Foundation::PWSTR,
1246 }
1247 #[cfg(feature = "Win32_Foundation")]
1248 impl ::core::marker::Copy for NTSCSI_UNICODE_STRING {}
1249 #[cfg(feature = "Win32_Foundation")]
1250 impl ::core::clone::Clone for NTSCSI_UNICODE_STRING {
1251 fn clone(&self) -> Self {
1252 *self
1253 }
1254 }
1255 #[repr(C)]
1256 pub struct NVCACHE_HINT_PAYLOAD {
1257 pub Command: u8,
1258 pub Feature7_0: u8,
1259 pub Feature15_8: u8,
1260 pub Count15_8: u8,
1261 pub LBA7_0: u8,
1262 pub LBA15_8: u8,
1263 pub LBA23_16: u8,
1264 pub LBA31_24: u8,
1265 pub LBA39_32: u8,
1266 pub LBA47_40: u8,
1267 pub Auxiliary7_0: u8,
1268 pub Auxiliary23_16: u8,
1269 pub Reserved: [u8; 4],
1270 }
1271 impl ::core::marker::Copy for NVCACHE_HINT_PAYLOAD {}
1272 impl ::core::clone::Clone for NVCACHE_HINT_PAYLOAD {
1273 fn clone(&self) -> Self {
1274 *self
1275 }
1276 }
1277 #[repr(C)]
1278 pub struct NVCACHE_PRIORITY_LEVEL_DESCRIPTOR {
1279 pub PriorityLevel: u8,
1280 pub Reserved0: [u8; 3],
1281 pub ConsumedNVMSizeFraction: u32,
1282 pub ConsumedMappingResourcesFraction: u32,
1283 pub ConsumedNVMSizeForDirtyDataFraction: u32,
1284 pub ConsumedMappingResourcesForDirtyDataFraction: u32,
1285 pub Reserved1: u32,
1286 }
1287 impl ::core::marker::Copy for NVCACHE_PRIORITY_LEVEL_DESCRIPTOR {}
1288 impl ::core::clone::Clone for NVCACHE_PRIORITY_LEVEL_DESCRIPTOR {
1289 fn clone(&self) -> Self {
1290 *self
1291 }
1292 }
1293 #[repr(C)]
1294 pub struct NVCACHE_REQUEST_BLOCK {
1295 pub NRBSize: u32,
1296 pub Function: u16,
1297 pub NRBFlags: u32,
1298 pub NRBStatus: u32,
1299 pub Count: u32,
1300 pub LBA: u64,
1301 pub DataBufSize: u32,
1302 pub NVCacheStatus: u32,
1303 pub NVCacheSubStatus: u32,
1304 }
1305 impl ::core::marker::Copy for NVCACHE_REQUEST_BLOCK {}
1306 impl ::core::clone::Clone for NVCACHE_REQUEST_BLOCK {
1307 fn clone(&self) -> Self {
1308 *self
1309 }
1310 }
1311 pub type NVCACHE_STATUS = i32;
1312 pub const NvCacheStatusUnknown: NVCACHE_STATUS = 0i32;
1313 pub const NvCacheStatusDisabling: NVCACHE_STATUS = 1i32;
1314 pub const NvCacheStatusDisabled: NVCACHE_STATUS = 2i32;
1315 pub const NvCacheStatusEnabled: NVCACHE_STATUS = 3i32;
1316 pub type NVCACHE_TYPE = i32;
1317 pub const NvCacheTypeUnknown: NVCACHE_TYPE = 0i32;
1318 pub const NvCacheTypeNone: NVCACHE_TYPE = 1i32;
1319 pub const NvCacheTypeWriteBack: NVCACHE_TYPE = 2i32;
1320 pub const NvCacheTypeWriteThrough: NVCACHE_TYPE = 3i32;
1321 #[repr(C)]
1322 pub struct NV_FEATURE_PARAMETER {
1323 pub NVPowerModeEnabled: u16,
1324 pub NVParameterReserv1: u16,
1325 pub NVCmdEnabled: u16,
1326 pub NVParameterReserv2: u16,
1327 pub NVPowerModeVer: u16,
1328 pub NVCmdVer: u16,
1329 pub NVSize: u32,
1330 pub NVReadSpeed: u16,
1331 pub NVWrtSpeed: u16,
1332 pub DeviceSpinUpTime: u32,
1333 }
1334 impl ::core::marker::Copy for NV_FEATURE_PARAMETER {}
1335 impl ::core::clone::Clone for NV_FEATURE_PARAMETER {
1336 fn clone(&self) -> Self {
1337 *self
1338 }
1339 }
1340 #[repr(C)]
1341 pub struct NV_SEP_CACHE_PARAMETER {
1342 pub Version: u32,
1343 pub Size: u32,
1344 pub Flags: NV_SEP_CACHE_PARAMETER_0,
1345 pub WriteCacheType: u8,
1346 pub WriteCacheTypeEffective: u8,
1347 pub ParameterReserve1: [u8; 3],
1348 }
1349 impl ::core::marker::Copy for NV_SEP_CACHE_PARAMETER {}
1350 impl ::core::clone::Clone for NV_SEP_CACHE_PARAMETER {
1351 fn clone(&self) -> Self {
1352 *self
1353 }
1354 }
1355 #[repr(C)]
1356 pub union NV_SEP_CACHE_PARAMETER_0 {
1357 pub CacheFlags: NV_SEP_CACHE_PARAMETER_0_0,
1358 pub CacheFlagsSet: u8,
1359 }
1360 impl ::core::marker::Copy for NV_SEP_CACHE_PARAMETER_0 {}
1361 impl ::core::clone::Clone for NV_SEP_CACHE_PARAMETER_0 {
1362 fn clone(&self) -> Self {
1363 *self
1364 }
1365 }
1366 #[repr(C)]
1367 pub struct NV_SEP_CACHE_PARAMETER_0_0 {
1368 pub _bitfield: u8,
1369 }
1370 impl ::core::marker::Copy for NV_SEP_CACHE_PARAMETER_0_0 {}
1371 impl ::core::clone::Clone for NV_SEP_CACHE_PARAMETER_0_0 {
1372 fn clone(&self) -> Self {
1373 *self
1374 }
1375 }
1376 pub const NV_SEP_CACHE_PARAMETER_VERSION: u32 = 1u32;
1377 pub const NV_SEP_CACHE_PARAMETER_VERSION_1: u32 = 1u32;
1378 pub type NV_SEP_WRITE_CACHE_TYPE = i32;
1379 pub const NVSEPWriteCacheTypeUnknown: NV_SEP_WRITE_CACHE_TYPE = 0i32;
1380 pub const NVSEPWriteCacheTypeNone: NV_SEP_WRITE_CACHE_TYPE = 1i32;
1381 pub const NVSEPWriteCacheTypeWriteBack: NV_SEP_WRITE_CACHE_TYPE = 2i32;
1382 pub const NVSEPWriteCacheTypeWriteThrough: NV_SEP_WRITE_CACHE_TYPE = 3i32;
1383 pub type PDUMP_DEVICE_POWERON_ROUTINE = unsafe extern "system" fn() -> i32;
1384 #[repr(C)]
1385 #[cfg(feature = "Win32_Foundation")]
1386 pub struct PERSISTENT_ISCSI_LOGIN_INFOA {
1387 pub TargetName: [super::super::Foundation::CHAR; 224],
1388 pub IsInformationalSession: super::super::Foundation::BOOLEAN,
1389 pub InitiatorInstance: [super::super::Foundation::CHAR; 256],
1390 pub InitiatorPortNumber: u32,
1391 pub TargetPortal: ISCSI_TARGET_PORTALA,
1392 pub SecurityFlags: u64,
1393 pub Mappings: *mut ISCSI_TARGET_MAPPINGA,
1394 pub LoginOptions: ISCSI_LOGIN_OPTIONS,
1395 }
1396 #[cfg(feature = "Win32_Foundation")]
1397 impl ::core::marker::Copy for PERSISTENT_ISCSI_LOGIN_INFOA {}
1398 #[cfg(feature = "Win32_Foundation")]
1399 impl ::core::clone::Clone for PERSISTENT_ISCSI_LOGIN_INFOA {
1400 fn clone(&self) -> Self {
1401 *self
1402 }
1403 }
1404 #[repr(C)]
1405 #[cfg(feature = "Win32_Foundation")]
1406 pub struct PERSISTENT_ISCSI_LOGIN_INFOW {
1407 pub TargetName: [u16; 224],
1408 pub IsInformationalSession: super::super::Foundation::BOOLEAN,
1409 pub InitiatorInstance: [u16; 256],
1410 pub InitiatorPortNumber: u32,
1411 pub TargetPortal: ISCSI_TARGET_PORTALW,
1412 pub SecurityFlags: u64,
1413 pub Mappings: *mut ISCSI_TARGET_MAPPINGW,
1414 pub LoginOptions: ISCSI_LOGIN_OPTIONS,
1415 }
1416 #[cfg(feature = "Win32_Foundation")]
1417 impl ::core::marker::Copy for PERSISTENT_ISCSI_LOGIN_INFOW {}
1418 #[cfg(feature = "Win32_Foundation")]
1419 impl ::core::clone::Clone for PERSISTENT_ISCSI_LOGIN_INFOW {
1420 fn clone(&self) -> Self {
1421 *self
1422 }
1423 }
1424 #[repr(C)]
1425 pub struct SCSI_ADAPTER_BUS_INFO {
1426 pub NumberOfBuses: u8,
1427 pub BusData: [SCSI_BUS_DATA; 1],
1428 }
1429 impl ::core::marker::Copy for SCSI_ADAPTER_BUS_INFO {}
1430 impl ::core::clone::Clone for SCSI_ADAPTER_BUS_INFO {
1431 fn clone(&self) -> Self {
1432 *self
1433 }
1434 }
1435 #[repr(C)]
1436 pub struct SCSI_ADDRESS {
1437 pub Length: u32,
1438 pub PortNumber: u8,
1439 pub PathId: u8,
1440 pub TargetId: u8,
1441 pub Lun: u8,
1442 }
1443 impl ::core::marker::Copy for SCSI_ADDRESS {}
1444 impl ::core::clone::Clone for SCSI_ADDRESS {
1445 fn clone(&self) -> Self {
1446 *self
1447 }
1448 }
1449 #[repr(C)]
1450 pub struct SCSI_BUS_DATA {
1451 pub NumberOfLogicalUnits: u8,
1452 pub InitiatorBusId: u8,
1453 pub InquiryDataOffset: u32,
1454 }
1455 impl ::core::marker::Copy for SCSI_BUS_DATA {}
1456 impl ::core::clone::Clone for SCSI_BUS_DATA {
1457 fn clone(&self) -> Self {
1458 *self
1459 }
1460 }
1461 #[repr(C)]
1462 #[cfg(feature = "Win32_Foundation")]
1463 pub struct SCSI_INQUIRY_DATA {
1464 pub PathId: u8,
1465 pub TargetId: u8,
1466 pub Lun: u8,
1467 pub DeviceClaimed: super::super::Foundation::BOOLEAN,
1468 pub InquiryDataLength: u32,
1469 pub NextInquiryDataOffset: u32,
1470 pub InquiryData: [u8; 1],
1471 }
1472 #[cfg(feature = "Win32_Foundation")]
1473 impl ::core::marker::Copy for SCSI_INQUIRY_DATA {}
1474 #[cfg(feature = "Win32_Foundation")]
1475 impl ::core::clone::Clone for SCSI_INQUIRY_DATA {
1476 fn clone(&self) -> Self {
1477 *self
1478 }
1479 }
1480 pub const SCSI_IOCTL_DATA_BIDIRECTIONAL: u32 = 3u32;
1481 pub const SCSI_IOCTL_DATA_IN: u32 = 1u32;
1482 pub const SCSI_IOCTL_DATA_OUT: u32 = 0u32;
1483 pub const SCSI_IOCTL_DATA_UNSPECIFIED: u32 = 2u32;
1484 #[repr(C)]
1485 pub struct SCSI_LUN_LIST {
1486 pub OSLUN: u32,
1487 pub TargetLUN: u64,
1488 }
1489 impl ::core::marker::Copy for SCSI_LUN_LIST {}
1490 impl ::core::clone::Clone for SCSI_LUN_LIST {
1491 fn clone(&self) -> Self {
1492 *self
1493 }
1494 }
1495 #[repr(C)]
1496 pub struct SCSI_PASS_THROUGH {
1497 pub Length: u16,
1498 pub ScsiStatus: u8,
1499 pub PathId: u8,
1500 pub TargetId: u8,
1501 pub Lun: u8,
1502 pub CdbLength: u8,
1503 pub SenseInfoLength: u8,
1504 pub DataIn: u8,
1505 pub DataTransferLength: u32,
1506 pub TimeOutValue: u32,
1507 pub DataBufferOffset: usize,
1508 pub SenseInfoOffset: u32,
1509 pub Cdb: [u8; 16],
1510 }
1511 impl ::core::marker::Copy for SCSI_PASS_THROUGH {}
1512 impl ::core::clone::Clone for SCSI_PASS_THROUGH {
1513 fn clone(&self) -> Self {
1514 *self
1515 }
1516 }
1517 #[repr(C)]
1518 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
1519 pub struct SCSI_PASS_THROUGH32 {
1520 pub Length: u16,
1521 pub ScsiStatus: u8,
1522 pub PathId: u8,
1523 pub TargetId: u8,
1524 pub Lun: u8,
1525 pub CdbLength: u8,
1526 pub SenseInfoLength: u8,
1527 pub DataIn: u8,
1528 pub DataTransferLength: u32,
1529 pub TimeOutValue: u32,
1530 pub DataBufferOffset: u32,
1531 pub SenseInfoOffset: u32,
1532 pub Cdb: [u8; 16],
1533 }
1534 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
1535 impl ::core::marker::Copy for SCSI_PASS_THROUGH32 {}
1536 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
1537 impl ::core::clone::Clone for SCSI_PASS_THROUGH32 {
1538 fn clone(&self) -> Self {
1539 *self
1540 }
1541 }
1542 #[repr(C)]
1543 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
1544 pub struct SCSI_PASS_THROUGH32_EX {
1545 pub Version: u32,
1546 pub Length: u32,
1547 pub CdbLength: u32,
1548 pub StorAddressLength: u32,
1549 pub ScsiStatus: u8,
1550 pub SenseInfoLength: u8,
1551 pub DataDirection: u8,
1552 pub Reserved: u8,
1553 pub TimeOutValue: u32,
1554 pub StorAddressOffset: u32,
1555 pub SenseInfoOffset: u32,
1556 pub DataOutTransferLength: u32,
1557 pub DataInTransferLength: u32,
1558 pub DataOutBufferOffset: u32,
1559 pub DataInBufferOffset: u32,
1560 pub Cdb: [u8; 1],
1561 }
1562 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
1563 impl ::core::marker::Copy for SCSI_PASS_THROUGH32_EX {}
1564 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
1565 impl ::core::clone::Clone for SCSI_PASS_THROUGH32_EX {
1566 fn clone(&self) -> Self {
1567 *self
1568 }
1569 }
1570 #[repr(C)]
1571 pub struct SCSI_PASS_THROUGH_DIRECT {
1572 pub Length: u16,
1573 pub ScsiStatus: u8,
1574 pub PathId: u8,
1575 pub TargetId: u8,
1576 pub Lun: u8,
1577 pub CdbLength: u8,
1578 pub SenseInfoLength: u8,
1579 pub DataIn: u8,
1580 pub DataTransferLength: u32,
1581 pub TimeOutValue: u32,
1582 pub DataBuffer: *mut ::core::ffi::c_void,
1583 pub SenseInfoOffset: u32,
1584 pub Cdb: [u8; 16],
1585 }
1586 impl ::core::marker::Copy for SCSI_PASS_THROUGH_DIRECT {}
1587 impl ::core::clone::Clone for SCSI_PASS_THROUGH_DIRECT {
1588 fn clone(&self) -> Self {
1589 *self
1590 }
1591 }
1592 #[repr(C)]
1593 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
1594 pub struct SCSI_PASS_THROUGH_DIRECT32 {
1595 pub Length: u16,
1596 pub ScsiStatus: u8,
1597 pub PathId: u8,
1598 pub TargetId: u8,
1599 pub Lun: u8,
1600 pub CdbLength: u8,
1601 pub SenseInfoLength: u8,
1602 pub DataIn: u8,
1603 pub DataTransferLength: u32,
1604 pub TimeOutValue: u32,
1605 pub DataBuffer: *mut ::core::ffi::c_void,
1606 pub SenseInfoOffset: u32,
1607 pub Cdb: [u8; 16],
1608 }
1609 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
1610 impl ::core::marker::Copy for SCSI_PASS_THROUGH_DIRECT32 {}
1611 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
1612 impl ::core::clone::Clone for SCSI_PASS_THROUGH_DIRECT32 {
1613 fn clone(&self) -> Self {
1614 *self
1615 }
1616 }
1617 #[repr(C)]
1618 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
1619 pub struct SCSI_PASS_THROUGH_DIRECT32_EX {
1620 pub Version: u32,
1621 pub Length: u32,
1622 pub CdbLength: u32,
1623 pub StorAddressLength: u32,
1624 pub ScsiStatus: u8,
1625 pub SenseInfoLength: u8,
1626 pub DataDirection: u8,
1627 pub Reserved: u8,
1628 pub TimeOutValue: u32,
1629 pub StorAddressOffset: u32,
1630 pub SenseInfoOffset: u32,
1631 pub DataOutTransferLength: u32,
1632 pub DataInTransferLength: u32,
1633 pub DataOutBuffer: *mut ::core::ffi::c_void,
1634 pub DataInBuffer: *mut ::core::ffi::c_void,
1635 pub Cdb: [u8; 1],
1636 }
1637 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
1638 impl ::core::marker::Copy for SCSI_PASS_THROUGH_DIRECT32_EX {}
1639 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64",))]
1640 impl ::core::clone::Clone for SCSI_PASS_THROUGH_DIRECT32_EX {
1641 fn clone(&self) -> Self {
1642 *self
1643 }
1644 }
1645 #[repr(C)]
1646 pub struct SCSI_PASS_THROUGH_DIRECT_EX {
1647 pub Version: u32,
1648 pub Length: u32,
1649 pub CdbLength: u32,
1650 pub StorAddressLength: u32,
1651 pub ScsiStatus: u8,
1652 pub SenseInfoLength: u8,
1653 pub DataDirection: u8,
1654 pub Reserved: u8,
1655 pub TimeOutValue: u32,
1656 pub StorAddressOffset: u32,
1657 pub SenseInfoOffset: u32,
1658 pub DataOutTransferLength: u32,
1659 pub DataInTransferLength: u32,
1660 pub DataOutBuffer: *mut ::core::ffi::c_void,
1661 pub DataInBuffer: *mut ::core::ffi::c_void,
1662 pub Cdb: [u8; 1],
1663 }
1664 impl ::core::marker::Copy for SCSI_PASS_THROUGH_DIRECT_EX {}
1665 impl ::core::clone::Clone for SCSI_PASS_THROUGH_DIRECT_EX {
1666 fn clone(&self) -> Self {
1667 *self
1668 }
1669 }
1670 #[repr(C)]
1671 pub struct SCSI_PASS_THROUGH_EX {
1672 pub Version: u32,
1673 pub Length: u32,
1674 pub CdbLength: u32,
1675 pub StorAddressLength: u32,
1676 pub ScsiStatus: u8,
1677 pub SenseInfoLength: u8,
1678 pub DataDirection: u8,
1679 pub Reserved: u8,
1680 pub TimeOutValue: u32,
1681 pub StorAddressOffset: u32,
1682 pub SenseInfoOffset: u32,
1683 pub DataOutTransferLength: u32,
1684 pub DataInTransferLength: u32,
1685 pub DataOutBufferOffset: usize,
1686 pub DataInBufferOffset: usize,
1687 pub Cdb: [u8; 1],
1688 }
1689 impl ::core::marker::Copy for SCSI_PASS_THROUGH_EX {}
1690 impl ::core::clone::Clone for SCSI_PASS_THROUGH_EX {
1691 fn clone(&self) -> Self {
1692 *self
1693 }
1694 }
1695 #[repr(C)]
1696 pub struct SRB_IO_CONTROL {
1697 pub HeaderLength: u32,
1698 pub Signature: [u8; 8],
1699 pub Timeout: u32,
1700 pub ControlCode: u32,
1701 pub ReturnCode: u32,
1702 pub Length: u32,
1703 }
1704 impl ::core::marker::Copy for SRB_IO_CONTROL {}
1705 impl ::core::clone::Clone for SRB_IO_CONTROL {
1706 fn clone(&self) -> Self {
1707 *self
1708 }
1709 }
1710 #[repr(C)]
1711 pub struct STORAGE_DIAGNOSTIC_MP_REQUEST {
1712 pub Version: u32,
1713 pub Size: u32,
1714 pub TargetType: MP_STORAGE_DIAGNOSTIC_TARGET_TYPE,
1715 pub Level: MP_STORAGE_DIAGNOSTIC_LEVEL,
1716 pub ProviderId: ::windows_sys::core::GUID,
1717 pub BufferSize: u32,
1718 pub Reserved: u32,
1719 pub DataBuffer: [u8; 1],
1720 }
1721 impl ::core::marker::Copy for STORAGE_DIAGNOSTIC_MP_REQUEST {}
1722 impl ::core::clone::Clone for STORAGE_DIAGNOSTIC_MP_REQUEST {
1723 fn clone(&self) -> Self {
1724 *self
1725 }
1726 }
1727 pub const STORAGE_DIAGNOSTIC_STATUS_BUFFER_TOO_SMALL: u32 = 1u32;
1728 pub const STORAGE_DIAGNOSTIC_STATUS_INVALID_PARAMETER: u32 = 3u32;
1729 pub const STORAGE_DIAGNOSTIC_STATUS_INVALID_SIGNATURE: u32 = 4u32;
1730 pub const STORAGE_DIAGNOSTIC_STATUS_INVALID_TARGET_TYPE: u32 = 5u32;
1731 pub const STORAGE_DIAGNOSTIC_STATUS_MORE_DATA: u32 = 6u32;
1732 pub const STORAGE_DIAGNOSTIC_STATUS_SUCCESS: u32 = 0u32;
1733 pub const STORAGE_DIAGNOSTIC_STATUS_UNSUPPORTED_VERSION: u32 = 2u32;
1734 #[repr(C)]
1735 pub struct STORAGE_ENDURANCE_DATA_DESCRIPTOR {
1736 pub Version: u32,
1737 pub Size: u32,
1738 pub EnduranceInfo: STORAGE_ENDURANCE_INFO,
1739 }
1740 impl ::core::marker::Copy for STORAGE_ENDURANCE_DATA_DESCRIPTOR {}
1741 impl ::core::clone::Clone for STORAGE_ENDURANCE_DATA_DESCRIPTOR {
1742 fn clone(&self) -> Self {
1743 *self
1744 }
1745 }
1746 #[repr(C)]
1747 pub struct STORAGE_ENDURANCE_INFO {
1748 pub ValidFields: u32,
1749 pub GroupId: u32,
1750 pub Flags: STORAGE_ENDURANCE_INFO_0,
1751 pub LifePercentage: u32,
1752 pub BytesReadCount: [u8; 16],
1753 pub ByteWriteCount: [u8; 16],
1754 }
1755 impl ::core::marker::Copy for STORAGE_ENDURANCE_INFO {}
1756 impl ::core::clone::Clone for STORAGE_ENDURANCE_INFO {
1757 fn clone(&self) -> Self {
1758 *self
1759 }
1760 }
1761 #[repr(C)]
1762 pub struct STORAGE_ENDURANCE_INFO_0 {
1763 pub _bitfield: u32,
1764 }
1765 impl ::core::marker::Copy for STORAGE_ENDURANCE_INFO_0 {}
1766 impl ::core::clone::Clone for STORAGE_ENDURANCE_INFO_0 {
1767 fn clone(&self) -> Self {
1768 *self
1769 }
1770 }
1771 #[repr(C)]
1772 pub struct STORAGE_FIRMWARE_ACTIVATE {
1773 pub Version: u32,
1774 pub Size: u32,
1775 pub SlotToActivate: u8,
1776 pub Reserved0: [u8; 3],
1777 }
1778 impl ::core::marker::Copy for STORAGE_FIRMWARE_ACTIVATE {}
1779 impl ::core::clone::Clone for STORAGE_FIRMWARE_ACTIVATE {
1780 fn clone(&self) -> Self {
1781 *self
1782 }
1783 }
1784 pub const STORAGE_FIRMWARE_ACTIVATE_STRUCTURE_VERSION: u32 = 1u32;
1785 #[repr(C)]
1786 pub struct STORAGE_FIRMWARE_DOWNLOAD {
1787 pub Version: u32,
1788 pub Size: u32,
1789 pub Offset: u64,
1790 pub BufferSize: u64,
1791 pub ImageBuffer: [u8; 1],
1792 }
1793 impl ::core::marker::Copy for STORAGE_FIRMWARE_DOWNLOAD {}
1794 impl ::core::clone::Clone for STORAGE_FIRMWARE_DOWNLOAD {
1795 fn clone(&self) -> Self {
1796 *self
1797 }
1798 }
1799 pub const STORAGE_FIRMWARE_DOWNLOAD_STRUCTURE_VERSION: u32 = 1u32;
1800 pub const STORAGE_FIRMWARE_DOWNLOAD_STRUCTURE_VERSION_V2: u32 = 2u32;
1801 #[repr(C)]
1802 pub struct STORAGE_FIRMWARE_DOWNLOAD_V2 {
1803 pub Version: u32,
1804 pub Size: u32,
1805 pub Offset: u64,
1806 pub BufferSize: u64,
1807 pub Slot: u8,
1808 pub Reserved: [u8; 3],
1809 pub ImageSize: u32,
1810 pub ImageBuffer: [u8; 1],
1811 }
1812 impl ::core::marker::Copy for STORAGE_FIRMWARE_DOWNLOAD_V2 {}
1813 impl ::core::clone::Clone for STORAGE_FIRMWARE_DOWNLOAD_V2 {
1814 fn clone(&self) -> Self {
1815 *self
1816 }
1817 }
1818 #[repr(C)]
1819 #[cfg(feature = "Win32_Foundation")]
1820 pub struct STORAGE_FIRMWARE_INFO {
1821 pub Version: u32,
1822 pub Size: u32,
1823 pub UpgradeSupport: super::super::Foundation::BOOLEAN,
1824 pub SlotCount: u8,
1825 pub ActiveSlot: u8,
1826 pub PendingActivateSlot: u8,
1827 pub Reserved: u32,
1828 pub Slot: [STORAGE_FIRMWARE_SLOT_INFO; 1],
1829 }
1830 #[cfg(feature = "Win32_Foundation")]
1831 impl ::core::marker::Copy for STORAGE_FIRMWARE_INFO {}
1832 #[cfg(feature = "Win32_Foundation")]
1833 impl ::core::clone::Clone for STORAGE_FIRMWARE_INFO {
1834 fn clone(&self) -> Self {
1835 *self
1836 }
1837 }
1838 pub const STORAGE_FIRMWARE_INFO_INVALID_SLOT: u32 = 255u32;
1839 pub const STORAGE_FIRMWARE_INFO_STRUCTURE_VERSION: u32 = 1u32;
1840 pub const STORAGE_FIRMWARE_INFO_STRUCTURE_VERSION_V2: u32 = 2u32;
1841 #[repr(C)]
1842 #[cfg(feature = "Win32_Foundation")]
1843 pub struct STORAGE_FIRMWARE_INFO_V2 {
1844 pub Version: u32,
1845 pub Size: u32,
1846 pub UpgradeSupport: super::super::Foundation::BOOLEAN,
1847 pub SlotCount: u8,
1848 pub ActiveSlot: u8,
1849 pub PendingActivateSlot: u8,
1850 pub FirmwareShared: super::super::Foundation::BOOLEAN,
1851 pub Reserved: [u8; 3],
1852 pub ImagePayloadAlignment: u32,
1853 pub ImagePayloadMaxSize: u32,
1854 pub Slot: [STORAGE_FIRMWARE_SLOT_INFO_V2; 1],
1855 }
1856 #[cfg(feature = "Win32_Foundation")]
1857 impl ::core::marker::Copy for STORAGE_FIRMWARE_INFO_V2 {}
1858 #[cfg(feature = "Win32_Foundation")]
1859 impl ::core::clone::Clone for STORAGE_FIRMWARE_INFO_V2 {
1860 fn clone(&self) -> Self {
1861 *self
1862 }
1863 }
1864 #[repr(C)]
1865 #[cfg(feature = "Win32_Foundation")]
1866 pub struct STORAGE_FIRMWARE_SLOT_INFO {
1867 pub SlotNumber: u8,
1868 pub ReadOnly: super::super::Foundation::BOOLEAN,
1869 pub Reserved: [u8; 6],
1870 pub Revision: STORAGE_FIRMWARE_SLOT_INFO_0,
1871 }
1872 #[cfg(feature = "Win32_Foundation")]
1873 impl ::core::marker::Copy for STORAGE_FIRMWARE_SLOT_INFO {}
1874 #[cfg(feature = "Win32_Foundation")]
1875 impl ::core::clone::Clone for STORAGE_FIRMWARE_SLOT_INFO {
1876 fn clone(&self) -> Self {
1877 *self
1878 }
1879 }
1880 #[repr(C)]
1881 #[cfg(feature = "Win32_Foundation")]
1882 pub union STORAGE_FIRMWARE_SLOT_INFO_0 {
1883 pub Info: [u8; 8],
1884 pub AsUlonglong: u64,
1885 }
1886 #[cfg(feature = "Win32_Foundation")]
1887 impl ::core::marker::Copy for STORAGE_FIRMWARE_SLOT_INFO_0 {}
1888 #[cfg(feature = "Win32_Foundation")]
1889 impl ::core::clone::Clone for STORAGE_FIRMWARE_SLOT_INFO_0 {
1890 fn clone(&self) -> Self {
1891 *self
1892 }
1893 }
1894 #[repr(C)]
1895 #[cfg(feature = "Win32_Foundation")]
1896 pub struct STORAGE_FIRMWARE_SLOT_INFO_V2 {
1897 pub SlotNumber: u8,
1898 pub ReadOnly: super::super::Foundation::BOOLEAN,
1899 pub Reserved: [u8; 6],
1900 pub Revision: [u8; 16],
1901 }
1902 #[cfg(feature = "Win32_Foundation")]
1903 impl ::core::marker::Copy for STORAGE_FIRMWARE_SLOT_INFO_V2 {}
1904 #[cfg(feature = "Win32_Foundation")]
1905 impl ::core::clone::Clone for STORAGE_FIRMWARE_SLOT_INFO_V2 {
1906 fn clone(&self) -> Self {
1907 *self
1908 }
1909 }
1910 pub const STORAGE_FIRMWARE_SLOT_INFO_V2_REVISION_LENGTH: u32 = 16u32;
1911 pub const ScsiRawInterfaceGuid: ::windows_sys::core::GUID = ::windows_sys::core::GUID { data1: 1408590601, data2: 46783, data3: 4560, data4: [148, 242, 0, 160, 201, 30, 251, 139] };
1912 pub type TARGETPROTOCOLTYPE = i32;
1913 pub const ISCSI_TCP_PROTOCOL_TYPE: TARGETPROTOCOLTYPE = 0i32;
1914 pub type TARGET_INFORMATION_CLASS = i32;
1915 pub const ProtocolType: TARGET_INFORMATION_CLASS = 0i32;
1916 pub const TargetAlias: TARGET_INFORMATION_CLASS = 1i32;
1917 pub const DiscoveryMechanisms: TARGET_INFORMATION_CLASS = 2i32;
1918 pub const PortalGroups: TARGET_INFORMATION_CLASS = 3i32;
1919 pub const PersistentTargetMappings: TARGET_INFORMATION_CLASS = 4i32;
1920 pub const InitiatorName: TARGET_INFORMATION_CLASS = 5i32;
1921 pub const TargetFlags: TARGET_INFORMATION_CLASS = 6i32;
1922 pub const LoginOptions: TARGET_INFORMATION_CLASS = 7i32;
1923 pub const WmiScsiAddressGuid: ::windows_sys::core::GUID = ::windows_sys::core::GUID { data1: 1408590607, data2: 46783, data3: 4560, data4: [148, 242, 0, 160, 201, 30, 251, 139] };
1924 #[repr(C)]
1925 pub struct _ADAPTER_OBJECT(pub u8);