Struct ata::AtaIdentifyData
source · #[repr(packed(1))]pub struct AtaIdentifyData {Show 87 fields
pub general_configuration: u16,
pub num_cylinders: u16,
pub specific_configuration: u16,
pub num_heads: u16,
pub num_sectors_per_track: u16,
pub vendor_unique1: [u16; 3],
pub serial_number: AtaSerialNumber,
pub firmware_version: AtaFirmwareVersion,
pub model_number: AtaModelNumber,
pub max_blocks_per_transfer: u8,
pub vendor_unique2: u8,
pub trusted_computing: u16,
pub capabilities: u16,
pub translation_fields_valid: u8,
pub free_fall_control_sensitivity: u8,
pub num_current_cylinders: u16,
pub num_current_heads: u16,
pub current_sectors_per_track: u16,
pub current_sector_capacity: u32,
pub current_multi_sector_setting: u8,
pub ext_command_supported: u8,
pub user_addressable_sectors: u32,
pub multiword_dma_support: u8,
pub multiword_dma_active: u8,
pub advanced_pio_modes: u8,
pub minimum_mw_transfer_cycle_time: u16,
pub recommended_mw_transfer_cycle_time: u16,
pub minimum_pio_cycle_time: u16,
pub minimum_pio_cycle_time_io_ready: u16,
pub additional_supported: u16,
pub queue_depth: u16,
pub serial_ata_capabilities: u32,
pub serial_ata_features_supported: u16,
pub serial_ata_features_enabled: u16,
pub major_revision: u16,
pub minor_revision: u16,
pub command_set_support: [u16; 3],
pub command_set_active: [u16; 3],
pub ultra_dma_support: u8,
pub ultra_dma_active: u8,
pub normal_security_erase_unit: u16,
pub enhanced_security_erase_unit: u16,
pub current_apm_level: u8,
pub master_password_id: u16,
pub hardware_reset_result: u16,
pub current_acoustic_value: u8,
pub recommended_acoustic_value: u8,
pub stream_min_request_size: u16,
pub streaming_transfer_time_dma: u16,
pub streaming_access_latency_dma_pio: u16,
pub streaming_perf_granularity: u32,
pub max_48_bit_lba: u64,
pub streaming_transfer_time: u16,
pub dsm_cap: u16,
pub physical_logical_sector_size: u16,
pub inter_seek_delay: u16,
pub world_wide_name: [u16; 4],
pub reserved_for_world_wide_name_128: [u16; 4],
pub reserved_for_tlc_technical_report: u16,
pub words_per_logical_sector: u32,
pub command_set_support_ext: u16,
pub command_set_active_ext: u16,
pub reserved_for_expanded_support_and_active: [u16; 6],
pub msn_support: u16,
pub security_status: u16,
pub cfa_power_mode1: u16,
pub nominal_form_factor: u16,
pub data_set_management_feature: u16,
pub additional_product_id: [u16; 4],
pub current_media_serial_number: [u16; 30],
pub sct_command_transport: u16,
pub block_alignment: u16,
pub write_read_verify_sector_count_mode_3_only: [u16; 2],
pub write_read_verify_sector_count_mode_2_only: [u16; 2],
pub nv_cache_capabilities: u16,
pub nv_cache_size_lsw: u16,
pub nv_cache_size_msw: u16,
pub nominal_media_rotation_rate: u16,
pub nv_cache_time_to_spin_up_in_seconds: u8,
pub write_read_verify_sector_count_mode: u8,
pub transport_major_version: u16,
pub transport_minor_version: u16,
pub extended_num_of_user_addressable_sectors: u64,
pub min_blocks_per_download_microcode: u16,
pub max_blocks_per_download_microcode: u16,
pub signature: u8,
pub checksum: u8,
/* private fields */
}
Expand description
Information that describes an ATA drive, obtained from the response to an identify command.
Fuller documentation is available here: https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/content/ata/ns-ata-_identify_device_data#members
Fields§
§general_configuration: u16
§num_cylinders: u16
§specific_configuration: u16
§num_heads: u16
§num_sectors_per_track: u16
§vendor_unique1: [u16; 3]
§serial_number: AtaSerialNumber
§firmware_version: AtaFirmwareVersion
§model_number: AtaModelNumber
§max_blocks_per_transfer: u8
Maximum number of blocks per transfer. Sometimes referred to as “sectors per int”.
vendor_unique2: u8
§trusted_computing: u16
§capabilities: u16
§translation_fields_valid: u8
A bitmask of translation fields valid and free fall control sensitivity
free_fall_control_sensitivity: u8
§num_current_cylinders: u16
§num_current_heads: u16
§current_sectors_per_track: u16
§current_sector_capacity: u32
§current_multi_sector_setting: u8
§ext_command_supported: u8
MultiSectorSettingValid : 1; ReservedByte59 : 3; SanitizeFeatureSupported : 1; CryptoScrambleExtCommandSupported : 1; OverwriteExtCommandSupported : 1; BlockEraseExtCommandSupported : 1;
user_addressable_sectors: u32
Number of sectors in the drive, if using 28-bit LBA.
This can be used to calculate the size of the drive.
If zero, we’re using 48-bit LBA, so you should use max_48_bit_lba
.
multiword_dma_support: u8
§multiword_dma_active: u8
§advanced_pio_modes: u8
§minimum_mw_transfer_cycle_time: u16
§recommended_mw_transfer_cycle_time: u16
§minimum_pio_cycle_time: u16
§minimum_pio_cycle_time_io_ready: u16
§additional_supported: u16
§queue_depth: u16
only the first 5 bits are used, others are reserved
serial_ata_capabilities: u32
§serial_ata_features_supported: u16
§serial_ata_features_enabled: u16
§major_revision: u16
§minor_revision: u16
§command_set_support: [u16; 3]
§command_set_active: [u16; 3]
§ultra_dma_support: u8
§ultra_dma_active: u8
§normal_security_erase_unit: u16
§enhanced_security_erase_unit: u16
§current_apm_level: u8
§master_password_id: u16
§hardware_reset_result: u16
§current_acoustic_value: u8
§recommended_acoustic_value: u8
§stream_min_request_size: u16
§streaming_transfer_time_dma: u16
§streaming_access_latency_dma_pio: u16
§streaming_perf_granularity: u32
§max_48_bit_lba: u64
Number of sectors in the drive, if using 48-bit LBA. This can be used to calculate the size of the drive.
streaming_transfer_time: u16
§dsm_cap: u16
§physical_logical_sector_size: u16
[0:3]
Physical sector size (in logical sectors)
inter_seek_delay: u16
§world_wide_name: [u16; 4]
§reserved_for_world_wide_name_128: [u16; 4]
§reserved_for_tlc_technical_report: u16
§words_per_logical_sector: u32
§command_set_support_ext: u16
§command_set_active_ext: u16
§reserved_for_expanded_support_and_active: [u16; 6]
§msn_support: u16
§security_status: u16
§cfa_power_mode1: u16
§nominal_form_factor: u16
§data_set_management_feature: u16
§additional_product_id: [u16; 4]
§current_media_serial_number: [u16; 30]
§sct_command_transport: u16
§block_alignment: u16
§write_read_verify_sector_count_mode_3_only: [u16; 2]
§write_read_verify_sector_count_mode_2_only: [u16; 2]
§nv_cache_capabilities: u16
§nv_cache_size_lsw: u16
§nv_cache_size_msw: u16
§nominal_media_rotation_rate: u16
§nv_cache_time_to_spin_up_in_seconds: u8
§write_read_verify_sector_count_mode: u8
§transport_major_version: u16
§transport_minor_version: u16
§extended_num_of_user_addressable_sectors: u64
§min_blocks_per_download_microcode: u16
§max_blocks_per_download_microcode: u16
§signature: u8
§checksum: u8
Trait Implementations§
source§impl Clone for AtaIdentifyData
impl Clone for AtaIdentifyData
source§fn clone(&self) -> AtaIdentifyData
fn clone(&self) -> AtaIdentifyData
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for AtaIdentifyData
impl Debug for AtaIdentifyData
source§impl Default for AtaIdentifyData
impl Default for AtaIdentifyData
source§fn default() -> AtaIdentifyData
fn default() -> AtaIdentifyData
impl Copy for AtaIdentifyData
Auto Trait Implementations§
impl RefUnwindSafe for AtaIdentifyData
impl Send for AtaIdentifyData
impl Sync for AtaIdentifyData
impl Unpin for AtaIdentifyData
impl UnwindSafe for AtaIdentifyData
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T, Global>) -> Rc<dyn Any, Global>
fn into_any_rc(self: Rc<T, Global>) -> Rc<dyn Any, Global>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.