613#define IDE_LBA_MODE (1 << 6)
615#define IDE_DC_DISABLE_INTERRUPTS 0x02
616#define IDE_DC_RESET_CONTROLLER 0x04
617#define IDE_DC_REENABLE_CONTROLLER 0x00
619#define IDE_STATUS_ERROR 0x01
620#define IDE_STATUS_INDEX 0x02
621#define IDE_STATUS_CORRECTED_ERROR 0x04
622#define IDE_STATUS_DRQ 0x08
623#define IDE_STATUS_DSC 0x10
624#define IDE_STATUS_DEVICE_FAULT 0x20
625#define IDE_STATUS_DRDY 0x40
626#define IDE_STATUS_IDLE 0x50
627#define IDE_STATUS_BUSY 0x80
629#define IDE_ERROR_ILLEGAL_LENGTH 0x01
630#define IDE_ERROR_ADDRESS_NOT_FOUND IDE_ERROR_ILLEGAL_LENGTH
631#define IDE_ERROR_END_OF_MEDIA 0x02
632#define IDE_ERROR_COMMAND_ABORTED 0x04
633#define IDE_ERROR_MEDIA_CHANGE_REQ 0x08
634#define IDE_ERROR_ID_NOT_FOUND 0x10
635#define IDE_ERROR_MEDIA_CHANGE 0x20
636#define IDE_ERROR_DATA_ERROR 0x40
637#define IDE_ERROR_BAD_BLOCK 0x80
638#define IDE_ERROR_CRC_ERROR IDE_ERROR_BAD_BLOCK
640#define IDE_COMMAND_NOP 0x00
641#define IDE_COMMAND_DATA_SET_MANAGEMENT 0x06
642#define IDE_COMMAND_ATAPI_RESET 0x08
643#define IDE_COMMAND_GET_PHYSICAL_ELEMENT_STATUS 0x12
644#define IDE_COMMAND_READ 0x20
645#define IDE_COMMAND_READ_EXT 0x24
646#define IDE_COMMAND_READ_DMA_EXT 0x25
647#define IDE_COMMAND_READ_DMA_QUEUED_EXT 0x26
648#define IDE_COMMAND_READ_MULTIPLE_EXT 0x29
649#define IDE_COMMAND_READ_LOG_EXT 0x2F
650#define IDE_COMMAND_WRITE 0x30
651#define IDE_COMMAND_WRITE_EXT 0x34
652#define IDE_COMMAND_WRITE_DMA_EXT 0x35
653#define IDE_COMMAND_WRITE_DMA_QUEUED_EXT 0x36
654#define IDE_COMMAND_WRITE_MULTIPLE_EXT 0x39
655#define IDE_COMMAND_WRITE_DMA_FUA_EXT 0x3D
656#define IDE_COMMAND_WRITE_DMA_QUEUED_FUA_EXT 0x3E
657#define IDE_COMMAND_WRITE_LOG_EXT 0x3F
658#define IDE_COMMAND_VERIFY 0x40
659#define IDE_COMMAND_VERIFY_EXT 0x42
660#define IDE_COMMAND_ZAC_MANAGEMENT_IN 0x4A
661#define IDE_COMMAND_WRITE_LOG_DMA_EXT 0x57
662#define IDE_COMMAND_TRUSTED_NON_DATA 0x5B
663#define IDE_COMMAND_TRUSTED_RECEIVE 0x5C
664#define IDE_COMMAND_TRUSTED_RECEIVE_DMA 0x5D
665#define IDE_COMMAND_TRUSTED_SEND 0x5E
666#define IDE_COMMAND_TRUSTED_SEND_DMA 0x5F
667#define IDE_COMMAND_READ_FPDMA_QUEUED 0x60
668#define IDE_COMMAND_WRITE_FPDMA_QUEUED 0x61
669#define IDE_COMMAND_NCQ_NON_DATA 0x63
670#define IDE_COMMAND_SEND_FPDMA_QUEUED 0x64
671#define IDE_COMMAND_RECEIVE_FPDMA_QUEUED 0x65
672#define IDE_COMMAND_SET_DATE_AND_TIME 0x77
673#define IDE_COMMAND_REMOVE_ELEMENT_AND_TRUNCATE 0x7C
674#define IDE_COMMAND_EXECUTE_DEVICE_DIAGNOSTIC 0x90
675#define IDE_COMMAND_SET_DRIVE_PARAMETERS 0x91
676#define IDE_COMMAND_DOWNLOAD_MICROCODE 0x92
677#define IDE_COMMAND_DOWNLOAD_MICROCODE_DMA 0x93
678#define IDE_COMMAND_ZAC_MANAGEMENT_OUT 0x9F
679#define IDE_COMMAND_ATAPI_PACKET 0xA0
680#define IDE_COMMAND_ATAPI_IDENTIFY 0xA1
681#define IDE_COMMAND_SMART 0xB0
682#define IDE_COMMAND_READ_LOG_DMA_EXT 0xB1
683#define IDE_COMMAND_SANITIZE_DEVICE 0xB4
684#define IDE_COMMAND_READ_MULTIPLE 0xC4
685#define IDE_COMMAND_WRITE_MULTIPLE 0xC5
686#define IDE_COMMAND_SET_MULTIPLE 0xC6
687#define IDE_COMMAND_READ_DMA 0xC8
688#define IDE_COMMAND_WRITE_DMA 0xCA
689#define IDE_COMMAND_WRITE_DMA_QUEUED 0xCC
690#define IDE_COMMAND_WRITE_MULTIPLE_FUA_EXT 0xCE
691#define IDE_COMMAND_GET_MEDIA_STATUS 0xDA
692#define IDE_COMMAND_DOOR_LOCK 0xDE
693#define IDE_COMMAND_DOOR_UNLOCK 0xDF
694#define IDE_COMMAND_STANDBY_IMMEDIATE 0xE0
695#define IDE_COMMAND_IDLE_IMMEDIATE 0xE1
696#define IDE_COMMAND_CHECK_POWER 0xE5
697#define IDE_COMMAND_SLEEP 0xE6
698#define IDE_COMMAND_FLUSH_CACHE 0xE7
699#define IDE_COMMAND_FLUSH_CACHE_EXT 0xEA
700#define IDE_COMMAND_IDENTIFY 0xEC
701#define IDE_COMMAND_MEDIA_EJECT 0xED
702#define IDE_COMMAND_SET_FEATURE 0xEF
703#define IDE_COMMAND_SECURITY_SET_PASSWORD 0xF1
704#define IDE_COMMAND_SECURITY_UNLOCK 0xF2
705#define IDE_COMMAND_SECURITY_ERASE_PREPARE 0xF3
706#define IDE_COMMAND_SECURITY_ERASE_UNIT 0xF4
707#define IDE_COMMAND_SECURITY_FREEZE_LOCK 0xF5
708#define IDE_COMMAND_SECURITY_DISABLE_PASSWORD 0xF6
709#define IDE_COMMAND_NOT_VALID 0xFF
711#define IDE_FEATURE_ENABLE_WRITE_CACHE 0x2
712#define IDE_FEATURE_SET_TRANSFER_MODE 0x3
713#define IDE_FEATURE_ENABLE_PUIS 0x6
714#define IDE_FEATURE_PUIS_SPIN_UP 0x7
715#define IDE_FEATURE_ENABLE_SATA_FEATURE 0x10
716#define IDE_FEATURE_DISABLE_MSN 0x31
717#define IDE_FEATURE_DISABLE_REVERT_TO_POWER_ON 0x66
718#define IDE_FEATURE_DISABLE_WRITE_CACHE 0x82
719#define IDE_FEATURE_DISABLE_PUIS 0x86
720#define IDE_FEATURE_DISABLE_SATA_FEATURE 0x90
721#define IDE_FEATURE_ENABLE_MSN 0x95
struct _IDENTIFY_PACKET_DATA IDENTIFY_PACKET_DATA
struct _IDENTIFY_PACKET_DATA * PIDENTIFY_PACKET_DATA
struct _GP_LOG_NCQ_COMMAND_ERROR GP_LOG_NCQ_COMMAND_ERROR
struct _IDENTIFY_DEVICE_DATA * PIDENTIFY_DEVICE_DATA
struct _GP_LOG_NCQ_COMMAND_ERROR * PGP_LOG_NCQ_COMMAND_ERROR
struct _IDENTIFY_DEVICE_DATA IDENTIFY_DEVICE_DATA
USHORT RecommendedMWXferCycleTime
UCHAR FirmwareRevision[8]
USHORT WriteUncorrectableExt
USHORT RecommendedAcousticValue
USHORT SecurityCountExpired
USHORT ReadZeroAfterTrimSupported
struct _IDENTIFY_DEVICE_DATA::@1939 NormalSecurityEraseUnit
USHORT DeviceEncryptsAllUserData
struct _IDENTIFY_DEVICE_DATA::@1933 AdditionalSupported
USHORT FeatureControlSuported
USHORT WordsPerLogicalSector[2]
USHORT DeviceConfigIdentifySetDmaSupported
USHORT NonVolatileWriteCache
UCHAR StandybyTimerSupport
UCHAR BlockEraseExtCommandSupported
USHORT MediaCardPassThrough
USHORT WriteReadVerifySectorCountMode2Only[2]
ULONG CurrentSectorCapacity
struct _IDENTIFY_DEVICE_DATA::@1937 CommandSetSupport
USHORT DownloadMicrocodeDmaSupported
USHORT NVCacheFeatureSetVersion
USHORT LogicalSectorsPerPhysicalSector
USHORT ReservedWord207[2]
struct _IDENTIFY_DEVICE_DATA::@1944 SecurityStatus
struct _IDENTIFY_DEVICE_DATA::@1948 BlockAlignment
struct _IDENTIFY_DEVICE_DATA::@1945 CfaPowerMode1
USHORT AlignmentOfLogicalWithinPhysical
USHORT MultiWordDMASupport
struct _IDENTIFY_DEVICE_DATA::@1941 PhysicalLogicalSectorSize
USHORT ReadWriteLogDmaExt
USHORT ReservedForDrqTechnicalReport
USHORT CurrentAcousticValue
USHORT ReservedWord224[6]
USHORT MinBlocksPerDownloadMicrocodeMode03
USHORT MultiWordDMAActive
USHORT ErrorRecoveryControlSupported
USHORT ExtendedPowerConditions
USHORT CFastSpecSupported
USHORT ReservedForWorldWideName128[4]
struct _IDENTIFY_DEVICE_DATA::@1946 DataSetManagementFeature
USHORT RemovableMediaFeature
USHORT StreamingTransferTime
USHORT MaximumCurrentInMA
UCHAR CurrentMultiSectorSetting
struct _IDENTIFY_DEVICE_DATA::@1932 Capabilities
USHORT AdditionalProductID[4]
struct _IDENTIFY_DEVICE_DATA::@1936 SerialAtaFeaturesEnabled
USHORT NumberOfCurrentCylinders
USHORT NumSectorsPerTrack
USHORT ReservedForTechReport
struct _IDENTIFY_DEVICE_DATA::@1934 SerialAtaCapabilities
USHORT ReservedForTlcTechnicalReport
USHORT NominalMediaRotationRate
USHORT WriteBufferDmaSupported
USHORT WriteReadVerifySectorCountMode
USHORT SpecificConfiguration
USHORT SoftwareSettingsPreservation
UCHAR SanitizeFeatureSupported
USHORT ObsoleteWords51[2]
USHORT MultipleLogicalSectorsPerPhysicalSector
USHORT SenseDataReporting
struct _IDENTIFY_DEVICE_DATA::@1943 CommandSetActiveExt
USHORT TransportMinorVersion
USHORT MaxBlocksPerDownloadMicrocodeMode03
USHORT DataTablesSuported
USHORT StreamingAccessLatencyDMAPIO
USHORT CurrentSectorsPerTrack
struct _IDENTIFY_DEVICE_DATA::@1949 NVCacheCapabilities
USHORT ReservedWord129[31]
USHORT StreamingTransferTimeDMA
UCHAR MultiSectorSettingValid
UCHAR NVCacheEstimatedTimeToSpinUpInSeconds
USHORT DEVSLPtoReducedPwrState
USHORT CfaPowerMode1Required
USHORT NumberOfCurrentHeads
UCHAR CurrentLongPhysicalSectorAlignment
USHORT LogicalSectorLongerThan256Words
USHORT FreeFallControlSensitivity
USHORT EnhancedSecurityEraseSupported
UCHAR MaximumBlockTransfer
USHORT ReservedForCfaWord174[2]
USHORT ReservedWord236[19]
struct _IDENTIFY_DEVICE_DATA::@1947 SCTCommandTransport
USHORT ExtendedTimeReported
USHORT CfaPowerMode1Disabled
USHORT MinimumMWXferCycleTime
USHORT TranslationFieldsValid
USHORT ReservedForCfaWord161[7]
USHORT ReservedWords70[5]
USHORT CurrentMediaSerialNumber[30]
USHORT SetMaxSetPasswordUnlockDmaSupported
USHORT NVCacheFeatureSetEnabled
USHORT IdleWithUnloadFeature
USHORT ReservedForExpandedSupportandActive[6]
USHORT NVCachePowerModeVersion
struct _IDENTIFY_DEVICE_DATA::@1935 SerialAtaFeaturesSupported
ULONG ExtendedNumberOfUserAddressableSectors[2]
USHORT ReadBufferDmaSupported
struct _IDENTIFY_DEVICE_DATA::@1938 CommandSetActive
ULONG StreamingPerfGranularity
USHORT MinimumPIOCycleTime
USHORT NVCachePowerModeEnabled
USHORT DeterministicReadAfterTrimSupported
USHORT DeviceConfigOverlay
struct _IDENTIFY_DEVICE_DATA::@1951 TransportMajorVersion
USHORT ResponseIncomplete
USHORT DownloadMicrocodeMode3
USHORT Optional28BitCommandsSupported
struct _IDENTIFY_DEVICE_DATA::@1942 CommandSetSupportExt
USHORT WriteReadVerifySectorCountMode3Only[2]
struct _IDENTIFY_DEVICE_DATA::@1950 NVCacheOptions
ULONG UserAddressableSectors
UCHAR CryptoScrambleExtCommandSupported
UCHAR OverwriteExtCommandSupported
struct _IDENTIFY_DEVICE_DATA::@1931 TrustedComputing
USHORT DmaSetupAutoActivate
USHORT HardwareResetResult
USHORT StreamMinRequestSize
USHORT ExtendedUserAddressableSectorsSupported
struct _IDENTIFY_DEVICE_DATA::@1930 GeneralConfiguration
USHORT MinimumPIOCycleTimeIORDY
struct _IDENTIFY_DEVICE_DATA::@1940 EnhancedSecurityEraseUnit
USHORT HardwareFeatureControl
struct _IDENTIFY_PACKET_DATA::@1957 SerialAtaFeaturesEnabled
USHORT ReservedWords54[8]
USHORT ReservedWords47[2]
USHORT SlimlineDeviceAttention
USHORT ReservedWords20[3]
struct _IDENTIFY_PACKET_DATA::@1953 Capabilities
USHORT AsynchronousNotification
USHORT ReservedWords94[14]
struct _IDENTIFY_PACKET_DATA::@1961 CommandSetActiveExt
USHORT ReservedWords73[2]
USHORT HardwareResetResult
struct _IDENTIFY_PACKET_DATA::@1959 CommandSetSupportExt
USHORT ObsoleteWords51[2]
USHORT ReservedWord224[31]
USHORT InterleavedDmaSupported
struct _IDENTIFY_PACKET_DATA::@1958 CommandSetSupport
USHORT MinimumPIOCycleTime
USHORT UniqueConfiguration
USHORT TranslationFieldsValid
USHORT MinimumPIOCycleTimeIORDY
USHORT TimeRequiredForNormalEraseModeSecurityEraseUnit
UCHAR FirmwareRevision[8]
USHORT ReservedWords69[2]
struct _IDENTIFY_PACKET_DATA::@1954 DMADIR
USHORT IncompleteResponse
USHORT SoftwareSettingsPreservation
USHORT QueuedCommandsSupported
USHORT ReservedWords112[13]
USHORT DeviceSpecificStandbyTimerValueMin
USHORT RecommendedMWXferCycleTime
USHORT MinimumMWXferCycleTime
USHORT ReservedWord176[46]
USHORT MultiWordDMASupport
USHORT TransportMinorVersion
struct _IDENTIFY_PACKET_DATA::@1962 TransportMajorVersion
USHORT TimeRequiredForEnhancedEraseModeSecurityEraseUnit
USHORT HostEnvironmentDetect
struct _IDENTIFY_PACKET_DATA::@1956 SerialAtaFeaturesSupported
USHORT MultiWordDMAActive
USHORT ReservedWord160[16]
struct _IDENTIFY_PACKET_DATA::@1960 CommandSetActive
USHORT ServiceCommandDelay
struct _IDENTIFY_PACKET_DATA::@1955 SerialAtaCapabilities
struct _IDENTIFY_PACKET_DATA::@1952 GeneralConfiguration
USHORT AtapiZeroByteCount