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

source§

fn clone(&self) -> AtaIdentifyData

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for AtaIdentifyData

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for AtaIdentifyData

source§

fn default() -> AtaIdentifyData

Returns the “default value” for a type. Read more
source§

impl Copy for AtaIdentifyData

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Downcast for Twhere T: Any,

§

fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>

Convert 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>

Convert 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)

Convert &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)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for Twhere T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T, Global>) -> Arc<dyn Any + Send + Sync, Global>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.