#ifndef _NTATA_ #define _NTATA_ #include typedef struct _IDENTIFY_DEVICE_DATA { struct { USHORT Reserved1 :1; USHORT Retired3 :1; USHORT ResponseIncomplete :1; USHORT Retired2 :3; USHORT FixedDevice :1; USHORT RemovableMedia :1; USHORT Retired1 :7; USHORT DeviceType :1; } GeneralConfiguration; USHORT NumCylinders; USHORT SpecificConfiguration; USHORT NumHeads; USHORT Retired1[2]; USHORT NumSectorsPerTrack; USHORT VendorUnique1[3]; UCHAR SerialNumber[20]; USHORT Retired2[2]; USHORT Obsolete1; UCHAR FirmwareRevision[8]; UCHAR ModelNumber[40]; UCHAR MaximumBlockTransfer; UCHAR VendorUnique2; struct { USHORT FeatureSupported :1; USHORT Reserved :15; } TrustedComputing; struct { UCHAR CurrentLongPhysicalSectorAlignment :2; UCHAR ReservedByte49 :6; UCHAR DmaSupported :1; UCHAR LbaSupported :1; UCHAR IordyDisable :1; UCHAR IordySupported :1; UCHAR Reserved1 :1; UCHAR StandybyTimerSupport :1; UCHAR Reserved2 :2; USHORT ReservedWord50; } Capabilities; USHORT ObsoleteWords51[2]; USHORT TranslationFieldsValid :3; USHORT Reserved3 :5; USHORT FreeFallControlSensitivity :8; USHORT NumberOfCurrentCylinders; USHORT NumberOfCurrentHeads; USHORT CurrentSectorsPerTrack; ULONG CurrentSectorCapacity; UCHAR CurrentMultiSectorSetting; UCHAR MultiSectorSettingValid :1; UCHAR ReservedByte59 :3; UCHAR SanitizeFeatureSupported :1; UCHAR CryptoScrambleExtCommandSupported :1; UCHAR OverwriteExtCommandSupported :1; UCHAR BlockEraseExtCommandSupported :1; ULONG UserAddressableSectors; USHORT ObsoleteWord62; USHORT MultiWordDMASupport :8; USHORT MultiWordDMAActive :8; USHORT AdvancedPIOModes :8; USHORT ReservedByte64 :8; USHORT MinimumMWXferCycleTime; USHORT RecommendedMWXferCycleTime; USHORT MinimumPIOCycleTime; USHORT MinimumPIOCycleTimeIORDY; struct { USHORT ZonedCapabilities :2; USHORT NonVolatileWriteCache :1; USHORT ExtendedUserAddressableSectorsSupported :1; USHORT DeviceEncryptsAllUserData :1; USHORT ReadZeroAfterTrimSupported :1; USHORT Optional28BitCommandsSupported :1; USHORT IEEE1667 :1; USHORT DownloadMicrocodeDmaSupported :1; USHORT SetMaxSetPasswordUnlockDmaSupported :1; USHORT WriteBufferDmaSupported :1; USHORT ReadBufferDmaSupported :1; USHORT DeviceConfigIdentifySetDmaSupported :1; USHORT LPSAERCSupported :1; USHORT DeterministicReadAfterTrimSupported :1; USHORT CFastSpecSupported :1; } AdditionalSupported; USHORT ReservedWords70[5]; USHORT QueueDepth :5; USHORT ReservedWord75 :11; struct { USHORT Reserved0 :1; USHORT SataGen1 :1; USHORT SataGen2 :1; USHORT SataGen3 :1; USHORT Reserved1 :4; USHORT NCQ :1; USHORT HIPM :1; USHORT PhyEvents :1; USHORT NcqUnload :1; USHORT NcqPriority :1; USHORT HostAutoPS :1; USHORT DeviceAutoPS :1; USHORT ReadLogDMA :1; USHORT Reserved2 :1; USHORT CurrentSpeed :3; USHORT NcqStreaming :1; USHORT NcqQueueMgmt :1; USHORT NcqReceiveSend :1; USHORT DEVSLPtoReducedPwrState :1; USHORT Reserved3 :8; } SerialAtaCapabilities; struct { USHORT Reserved0 :1; USHORT NonZeroOffsets :1; USHORT DmaSetupAutoActivate :1; USHORT DIPM :1; USHORT InOrderData :1; USHORT HardwareFeatureControl :1; USHORT SoftwareSettingsPreservation :1; USHORT NCQAutosense :1; USHORT DEVSLP :1; USHORT HybridInformation :1; USHORT Reserved1 :6; } SerialAtaFeaturesSupported; struct { USHORT Reserved0 :1; USHORT NonZeroOffsets :1; USHORT DmaSetupAutoActivate :1; USHORT DIPM :1; USHORT InOrderData :1; USHORT HardwareFeatureControl :1; USHORT SoftwareSettingsPreservation :1; USHORT DeviceAutoPS :1; USHORT DEVSLP :1; USHORT HybridInformation :1; USHORT Reserved1 :6; } SerialAtaFeaturesEnabled; USHORT MajorRevision; USHORT MinorRevision; struct { USHORT SmartCommands :1; USHORT SecurityMode :1; USHORT RemovableMediaFeature :1; USHORT PowerManagement :1; USHORT Reserved1 :1; USHORT WriteCache :1; USHORT LookAhead :1; USHORT ReleaseInterrupt :1; USHORT ServiceInterrupt :1; USHORT DeviceReset :1; USHORT HostProtectedArea :1; USHORT Obsolete1 :1; USHORT WriteBuffer :1; USHORT ReadBuffer :1; USHORT Nop :1; USHORT Obsolete2 :1; USHORT DownloadMicrocode :1; USHORT DmaQueued :1; USHORT Cfa :1; USHORT AdvancedPm :1; USHORT Msn :1; USHORT PowerUpInStandby :1; USHORT ManualPowerUp :1; USHORT Reserved2 :1; USHORT SetMax :1; USHORT Acoustics :1; USHORT BigLba :1; USHORT DeviceConfigOverlay :1; USHORT FlushCache :1; USHORT FlushCacheExt :1; USHORT WordValid83 :2; USHORT SmartErrorLog :1; USHORT SmartSelfTest :1; USHORT MediaSerialNumber :1; USHORT MediaCardPassThrough :1; USHORT StreamingFeature :1; USHORT GpLogging :1; USHORT WriteFua :1; USHORT WriteQueuedFua :1; USHORT WWN64Bit :1; USHORT URGReadStream :1; USHORT URGWriteStream :1; USHORT ReservedForTechReport :2; USHORT IdleWithUnloadFeature :1; USHORT WordValid :2; } CommandSetSupport; struct { USHORT SmartCommands :1; USHORT SecurityMode :1; USHORT RemovableMediaFeature :1; USHORT PowerManagement :1; USHORT Reserved1 :1; USHORT WriteCache :1; USHORT LookAhead :1; USHORT ReleaseInterrupt :1; USHORT ServiceInterrupt :1; USHORT DeviceReset :1; USHORT HostProtectedArea :1; USHORT Obsolete1 :1; USHORT WriteBuffer :1; USHORT ReadBuffer :1; USHORT Nop :1; USHORT Obsolete2 :1; USHORT DownloadMicrocode :1; USHORT DmaQueued :1; USHORT Cfa :1; USHORT AdvancedPm :1; USHORT Msn :1; USHORT PowerUpInStandby :1; USHORT ManualPowerUp :1; USHORT Reserved2 :1; USHORT SetMax :1; USHORT Acoustics :1; USHORT BigLba :1; USHORT DeviceConfigOverlay :1; USHORT FlushCache :1; USHORT FlushCacheExt :1; USHORT Resrved3 :1; USHORT Words119_120Valid :1; USHORT SmartErrorLog :1; USHORT SmartSelfTest :1; USHORT MediaSerialNumber :1; USHORT MediaCardPassThrough :1; USHORT StreamingFeature :1; USHORT GpLogging :1; USHORT WriteFua :1; USHORT WriteQueuedFua :1; USHORT WWN64Bit :1; USHORT URGReadStream :1; USHORT URGWriteStream :1; USHORT ReservedForTechReport :2; USHORT IdleWithUnloadFeature :1; USHORT Reserved4 :2; } CommandSetActive; USHORT UltraDMASupport :8; USHORT UltraDMAActive :8; struct { USHORT TimeRequired :15; USHORT ExtendedTimeReported :1; } NormalSecurityEraseUnit; struct { USHORT TimeRequired :15; USHORT ExtendedTimeReported :1; } EnhancedSecurityEraseUnit; USHORT CurrentAPMLevel :8; USHORT ReservedWord91 :8; USHORT MasterPasswordID; USHORT HardwareResetResult; USHORT CurrentAcousticValue :8; USHORT RecommendedAcousticValue :8; USHORT StreamMinRequestSize; USHORT StreamingTransferTimeDMA; USHORT StreamingAccessLatencyDMAPIO; ULONG StreamingPerfGranularity; ULONG Max48BitLBA[2]; USHORT StreamingTransferTime; USHORT DsmCap; struct { USHORT LogicalSectorsPerPhysicalSector :4; USHORT Reserved0 :8; USHORT LogicalSectorLongerThan256Words :1; USHORT MultipleLogicalSectorsPerPhysicalSector :1; USHORT Reserved1 :2; } PhysicalLogicalSectorSize; USHORT InterSeekDelay; USHORT WorldWideName[4]; USHORT ReservedForWorldWideName128[4]; USHORT ReservedForTlcTechnicalReport; USHORT WordsPerLogicalSector[2]; struct { USHORT ReservedForDrqTechnicalReport :1; USHORT WriteReadVerify :1; USHORT WriteUncorrectableExt :1; USHORT ReadWriteLogDmaExt :1; USHORT DownloadMicrocodeMode3 :1; USHORT FreefallControl :1; USHORT SenseDataReporting :1; USHORT ExtendedPowerConditions :1; USHORT Reserved0 :6; USHORT WordValid :2; } CommandSetSupportExt; struct { USHORT ReservedForDrqTechnicalReport :1; USHORT WriteReadVerify :1; USHORT WriteUncorrectableExt :1; USHORT ReadWriteLogDmaExt :1; USHORT DownloadMicrocodeMode3 :1; USHORT FreefallControl :1; USHORT SenseDataReporting :1; USHORT ExtendedPowerConditions :1; USHORT Reserved0 :6; USHORT Reserved1 :2; } CommandSetActiveExt; USHORT ReservedForExpandedSupportandActive[6]; USHORT MsnSupport :2; USHORT ReservedWord127 :14; struct { USHORT SecuritySupported :1; USHORT SecurityEnabled :1; USHORT SecurityLocked :1; USHORT SecurityFrozen :1; USHORT SecurityCountExpired :1; USHORT EnhancedSecurityEraseSupported :1; USHORT Reserved0 :2; USHORT SecurityLevel :1; USHORT Reserved1 :7; } SecurityStatus; USHORT ReservedWord129[31]; struct { USHORT MaximumCurrentInMA :12; USHORT CfaPowerMode1Disabled :1; USHORT CfaPowerMode1Required :1; USHORT Reserved0 :1; USHORT Word160Supported :1; } CfaPowerMode1; USHORT ReservedForCfaWord161[7]; USHORT NominalFormFactor :4; USHORT ReservedWord168 :12; struct { USHORT SupportsTrim :1; USHORT Reserved0 :15; } DataSetManagementFeature; USHORT AdditionalProductID[4]; USHORT ReservedForCfaWord174[2]; USHORT CurrentMediaSerialNumber[30]; struct { USHORT Supported :1; USHORT Reserved0 :1; USHORT WriteSameSuported :1; USHORT ErrorRecoveryControlSupported :1; USHORT FeatureControlSuported :1; USHORT DataTablesSuported :1; USHORT Reserved1 :6; USHORT VendorSpecific :4; } SCTCommandTransport; USHORT ReservedWord207[2]; struct { USHORT AlignmentOfLogicalWithinPhysical :14; USHORT Word209Supported :1; USHORT Reserved0 :1; } BlockAlignment; USHORT WriteReadVerifySectorCountMode3Only[2]; USHORT WriteReadVerifySectorCountMode2Only[2]; struct { USHORT NVCachePowerModeEnabled :1; USHORT Reserved0 :3; USHORT NVCacheFeatureSetEnabled :1; USHORT Reserved1 :3; USHORT NVCachePowerModeVersion :4; USHORT NVCacheFeatureSetVersion :4; } NVCacheCapabilities; USHORT NVCacheSizeLSW; USHORT NVCacheSizeMSW; USHORT NominalMediaRotationRate; USHORT ReservedWord218; struct { UCHAR NVCacheEstimatedTimeToSpinUpInSeconds; UCHAR Reserved; } NVCacheOptions; USHORT WriteReadVerifySectorCountMode :8; USHORT ReservedWord220 :8; USHORT ReservedWord221; struct { USHORT MajorVersion :12; USHORT TransportType :4; } TransportMajorVersion; USHORT TransportMinorVersion; USHORT ReservedWord224[6]; ULONG ExtendedNumberOfUserAddressableSectors[2]; USHORT MinBlocksPerDownloadMicrocodeMode03; USHORT MaxBlocksPerDownloadMicrocodeMode03; USHORT ReservedWord236[19]; USHORT Signature :8; USHORT CheckSum :8; } IDENTIFY_DEVICE_DATA, *PIDENTIFY_DEVICE_DATA; typedef struct _IDENTIFY_PACKET_DATA { struct { USHORT PacketType :2; USHORT IncompleteResponse :1; USHORT Reserved1 :2; USHORT DrqDelay :2; USHORT RemovableMedia :1; USHORT CommandPacketType :5; USHORT Reserved2 :1; USHORT DeviceType :2; } GeneralConfiguration; USHORT ResevedWord1; USHORT UniqueConfiguration; USHORT ReservedWords3[7]; UCHAR SerialNumber[20]; USHORT ReservedWords20[3]; UCHAR FirmwareRevision[8]; UCHAR ModelNumber[40]; USHORT ReservedWords47[2]; struct { USHORT VendorSpecific :8; USHORT DmaSupported :1; USHORT LbaSupported :1; USHORT IordyDisabled :1; USHORT IordySupported :1; USHORT Obsolete :1; USHORT OverlapSupported :1; USHORT QueuedCommandsSupported :1; USHORT InterleavedDmaSupported :1; USHORT DeviceSpecificStandbyTimerValueMin :1; USHORT Obsolete1 :1; USHORT ReservedWord50 :12; USHORT WordValid :2; } Capabilities; USHORT ObsoleteWords51[2]; USHORT TranslationFieldsValid :3; USHORT Reserved3 :13; USHORT ReservedWords54[8]; struct { USHORT UDMA0Supported :1; USHORT UDMA1Supported :1; USHORT UDMA2Supported :1; USHORT UDMA3Supported :1; USHORT UDMA4Supported :1; USHORT UDMA5Supported :1; USHORT UDMA6Supported :1; USHORT MDMA0Supported :1; USHORT MDMA1Supported :1; USHORT MDMA2Supported :1; USHORT DMASupported :1; USHORT ReservedWord62 :4; USHORT DMADIRBitRequired :1; } DMADIR; USHORT MultiWordDMASupport :8; USHORT MultiWordDMAActive :8; USHORT AdvancedPIOModes :8; USHORT ReservedByte64 :8; USHORT MinimumMWXferCycleTime; USHORT RecommendedMWXferCycleTime; USHORT MinimumPIOCycleTime; USHORT MinimumPIOCycleTimeIORDY; USHORT ReservedWords69[2]; USHORT BusReleaseDelay; USHORT ServiceCommandDelay; USHORT ReservedWords73[2]; USHORT QueueDepth :5; USHORT ReservedWord75 :11; struct { USHORT Reserved0 :1; USHORT SataGen1 :1; USHORT SataGen2 :1; USHORT SataGen3 :1; USHORT Reserved1 :5; USHORT HIPM :1; USHORT PhyEvents :1; USHORT Reserved3 :2; USHORT HostAutoPS :1; USHORT DeviceAutoPS :1; USHORT Reserved4 :1; USHORT Reserved5 :1; USHORT CurrentSpeed :3; USHORT SlimlineDeviceAttention :1; USHORT HostEnvironmentDetect :1; USHORT Reserved :10; } SerialAtaCapabilities; struct { USHORT Reserved0 :1; USHORT Reserved1 :2; USHORT DIPM :1; USHORT Reserved2 :1; USHORT AsynchronousNotification :1; USHORT SoftwareSettingsPreservation :1; USHORT Reserved3 :9; } SerialAtaFeaturesSupported; struct { USHORT Reserved0 :1; USHORT Reserved1 :2; USHORT DIPM :1; USHORT Reserved2 :1; USHORT AsynchronousNotification :1; USHORT SoftwareSettingsPreservation :1; USHORT DeviceAutoPS :1; USHORT Reserved3 :8; } SerialAtaFeaturesEnabled; USHORT MajorRevision; USHORT MinorRevision; struct { USHORT SmartCommands :1; USHORT SecurityMode :1; USHORT RemovableMedia :1; USHORT PowerManagement :1; USHORT PacketCommands :1; USHORT WriteCache :1; USHORT LookAhead :1; USHORT ReleaseInterrupt :1; USHORT ServiceInterrupt :1; USHORT DeviceReset :1; USHORT HostProtectedArea :1; USHORT Obsolete1 :1; USHORT WriteBuffer :1; USHORT ReadBuffer :1; USHORT Nop :1; USHORT Obsolete2 :1; USHORT DownloadMicrocode :1; USHORT Reserved1 :2; USHORT AdvancedPm :1; USHORT Msn :1; USHORT PowerUpInStandby :1; USHORT ManualPowerUp :1; USHORT Reserved2 :1; USHORT SetMax :1; USHORT Reserved3 :3; USHORT FlushCache :1; USHORT Reserved4 :1; USHORT WordValid :2; } CommandSetSupport; struct { USHORT Reserved0 :5; USHORT GpLogging :1; USHORT Reserved1 :2; USHORT WWN64Bit :1; USHORT Reserved2 :5; USHORT WordValid :2; } CommandSetSupportExt; struct { USHORT SmartCommands :1; USHORT SecurityMode :1; USHORT RemovableMedia :1; USHORT PowerManagement :1; USHORT PacketCommands :1; USHORT WriteCache :1; USHORT LookAhead :1; USHORT ReleaseInterrupt :1; USHORT ServiceInterrupt :1; USHORT DeviceReset :1; USHORT HostProtectedArea :1; USHORT Obsolete1 :1; USHORT WriteBuffer :1; USHORT ReadBuffer :1; USHORT Nop :1; USHORT Obsolete2 :1; USHORT DownloadMicrocode :1; USHORT Reserved1 :2; USHORT AdvancedPm :1; USHORT Msn :1; USHORT PowerUpInStandby :1; USHORT ManualPowerUp :1; USHORT Reserved2 :1; USHORT SetMax :1; USHORT Reserved3 :3; USHORT FlushCache :1; USHORT Reserved :3; } CommandSetActive; struct { USHORT Reserved0 :5; USHORT GpLogging :1; USHORT Reserved1 :2; USHORT WWN64Bit :1; USHORT Reserved2 :5; USHORT WordValid :2; } CommandSetActiveExt; USHORT UltraDMASupport :8; USHORT UltraDMAActive :8; USHORT TimeRequiredForNormalEraseModeSecurityEraseUnit; USHORT TimeRequiredForEnhancedEraseModeSecurityEraseUnit; USHORT CurrentAPMLevel; USHORT MasterPasswordID; USHORT HardwareResetResult; USHORT ReservedWords94[14]; USHORT WorldWideName[4]; USHORT ReservedWords112[13]; USHORT AtapiZeroByteCount; USHORT ReservedWord126; USHORT MsnSupport :2; USHORT ReservedWord127 :14; USHORT SecurityStatus; USHORT VendorSpecific[31]; USHORT ReservedWord160[16]; USHORT ReservedWord176[46]; struct { USHORT MajorVersion :12; USHORT TransportType :4; } TransportMajorVersion; USHORT TransportMinorVersion; USHORT ReservedWord224[31]; USHORT Signature :8; USHORT CheckSum :8; } IDENTIFY_PACKET_DATA, *PIDENTIFY_PACKET_DATA; typedef struct _GP_LOG_NCQ_COMMAND_ERROR { UCHAR NcqTag : 5; UCHAR Reserved0 : 1; UCHAR UNL : 1; UCHAR NonQueuedCmd : 1; UCHAR Reserved1; UCHAR Status; UCHAR Error; UCHAR LBA7_0; UCHAR LBA15_8; UCHAR LBA23_16; UCHAR Device; UCHAR LBA31_24; UCHAR LBA39_32; UCHAR LBA47_40; UCHAR Reserved2; UCHAR Count7_0; UCHAR Count15_8; UCHAR SenseKey; UCHAR ASC; UCHAR ASCQ; UCHAR Reserved3[239]; UCHAR Vendor[255]; UCHAR Checksum; } GP_LOG_NCQ_COMMAND_ERROR, *PGP_LOG_NCQ_COMMAND_ERROR; #include #define IDE_LBA_MODE (1 << 6) #define IDE_DC_DISABLE_INTERRUPTS 0x02 #define IDE_DC_RESET_CONTROLLER 0x04 #define IDE_DC_REENABLE_CONTROLLER 0x00 #define IDE_STATUS_ERROR 0x01 #define IDE_STATUS_INDEX 0x02 #define IDE_STATUS_CORRECTED_ERROR 0x04 #define IDE_STATUS_DRQ 0x08 #define IDE_STATUS_DSC 0x10 #define IDE_STATUS_DEVICE_FAULT 0x20 #define IDE_STATUS_DRDY 0x40 #define IDE_STATUS_IDLE 0x50 #define IDE_STATUS_BUSY 0x80 #define IDE_ERROR_ILLEGAL_LENGTH 0x01 #define IDE_ERROR_ADDRESS_NOT_FOUND IDE_ERROR_ILLEGAL_LENGTH #define IDE_ERROR_END_OF_MEDIA 0x02 #define IDE_ERROR_COMMAND_ABORTED 0x04 #define IDE_ERROR_MEDIA_CHANGE_REQ 0x08 #define IDE_ERROR_ID_NOT_FOUND 0x10 #define IDE_ERROR_MEDIA_CHANGE 0x20 #define IDE_ERROR_DATA_ERROR 0x40 #define IDE_ERROR_BAD_BLOCK 0x80 #define IDE_ERROR_CRC_ERROR IDE_ERROR_BAD_BLOCK #define IDE_COMMAND_NOP 0x00 #define IDE_COMMAND_DATA_SET_MANAGEMENT 0x06 #define IDE_COMMAND_ATAPI_RESET 0x08 #define IDE_COMMAND_GET_PHYSICAL_ELEMENT_STATUS 0x12 #define IDE_COMMAND_READ 0x20 #define IDE_COMMAND_READ_EXT 0x24 #define IDE_COMMAND_READ_DMA_EXT 0x25 #define IDE_COMMAND_READ_DMA_QUEUED_EXT 0x26 #define IDE_COMMAND_READ_MULTIPLE_EXT 0x29 #define IDE_COMMAND_READ_LOG_EXT 0x2F #define IDE_COMMAND_WRITE 0x30 #define IDE_COMMAND_WRITE_EXT 0x34 #define IDE_COMMAND_WRITE_DMA_EXT 0x35 #define IDE_COMMAND_WRITE_DMA_QUEUED_EXT 0x36 #define IDE_COMMAND_WRITE_MULTIPLE_EXT 0x39 #define IDE_COMMAND_WRITE_DMA_FUA_EXT 0x3D #define IDE_COMMAND_WRITE_DMA_QUEUED_FUA_EXT 0x3E #define IDE_COMMAND_WRITE_LOG_EXT 0x3F #define IDE_COMMAND_VERIFY 0x40 #define IDE_COMMAND_VERIFY_EXT 0x42 #define IDE_COMMAND_ZAC_MANAGEMENT_IN 0x4A #define IDE_COMMAND_WRITE_LOG_DMA_EXT 0x57 #define IDE_COMMAND_TRUSTED_NON_DATA 0x5B #define IDE_COMMAND_TRUSTED_RECEIVE 0x5C #define IDE_COMMAND_TRUSTED_RECEIVE_DMA 0x5D #define IDE_COMMAND_TRUSTED_SEND 0x5E #define IDE_COMMAND_TRUSTED_SEND_DMA 0x5F #define IDE_COMMAND_READ_FPDMA_QUEUED 0x60 #define IDE_COMMAND_WRITE_FPDMA_QUEUED 0x61 #define IDE_COMMAND_NCQ_NON_DATA 0x63 #define IDE_COMMAND_SEND_FPDMA_QUEUED 0x64 #define IDE_COMMAND_RECEIVE_FPDMA_QUEUED 0x65 #define IDE_COMMAND_SET_DATE_AND_TIME 0x77 #define IDE_COMMAND_REMOVE_ELEMENT_AND_TRUNCATE 0x7C #define IDE_COMMAND_EXECUTE_DEVICE_DIAGNOSTIC 0x90 #define IDE_COMMAND_SET_DRIVE_PARAMETERS 0x91 #define IDE_COMMAND_DOWNLOAD_MICROCODE 0x92 #define IDE_COMMAND_DOWNLOAD_MICROCODE_DMA 0x93 #define IDE_COMMAND_ZAC_MANAGEMENT_OUT 0x9F #define IDE_COMMAND_ATAPI_PACKET 0xA0 #define IDE_COMMAND_ATAPI_IDENTIFY 0xA1 #define IDE_COMMAND_SMART 0xB0 #define IDE_COMMAND_READ_LOG_DMA_EXT 0xB1 #define IDE_COMMAND_SANITIZE_DEVICE 0xB4 #define IDE_COMMAND_READ_MULTIPLE 0xC4 #define IDE_COMMAND_WRITE_MULTIPLE 0xC5 #define IDE_COMMAND_SET_MULTIPLE 0xC6 #define IDE_COMMAND_READ_DMA 0xC8 #define IDE_COMMAND_WRITE_DMA 0xCA #define IDE_COMMAND_WRITE_DMA_QUEUED 0xCC #define IDE_COMMAND_WRITE_MULTIPLE_FUA_EXT 0xCE #define IDE_COMMAND_GET_MEDIA_STATUS 0xDA #define IDE_COMMAND_DOOR_LOCK 0xDE #define IDE_COMMAND_DOOR_UNLOCK 0xDF #define IDE_COMMAND_STANDBY_IMMEDIATE 0xE0 #define IDE_COMMAND_IDLE_IMMEDIATE 0xE1 #define IDE_COMMAND_CHECK_POWER 0xE5 #define IDE_COMMAND_SLEEP 0xE6 #define IDE_COMMAND_FLUSH_CACHE 0xE7 #define IDE_COMMAND_FLUSH_CACHE_EXT 0xEA #define IDE_COMMAND_IDENTIFY 0xEC #define IDE_COMMAND_MEDIA_EJECT 0xED #define IDE_COMMAND_SET_FEATURE 0xEF #define IDE_COMMAND_SECURITY_SET_PASSWORD 0xF1 #define IDE_COMMAND_SECURITY_UNLOCK 0xF2 #define IDE_COMMAND_SECURITY_ERASE_PREPARE 0xF3 #define IDE_COMMAND_SECURITY_ERASE_UNIT 0xF4 #define IDE_COMMAND_SECURITY_FREEZE_LOCK 0xF5 #define IDE_COMMAND_SECURITY_DISABLE_PASSWORD 0xF6 #define IDE_COMMAND_NOT_VALID 0xFF #define IDE_FEATURE_ENABLE_WRITE_CACHE 0x2 #define IDE_FEATURE_SET_TRANSFER_MODE 0x3 #define IDE_FEATURE_ENABLE_PUIS 0x6 #define IDE_FEATURE_PUIS_SPIN_UP 0x7 #define IDE_FEATURE_ENABLE_SATA_FEATURE 0x10 #define IDE_FEATURE_DISABLE_MSN 0x31 #define IDE_FEATURE_DISABLE_REVERT_TO_POWER_ON 0x66 #define IDE_FEATURE_DISABLE_WRITE_CACHE 0x82 #define IDE_FEATURE_DISABLE_PUIS 0x86 #define IDE_FEATURE_DISABLE_SATA_FEATURE 0x90 #define IDE_FEATURE_ENABLE_MSN 0x95 #endif