| /** |
| * This file has no copyright assigned and is placed in the Public Domain. |
| * This file is part of the mingw-w64 runtime package. |
| * No warranty is given; refer to the file DISCLAIMER.PD within this package. |
| */ |
| |
| #ifndef _NTATA_ |
| #define _NTATA_ |
| |
| #pragma pack(push,1) |
| |
| 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 _REGISTER_FIS { |
| UCHAR FisType; |
| UCHAR Reserved0 : 7; |
| UCHAR CmdReg : 1; |
| UCHAR Command; |
| UCHAR Features; |
| UCHAR SectorNumber; |
| UCHAR CylinderLow; |
| UCHAR CylinderHigh; |
| UCHAR DeviceHead; |
| UCHAR SectorNumberExp; |
| UCHAR CylinderLowExp; |
| UCHAR CylinderHighExp; |
| UCHAR FeaturesExp; |
| UCHAR SectorCount; |
| UCHAR SectorCountExp; |
| UCHAR Reserved2; |
| UCHAR Control; |
| ULONG Reserved3; |
| } REGISTER_FIS, *PREGISTER_FIS; |
| |
| typedef union _ATA_HYBRID_INFO_FIELDS { |
| _ANONYMOUS_STRUCT struct { |
| UCHAR HybridPriority : 4; |
| UCHAR Reserved0 : 1; |
| UCHAR InfoValid : 1; |
| UCHAR Reserved1 : 2; |
| } DUMMYSTRUCTNAME; |
| UCHAR AsUchar; |
| } ATA_HYBRID_INFO_FIELDS, *PATA_HYBRID_INFO_FIELDS; |
| |
| typedef struct _DEVICE_SET_PASSWORD { |
| struct { |
| USHORT PasswordIdentifier : 1; |
| USHORT Reserved1 : 7; |
| USHORT MasterPasswordCapability : 1; |
| USHORT Reserved2 : 7; |
| } ControlWord; |
| USHORT Password[16]; |
| USHORT MasterPasswordIdentifier; |
| USHORT Reserved[238]; |
| } DEVICE_SET_PASSWORD, *PDEVICE_SET_PASSWORD; |
| |
| typedef struct _IDENTIFY_DEVICE_DATA_LOG_PAGE_HEADER { |
| ULONGLONG RevisionNumber : 16; |
| ULONGLONG PageNumber : 8; |
| ULONGLONG Reserved : 39; |
| ULONGLONG Valid : 1; |
| } IDENTIFY_DEVICE_DATA_LOG_PAGE_HEADER, *PIDENTIFY_DEVICE_DATA_LOG_PAGE_HEADER; |
| |
| typedef struct _IDENTIFY_DEVICE_DATA_LOG_PAGE_SUPPORTED_CAPABILITIES { |
| IDENTIFY_DEVICE_DATA_LOG_PAGE_HEADER Header; |
| struct { |
| ULONGLONG WRV : 1; |
| ULONGLONG WriteUncorrectable : 1; |
| ULONGLONG GplDma : 1; |
| ULONGLONG DmMode3 : 1; |
| ULONGLONG FreeFall : 1; |
| ULONGLONG SenseData : 1; |
| ULONGLONG EPC : 1; |
| ULONGLONG SmartErrorLogging : 1; |
| ULONGLONG SmartSelfTest : 1; |
| ULONGLONG Reserved9 : 1; |
| ULONGLONG Streaming : 1; |
| ULONGLONG GPL : 1; |
| ULONGLONG WriteFuaExt : 1; |
| ULONGLONG Unload : 1; |
| ULONGLONG DownloadMicrocode : 1; |
| ULONGLONG Reserved15ForCFA : 1; |
| ULONGLONG APM : 1; |
| ULONGLONG PUIS : 1; |
| ULONGLONG SpinUp : 1; |
| ULONGLONG Reserved19 : 1; |
| ULONGLONG Cmd48Bit : 1; |
| ULONGLONG Reserved21 : 1; |
| ULONGLONG FlushCacheExt : 1; |
| ULONGLONG Smart : 1; |
| ULONGLONG VolatileWriteCache : 1; |
| ULONGLONG ReadLookahead : 1; |
| ULONGLONG Reserved26 : 1; |
| ULONGLONG WriteBuffer : 1; |
| ULONGLONG ReadBuffer : 1; |
| ULONGLONG NOP : 1; |
| ULONGLONG Reserved30 : 1; |
| ULONGLONG RZAT : 1; |
| ULONGLONG Cmd28bit : 1; |
| ULONGLONG DownloadMicrocodeDma : 1; |
| ULONGLONG Reserved34 : 1; |
| ULONGLONG WriteBufferDma : 1; |
| ULONGLONG ReadBufferDma : 1; |
| ULONGLONG Reserved37 : 1; |
| ULONGLONG LpsMisalignmentReporting : 1; |
| ULONGLONG DRAT : 1; |
| ULONGLONG Reserved40ForCFA : 1; |
| ULONGLONG AmaxAddr : 1; |
| ULONGLONG SetEpcPowerSource : 1; |
| ULONGLONG LowPowerStandby : 1; |
| ULONGLONG DSN : 1; |
| ULONGLONG RequestSenseDeviceFault : 1; |
| ULONGLONG Reserved : 17; |
| ULONGLONG Valid : 1; |
| } SupportedCapabilities; |
| struct { |
| ULONGLONG DmMinTransferSize : 16; |
| ULONGLONG DmMaxTransferSize : 16; |
| ULONGLONG DmOffsetsImmediateSupported : 1; |
| ULONGLONG DmImmediateSupported : 1; |
| ULONGLONG DmOffsetsDeferredSupported : 1; |
| ULONGLONG Reserved : 28; |
| ULONGLONG Valid : 1; |
| } DownloadMicrocodeCapabilities; |
| struct { |
| ULONGLONG Rate : 16; |
| ULONGLONG Reserved : 47; |
| ULONGLONG Valid : 1; |
| } NominalMediaRotationRate; |
| struct { |
| ULONGLONG Factor : 4; |
| ULONGLONG Reserved : 59; |
| ULONGLONG Valid : 1; |
| } NominalFormFactor; |
| struct { |
| ULONGLONG Count : 32; |
| ULONGLONG Reserved : 31; |
| ULONGLONG Valid : 1; |
| } WRVSectorCountMode3; |
| struct { |
| ULONGLONG Count : 32; |
| ULONGLONG Reserved : 31; |
| ULONGLONG Valid : 1; |
| } WRVSectorCountMode2; |
| struct { |
| ULONGLONG Name; |
| ULONGLONG Reserved : 63; |
| ULONGLONG Valid : 1; |
| } WorldWideName; |
| struct { |
| ULONGLONG TrimSupported : 1; |
| ULONGLONG Reserved : 62; |
| ULONGLONG Valid : 1; |
| } DataSetManagement; |
| struct { |
| ULONGLONG UtilizationA : 32; |
| ULONGLONG UtilizationB : 32; |
| ULONGLONG Reserved0 : 32; |
| ULONGLONG UtilizationInterval : 8; |
| ULONGLONG UtilizationUnit : 8; |
| ULONGLONG UtilizationType : 8; |
| ULONGLONG Reserved1 : 7; |
| ULONGLONG Valid : 1; |
| } UtilizationPerUnitTime; |
| struct { |
| ULONGLONG DateTimeRateBasisSupported : 1; |
| ULONGLONG Reserved0 : 3; |
| ULONGLONG PowerOnHoursRateBasisSupported : 1; |
| ULONGLONG Reserved1 : 3; |
| ULONGLONG SincePowerOnRateBasisSupported : 1; |
| ULONGLONG Reserved2 : 14; |
| ULONGLONG SettingRateBasisSupported : 1; |
| ULONGLONG Reserved3 : 39; |
| ULONGLONG Valid : 1; |
| } UtilizationUsageRateSupport; |
| struct { |
| ULONGLONG Zoned : 2; |
| ULONGLONG Reserved : 61; |
| ULONGLONG Valid : 1; |
| } ZonedCapabilities; |
| struct { |
| ULONGLONG ReportZonesExtSupported : 1; |
| ULONGLONG NonDataOpenZoneExtSupported : 1; |
| ULONGLONG NonDataCloseZoneExtSupported : 1; |
| ULONGLONG NonDataFinishZoneExtSupported : 1; |
| ULONGLONG NonDataResetWritePointersExtSupported : 1; |
| ULONGLONG Reserved : 58; |
| ULONGLONG Valid : 1; |
| } SupportedZacCapabilities; |
| UCHAR Reserved[392]; |
| } IDENTIFY_DEVICE_DATA_LOG_PAGE_SUPPORTED_CAPABILITIES, *PIDENTIFY_DEVICE_DATA_LOG_PAGE_SUPPORTED_CAPABILITIES; |
| |
| typedef struct _IDENTIFY_DEVICE_DATA_LOG_PAGE_ZONED_DEVICE_INFO { |
| IDENTIFY_DEVICE_DATA_LOG_PAGE_HEADER Header; |
| struct { |
| ULONGLONG URSWRZ : 1; |
| ULONGLONG Reserved : 62; |
| ULONGLONG Valid : 1; |
| } ZonedDeviceCapabilities; |
| struct { |
| ULONGLONG Reserved : 63; |
| ULONGLONG Valid : 1; |
| } ZonedDeviceSettings; |
| struct { |
| ULONGLONG Number : 32; |
| ULONGLONG Reserved : 31; |
| ULONGLONG Valid : 1; |
| } OptimalNumberOfOpenSequentialWritePreferredZones; |
| struct { |
| ULONGLONG Number : 32; |
| ULONGLONG Reserved : 31; |
| ULONGLONG Valid : 1; |
| } OptimalNumberOfNonSequentiallyWrittenSequentialWritePreferredZones; |
| struct { |
| ULONGLONG Number : 32; |
| ULONGLONG Reserved : 31; |
| ULONGLONG Valid : 1; |
| } MaxNumberOfOpenSequentialWriteRequiredZones; |
| struct { |
| ULONGLONG ZacMinorVersion : 16; |
| ULONGLONG Reserved0 : 47; |
| ULONGLONG Valid : 1; |
| } Version; |
| UCHAR Reserved[456]; |
| } IDENTIFY_DEVICE_DATA_LOG_PAGE_ZONED_DEVICE_INFO, *PIDENTIFY_DEVICE_DATA_LOG_PAGE_ZONED_DEVICE_INFO; |
| |
| typedef struct _CURRENT_DEVICE_INTERNAL_STATUS_LOG { |
| UCHAR LogAddress; |
| UCHAR Reserved0[3]; |
| ULONG OrganizationID; |
| USHORT Area1LastLogPage; |
| USHORT Area2LastLogPage; |
| USHORT Area3LastLogPage; |
| UCHAR Reserved2[368]; |
| UCHAR SavedDataAvailable; |
| UCHAR SavedDataGenerationNumber; |
| UCHAR ReasonIdentifier[128]; |
| } CURRENT_DEVICE_INTERNAL_STATUS_LOG, *PCURRENT_DEVICE_INTERNAL_STATUS_LOG; |
| |
| typedef struct _SAVED_DEVICE_INTERNAL_STATUS_LOG { |
| UCHAR LogAddress; |
| UCHAR Reserved0[3]; |
| ULONG OrganizationID; |
| USHORT Area1LastLogPage; |
| USHORT Area2LastLogPage; |
| USHORT Area3LastLogPage; |
| UCHAR Reserved2[368]; |
| UCHAR SavedDataAvailable; |
| UCHAR GenerationNumber; |
| UCHAR ReasonIdentifier[128]; |
| } SAVED_DEVICE_INTERNAL_STATUS_LOG, *PSAVED_DEVICE_INTERNAL_STATUS_LOG; |
| |
| typedef struct _DEVICE_STATISTICS_LOG_PAGE_HEADER { |
| ULONGLONG RevisionNumber : 16; |
| ULONGLONG PageNumber : 8; |
| ULONGLONG Reserved : 40; |
| } DEVICE_STATISTICS_LOG_PAGE_HEADER, *PDEVICE_STATISTICS_LOG_PAGE_HEADER; |
| |
| typedef struct _GP_LOG_SUPPORTED_DEVICE_STATISTICS { |
| DEVICE_STATISTICS_LOG_PAGE_HEADER Header; |
| UCHAR NumberOfEntries; |
| UCHAR LogPageNumbers[503]; |
| } GP_LOG_SUPPORTED_DEVICE_STATISTICS, *PGP_LOG_SUPPORTED_DEVICE_STATISTICS; |
| |
| typedef struct _GP_LOG_GENERAL_STATISTICS { |
| DEVICE_STATISTICS_LOG_PAGE_HEADER Header; |
| struct { |
| ULONGLONG Count : 32; |
| ULONGLONG Reserved : 24; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } LifeTimePoweronResets; |
| struct { |
| ULONGLONG Count : 32; |
| ULONGLONG Reserved : 24; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } PoweronHours; |
| struct { |
| ULONGLONG Count : 48; |
| ULONGLONG Reserved : 8; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } LogicalSectorsWritten; |
| struct { |
| ULONGLONG Count : 48; |
| ULONGLONG Reserved : 8; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } WriteCommandCount; |
| struct { |
| ULONGLONG Count : 48; |
| ULONGLONG Reserved : 8; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } LogicalSectorsRead; |
| struct { |
| ULONGLONG Count : 48; |
| ULONGLONG Reserved : 8; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } ReadCommandCount; |
| struct { |
| ULONGLONG TimeStamp : 48; |
| ULONGLONG Reserved : 8; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } DateAndTime; |
| struct { |
| ULONGLONG Count : 32; |
| ULONGLONG Reserved : 24; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } PendingErrorCount; |
| struct { |
| ULONGLONG Value : 16; |
| ULONGLONG Reserved : 40; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } WorkloadUtilizaton; |
| struct { |
| ULONGLONG Value : 8; |
| ULONGLONG Reserved0 : 28; |
| ULONGLONG RateBasis : 4; |
| ULONGLONG RateValidity : 8; |
| ULONGLONG Reserved1 : 8; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } UtilizationUsageRate; |
| UCHAR Reserved[424]; |
| } GP_LOG_GENERAL_STATISTICS, *PGP_LOG_GENERAL_STATISTICS; |
| |
| typedef struct _GP_LOG_FREE_FALL_STATISTICS { |
| DEVICE_STATISTICS_LOG_PAGE_HEADER Header; |
| struct { |
| ULONGLONG Count : 32; |
| ULONGLONG Reserved : 24; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } NumberofFreeFallEventsDetected; |
| struct { |
| ULONGLONG Count : 32; |
| ULONGLONG Reserved : 24; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } OverlimitShockEvents; |
| UCHAR Reserved[488]; |
| } GP_LOG_FREE_FALL_STATISTICS, *PGP_LOG_FREE_FALL_STATISTICS; |
| |
| typedef struct _GP_LOG_ROTATING_MEDIA_STATISTICS { |
| DEVICE_STATISTICS_LOG_PAGE_HEADER Header; |
| struct { |
| ULONGLONG Count : 32; |
| ULONGLONG Reserved : 24; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } SpindleMotorPoweronHours; |
| struct { |
| ULONGLONG Count : 32; |
| ULONGLONG Reserved : 24; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } HeadFlyingHours; |
| struct { |
| ULONGLONG Count : 32; |
| ULONGLONG Reserved : 24; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } HeadLoadEvents; |
| struct { |
| ULONGLONG Count : 32; |
| ULONGLONG Reserved : 24; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } NumberOfReallocatedLogicalSectors; |
| struct { |
| ULONGLONG Count : 32; |
| ULONGLONG Reserved : 24; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } ReadRecoveryAttempts; |
| struct { |
| ULONGLONG Count : 32; |
| ULONGLONG Reserved : 24; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } NumberOfMechanicalStartFailures; |
| struct { |
| ULONGLONG Count : 32; |
| ULONGLONG Reserved : 24; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } NumberOfReallocationCandidateLogicalSectors; |
| struct { |
| ULONGLONG Count : 32; |
| ULONGLONG Reserved : 24; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } NumberOfHighPriorityUnloadEvents; |
| UCHAR Reserved[440]; |
| } GP_LOG_ROTATING_MEDIA_STATISTICS, *PGP_LOG_ROTATING_MEDIA_STATISTICS; |
| |
| typedef struct _GP_LOG_GENERAL_ERROR_STATISTICS { |
| DEVICE_STATISTICS_LOG_PAGE_HEADER Header; |
| struct { |
| ULONGLONG Count : 32; |
| ULONGLONG Reserved : 24; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } NumberOfReportedUncorrectableErrors; |
| struct { |
| ULONGLONG Count : 32; |
| ULONGLONG Reserved : 24; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } NumberOfResetsBetweenCommandAcceptanceAndCommandCompletion; |
| UCHAR Reserved[488]; |
| } GP_LOG_GENERAL_ERROR_STATISTICS, *PGP_LOG_GENERAL_ERROR_STATISTICS; |
| |
| typedef struct _GP_LOG_TEMPERATURE_STATISTICS { |
| DEVICE_STATISTICS_LOG_PAGE_HEADER Header; |
| struct { |
| ULONGLONG Value : 8; |
| ULONGLONG Reserved : 48; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } CurrentTemperature; |
| struct { |
| ULONGLONG Value : 8; |
| ULONGLONG Reserved : 48; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } AverageShortTermTemperature; |
| struct { |
| ULONGLONG Value : 8; |
| ULONGLONG Reserved : 48; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } AverageLongTermTemperature; |
| struct { |
| ULONGLONG Value : 8; |
| ULONGLONG Reserved : 48; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } HighestTemperature; |
| struct { |
| ULONGLONG Value : 8; |
| ULONGLONG Reserved : 48; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } LowestTemperature; |
| struct { |
| ULONGLONG Value : 8; |
| ULONGLONG Reserved : 48; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } HighestAverageShortTermTemperature; |
| struct { |
| ULONGLONG Value : 8; |
| ULONGLONG Reserved : 48; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } LowestAverageShortTermTemperature; |
| struct { |
| ULONGLONG Value : 8; |
| ULONGLONG Reserved : 48; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } HighstAverageLongTermTemperature; |
| struct { |
| ULONGLONG Value : 8; |
| ULONGLONG Reserved : 48; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } LowestAverageLongTermTemperature; |
| struct { |
| ULONGLONG Value : 8; |
| ULONGLONG Reserved : 48; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } TimeInOverTemperature; |
| struct { |
| ULONGLONG Value : 8; |
| ULONGLONG Reserved : 48; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } SpecifiedMaximumOperatingTemperature; |
| struct { |
| ULONGLONG Value : 8; |
| ULONGLONG Reserved : 48; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } TimeInUnderTemperature; |
| struct { |
| ULONGLONG Value : 8; |
| ULONGLONG Reserved : 48; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } SpecifiedMinimumOperatingTemperature; |
| UCHAR Reserved[400]; |
| } GP_LOG_TEMPERATURE_STATISTICS, *PGP_LOG_TEMPERATURE_STATISTICS; |
| |
| typedef struct _GP_LOG_TRANSPORT_STATISTICS { |
| DEVICE_STATISTICS_LOG_PAGE_HEADER Header; |
| struct { |
| ULONGLONG Count : 8; |
| ULONGLONG Reserved : 48; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } NumberOfHardwareResets; |
| struct { |
| ULONGLONG Count : 32; |
| ULONGLONG Reserved : 24; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } NumberOfAsrEvents; |
| struct { |
| ULONGLONG Count : 32; |
| ULONGLONG Reserved : 24; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } NumberOfInterfaceCrcErrors; |
| UCHAR Reserved[480]; |
| } GP_LOG_TRANSPORT_STATISTICS, *PGP_LOG_TRANSPORT_STATISTICS; |
| |
| typedef struct _GP_LOG_SOLID_STATE_DEVICE_STATISTICS { |
| DEVICE_STATISTICS_LOG_PAGE_HEADER Header; |
| struct { |
| ULONGLONG Value : 8; |
| ULONGLONG Reserved : 48; |
| ULONGLONG ReservedFlags : 3; |
| ULONGLONG MonitoredConditionMet : 1; |
| ULONGLONG StatisticsSupportsDsn : 1; |
| ULONGLONG Normalized : 1; |
| ULONGLONG ValidValue : 1; |
| ULONGLONG Supported : 1; |
| } PercentageUsedEnduranceIndicator; |
| UCHAR Reserved[496]; |
| } GP_LOG_SOLID_STATE_DEVICE_STATISTICS, *PGP_LOG_SOLID_STATE_DEVICE_STATISTICS; |
| |
| 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; |
| |
| typedef struct _GP_LOG_NCQ_NON_DATA { |
| struct { |
| ULONG AbortNcq : 1; |
| ULONG AbortAll : 1; |
| ULONG AbortStreaming : 1; |
| ULONG AbortNonStreaming : 1; |
| ULONG AbortSelectedTTag : 1; |
| ULONG Reserved : 27; |
| } SubCmd0; |
| struct { |
| ULONG DeadlineHandling : 1; |
| ULONG WriteDataNotContinue : 1; |
| ULONG ReadDataNotContinue : 1; |
| ULONG Reserved : 29; |
| } SubCmd1; |
| struct { |
| ULONG HybridDemoteBySize : 1; |
| ULONG Reserved : 31; |
| } SubCmd2; |
| struct { |
| ULONG HybridChangeByLbaRange : 1; |
| ULONG Reserved : 31; |
| } SubCmd3; |
| struct { |
| ULONG HybridControl : 1; |
| ULONG Reserved : 31; |
| } SubCmd4; |
| struct { |
| ULONG Reserved : 32; |
| } SubCmd5; |
| struct { |
| ULONG Reserved : 32; |
| } SubCmd6; |
| struct { |
| ULONG Reserved : 32; |
| } SubCmd7; |
| struct { |
| ULONG Reserved : 32; |
| } SubCmd8; |
| struct { |
| ULONG Reserved : 32; |
| } SubCmd9; |
| struct { |
| ULONG Reserved : 32; |
| } SubCmdA; |
| struct { |
| ULONG Reserved : 32; |
| } SubCmdB; |
| struct { |
| ULONG Reserved : 32; |
| } SubCmdC; |
| struct { |
| ULONG Reserved : 32; |
| } SubCmdD; |
| struct { |
| ULONG Reserved : 32; |
| } SubCmdE; |
| struct { |
| ULONG Reserved : 32; |
| } SubCmdF; |
| ULONG Reserved[112]; |
| } GP_LOG_NCQ_NON_DATA, *PGP_LOG_NCQ_NON_DATA; |
| |
| typedef struct _GP_LOG_NCQ_SEND_RECEIVE { |
| struct { |
| ULONG DataSetManagement : 1; |
| ULONG HybridEvict : 1; |
| ULONG Reserved : 30; |
| } SubCmd; |
| struct { |
| ULONG Trim : 1; |
| ULONG Reserved : 31; |
| } DataSetManagement; |
| ULONG Reserved[126]; |
| } GP_LOG_NCQ_SEND_RECEIVE, *PGP_LOG_NCQ_SEND_RECEIVE; |
| |
| typedef struct _GP_LOG_HYBRID_INFORMATION_HEADER { |
| USHORT HybridInfoDescrCount : 4; |
| USHORT Reserved0 : 12; |
| UCHAR Enabled; |
| UCHAR HybridHealth; |
| UCHAR DirtyLowThreshold; |
| UCHAR DirtyHighThreshold; |
| UCHAR OptimalWriteGranularity; |
| UCHAR MaximumHybridPriorityLevel : 4; |
| UCHAR Reserved1 : 4; |
| UCHAR PowerCondidtion; |
| UCHAR CachingMediumEnabled ; |
| struct { |
| UCHAR MaximumPriorityBehavior : 1; |
| UCHAR SupportCacheBehavior : 1; |
| UCHAR Reserved : 6; |
| } SupportedOptions; |
| UCHAR Reserved2; |
| ULONG TimeSinceEnabled; |
| ULONGLONG NVMSize; |
| ULONGLONG EnableCount; |
| USHORT MaximumEvictionCommands : 5; |
| USHORT Reserved3 : 11; |
| USHORT MaximumEvictionDataBlocks; |
| UCHAR Reserved[28]; |
| } GP_LOG_HYBRID_INFORMATION_HEADER, *PGP_LOG_HYBRID_INFORMATION_HEADER; |
| |
| typedef struct _GP_LOG_HYBRID_INFORMATION_DESCRIPTOR { |
| UCHAR HybridPriority; |
| UCHAR ConsumedNVMSizeFraction; |
| UCHAR ConsumedMappingResourcesFraction; |
| UCHAR ConsumedNVMSizeForDirtyDataFraction; |
| UCHAR ConsumedMappingResourcesForDirtyDataFraction; |
| UCHAR Reserved[11]; |
| } GP_LOG_HYBRID_INFORMATION_DESCRIPTOR, *PGP_LOG_HYBRID_INFORMATION_DESCRIPTOR; |
| |
| typedef struct _GP_LOG_HYBRID_INFORMATION { |
| GP_LOG_HYBRID_INFORMATION_HEADER Header; |
| GP_LOG_HYBRID_INFORMATION_DESCRIPTOR Descriptor[0]; |
| } GP_LOG_HYBRID_INFORMATION, *PGP_LOG_HYBRID_INFORMATION; |
| |
| typedef struct _REPORT_ZONES_EXT_DATA { |
| ULONG ZoneListLength; |
| UCHAR SAME : 4; |
| UCHAR Reserved0 : 4; |
| UCHAR Reserved1[3]; |
| ULONGLONG MaxLBA : 48; |
| ULONGLONG Reserved2 : 16; |
| UCHAR Reserved3[48]; |
| } REPORT_ZONES_EXT_DATA, *PREPORT_ZONES_EXT_DATA; |
| |
| typedef struct _ATA_ZONE_DESCRIPTOR { |
| UCHAR ZoneType : 4; |
| UCHAR Reserved0 : 4; |
| UCHAR Reset : 1; |
| UCHAR NonSeq : 1; |
| UCHAR Reserved1 : 2; |
| UCHAR ZoneCondition : 4; |
| UCHAR Reserved2[6]; |
| ULONGLONG ZoneLength : 48; |
| ULONGLONG Reserved3 : 16; |
| ULONGLONG ZoneStartLBA : 48; |
| ULONGLONG Reserved4 : 16; |
| ULONGLONG WritePointerLBA : 48; |
| ULONGLONG Reserved5 : 16; |
| UCHAR Reserved6[32]; |
| } ATA_ZONE_DESCRIPTOR, *PATA_ZONE_DESCRIPTOR; |
| |
| typedef struct _ATA_PHYSICAL_ELEMENT_STATUS_DESCRIPTOR { |
| UCHAR Reserved1[4]; |
| ULONG ElementIdentifier; |
| UCHAR Reserved2[6]; |
| UCHAR PhysicalElementType; |
| UCHAR PhysicalElementHealth; |
| ULONGLONG AssociatedCapacity; |
| UCHAR Reserved3[8]; |
| } ATA_PHYSICAL_ELEMENT_STATUS_DESCRIPTOR, *PATA_PHYSICAL_ELEMENT_STATUS_DESCRIPTOR; |
| |
| typedef struct _ATA_GET_PHYSICAL_ELEMENT_STATUS_PARAMETER_DATA { |
| ULONG NumberOfDescriptors; |
| ULONG NumberOfDescriptorsReturned; |
| ULONG ElementIdentifierBeingDepoped; |
| UCHAR Reserved[20]; |
| ATA_PHYSICAL_ELEMENT_STATUS_DESCRIPTOR Descriptors[ANYSIZE_ARRAY]; |
| } ATA_GET_PHYSICAL_ELEMENT_STATUS_PARAMETER_DATA, *PATA_GET_PHYSICAL_ELEMENT_STATUS_PARAMETER_DATA; |
| |
| #pragma pack(pop) |
| |
| #define ATAPI_MODE_SENSE 0x5A |
| #define ATAPI_MODE_SELECT 0x55 |
| #define ATAPI_LS120_FORMAT_UNIT 0x24 |
| |
| #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_BAD_BLOCK 0x80 |
| #define IDE_ERROR_CRC_ERROR IDE_ERROR_BAD_BLOCK |
| #define IDE_ERROR_DATA_ERROR 0x40 |
| #define IDE_ERROR_MEDIA_CHANGE 0x20 |
| #define IDE_ERROR_ID_NOT_FOUND 0x10 |
| #define IDE_ERROR_MEDIA_CHANGE_REQ 0x08 |
| #define IDE_ERROR_COMMAND_ABORTED 0x04 |
| #define IDE_ERROR_END_OF_MEDIA 0x02 |
| #define IDE_ERROR_ILLEGAL_LENGTH 0x01 |
| #define IDE_ERROR_ADDRESS_NOT_FOUND IDE_ERROR_ILLEGAL_LENGTH |
| |
| #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_SET_DEFAULT_PIO_MODE(mode) ((UCHAR)1) |
| #define IDE_SET_ADVANCE_PIO_MODE(mode) ((UCHAR)((1 << 3) | (mode))) |
| #define IDE_SET_SWDMA_MODE(mode) ((UCHAR)((1 << 4) | (mode))) |
| #define IDE_SET_MWDMA_MODE(mode) ((UCHAR)((1 << 5) | (mode))) |
| #define IDE_SET_UDMA_MODE(mode) ((UCHAR)((1 << 6) | (mode))) |
| |
| #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 |
| |
| #define IDE_SATA_FEATURE_NON_ZERO_DMA_BUFFER_OFFSET 0x1 |
| #define IDE_SATA_FEATURE_DMA_SETUP_FIS_AUTO_ACTIVATE 0x2 |
| #define IDE_SATA_FEATURE_DEVICE_INITIATED_POWER_MANAGEMENT 0x3 |
| #define IDE_SATA_FEATURE_GUARANTEED_IN_ORDER_DELIVERY 0x4 |
| #define IDE_SATA_FEATURE_ASYNCHRONOUS_NOTIFICATION 0x5 |
| #define IDE_SATA_FEATURE_SOFTWARE_SETTINGS_PRESERVATION 0x6 |
| #define IDE_SATA_FEATURE_DEVICE_AUTO_PARTIAL_TO_SLUMBER 0x7 |
| #define IDE_SATA_FEATURE_ENABLE_HARDWARE_FEATURE_CONTROL 0x8 |
| #define IDE_SATA_FEATURE_DEVSLP 0x9 |
| #define IDE_SATA_FEATURE_HYBRID_INFORMATION 0xA |
| |
| #define IDE_SMART_READ_ATTRIBUTES 0xD0 |
| #define IDE_SMART_READ_THRESHOLDS 0xD1 |
| #define IDE_SMART_ENABLE_DISABLE_AUTOSAVE 0xD2 |
| #define IDE_SMART_SAVE_ATTRIBUTE_VALUES 0xD3 |
| #define IDE_SMART_EXECUTE_OFFLINE_DIAGS 0xD4 |
| #define IDE_SMART_READ_LOG 0xD5 |
| #define IDE_SMART_WRITE_LOG 0xD6 |
| #define IDE_SMART_ENABLE 0xD8 |
| #define IDE_SMART_DISABLE 0xD9 |
| #define IDE_SMART_RETURN_STATUS 0xDA |
| #define IDE_SMART_ENABLE_DISABLE_AUTO_OFFLINE 0xDB |
| |
| #define IDE_DSM_FEATURE_TRIM 0x0001 |
| |
| #define IDE_NCQ_NON_DATA_ABORT_NCQ_QUEUE 0x00 |
| #define IDE_NCQ_NON_DATA_DEADLINE_HANDLING 0x01 |
| #define IDE_NCQ_NON_DATA_HYBRID_CHANGE_BY_SIZE 0x02 |
| #define IDE_NCQ_NON_DATA_HYBRID_DEMOTE_BY_SIZE 0x02 |
| #define IDE_NCQ_NON_DATA_HYBRID_CHANGE_BY_LBA_RANGE 0x03 |
| #define IDE_NCQ_NON_DATA_HYBRID_CONTROL 0x04 |
| |
| #define IDE_NCQ_SEND_DATA_SET_MANAGEMENT 0x00 |
| #define IDE_NCQ_SEND_HYBRID_EVICT 0x01 |
| |
| #define ATA_DEVICE_SET_PASSWORD_MASTER 0x01 |
| #define ATA_DEVICE_SET_PASSWORD_USER 0x00 |
| |
| #define IDE_GP_LOG_DIRECTORY_ADDRESS 0x00 |
| #define IDE_GP_SUMMARY_SMART_ERROR 0x01 |
| #define IDE_GP_COMPREHENSIVE_SMART_ERROR 0x02 |
| #define IDE_GP_EXTENDED_COMPREHENSIVE_SMART_ERROR 0x03 |
| #define IDE_GP_LOG_DEVICE_STATISTICS_ADDRESS 0x04 |
| #define IDE_GP_SMART_SELF_TEST 0x06 |
| #define IDE_GP_EXTENDED_SMART_SELF_TEST 0x07 |
| #define IDE_GP_LOG_POWER_CONDITIONS 0x08 |
| #define IDE_GP_SELECTIVE_SELF_TEST 0x09 |
| #define IDE_GP_DEVICE_STATISTICS_NOTIFICATION 0x0A |
| #define IDE_GP_PENDING_DEFECTS 0x0C |
| #define IDE_GP_LPS_MISALIGNMENT 0x0D |
| #define IDE_GP_LOG_NCQ_COMMAND_ERROR_ADDRESS 0x10 |
| #define IDE_GP_LOG_PHY_EVENT_COUNTER_ADDRESS 0x11 |
| #define IDE_GP_LOG_NCQ_NON_DATA_ADDRESS 0x12 |
| #define IDE_GP_LOG_NCQ_SEND_RECEIVE_ADDRESS 0x13 |
| #define IDE_GP_LOG_HYBRID_INFO_ADDRESS 0x14 |
| #define IDE_GP_LOG_REBUILD_ASSIST 0x15 |
| #define IDE_GP_LOG_LBA_STATUS 0x19 |
| #define IDE_GP_LOG_WRITE_STREAM_ERROR 0x21 |
| #define IDE_GP_LOG_READ_STREAM_ERROR 0x22 |
| #define IDE_GP_LOG_CURRENT_DEVICE_INTERNAL_STATUS 0x24 |
| #define IDE_GP_LOG_SAVED_DEVICE_INTERNAL_STATUS 0x25 |
| #define IDE_GP_LOG_IDENTIFY_DEVICE_DATA_ADDRESS 0x30 |
| #define IDE_GP_LOG_SCT_COMMAND_STATUS 0xE0 |
| #define IDE_GP_LOG_SCT_DATA_TRANSFER 0xE1 |
| |
| #define IDE_GP_LOG_SECTOR_SIZE 0x200 |
| |
| #define IDE_GP_LOG_VERSION 0x0001 |
| |
| #define IDE_GP_LOG_SUPPORTED_PAGES 0x00 |
| |
| #define IDE_GP_LOG_IDENTIFY_DEVICE_DATA_SUPPORTED_CAPABILITIES_PAGE 0x03 |
| #define IDE_GP_LOG_IDENTIFY_DEVICE_DATA_SATA_PAGE 0x08 |
| #define IDE_GP_LOG_IDENTIFY_DEVICE_DATA_ZONED_DEVICE_INFORMATION_PAGE 0x09 |
| |
| #define ATA_ZONED_CAPABILITIES_NOT_REPORTED 0x0 |
| #define ATA_ZONED_CAPABILITIES_HOST_AWARE 0x1 |
| #define ATA_ZONED_CAPABILITIES_DEVICE_MANAGED 0x2 |
| |
| #define ZAC_REVISION_NOT_REPORTED_1 0x0000 |
| #define ZAC_REVISION_NOT_REPORTED_2 0xFFFF |
| #define ZAC_REVISION_01 0xB6E8 |
| #define ZAC_REVISION_04 0xA36C |
| |
| #define CURRENT_DEVICE_INTERNAL_STATUS_DATA_LOG_ADDRESS 0x24 |
| #define SAVED_DEVICE_INTERNAL_STATUS_DATA_LOG_ADDRESS 0x25 |
| |
| #define IDE_GP_LOG_DEVICE_STATISTICS_GENERAL_PAGE 0x01 |
| #define IDE_GP_LOG_DEVICE_STATISTICS_FREE_FALL_PAGE 0x02 |
| #define IDE_GP_LOG_DEVICE_STATISTICS_ROTATING_MEDIA_PAGE 0x03 |
| #define IDE_GP_LOG_DEVICE_STATISTICS_GENERAL_ERROR_PAGE 0x04 |
| #define IDE_GP_LOG_DEVICE_STATISTICS_TEMPERATURE_PAGE 0x05 |
| #define IDE_GP_LOG_DEVICE_STATISTICS_TRANSPORT_PAGE 0x06 |
| #define IDE_GP_LOG_DEVICE_STATISTICS_SSD_PAGE 0x07 |
| |
| #define HYBRID_INFORMATION_DISABLED 0x00 |
| #define HYBRID_INFORMATION_DISABLE_IN_PROCESS 0x80 |
| #define HYBRID_INFORMATION_ENABLED 0xFF |
| |
| #define HYBRID_HEALTH_UNUSEABLE 0x01 |
| #define HYBRID_HEALTH_NVM_SIZE_CHANGED 0x02 |
| #define HYBRID_HEALTH_READ_ONLY 0x04 |
| #define HYBRID_HEALTH_DATA_LOSS 0x08 |
| |
| #define ATA_DEVICE_SIGNATURE_ATA 0x00000101 |
| #define ATA_DEVICE_SIGNATURE_ATAPI 0xEB140101 |
| #define ATA_DEVICE_SIGNATURE_HOST_ZONED 0xABCD0101 |
| #define ATA_DEVICE_SIGNATURE_ENCLOSURE 0xC33C0101 |
| #define ATA_DEVICE_SIGNATURE_PORT_MULTIPLIER 0x96690101 |
| |
| #define ZM_ACTION_REPORT_ZONES 0x00 |
| #define ZM_ACTION_CLOSE_ZONE 0x01 |
| #define ZM_ACTION_FINISH_ZONE 0x02 |
| #define ZM_ACTION_OPEN_ZONE 0x03 |
| #define ZM_ACTION_RESET_WRITE_POINTER 0x04 |
| |
| #define ZM_ALL_ZONES_BIT (1 << 8) |
| |
| #define ATA_REPORT_ZONES_OPTION_LIST_ALL_ZONES 0x00 |
| #define ATA_REPORT_ZONES_OPTION_LIST_EMPTY_ZONES 0x01 |
| #define ATA_REPORT_ZONES_OPTION_LIST_IMPLICITLY_OPENED_ZONES 0x02 |
| #define ATA_REPORT_ZONES_OPTION_LIST_EXPLICITLY_OPENED_ZONES 0x03 |
| #define ATA_REPORT_ZONES_OPTION_LIST_CLOSED_ZONES 0x04 |
| #define ATA_REPORT_ZONES_OPTION_LIST_FULL_ZONES 0x05 |
| #define ATA_REPORT_ZONES_OPTION_LIST_READ_ONLY_ZONES 0x06 |
| #define ATA_REPORT_ZONES_OPTION_LIST_OFFLINE_ZONES 0x07 |
| |
| #define ATA_REPORT_ZONES_OPTION_LIST_RWP_ZONES 0x10 |
| #define ATA_REPORT_ZONES_OPTION_LIST_NON_SEQUENTIAL_WRITE_RESOURCES_ACTIVE_ZONES 0x11 |
| |
| #define ATA_REPORT_ZONES_OPTION_LIST_NOT_WRITE_POINTER_ZONES 0x3F |
| |
| #define ATA_ZONES_TYPE_AND_LENGTH_MAY_DIFFERENT 0x0 |
| #define ATA_ZONES_TYPE_SAME_LENGTH_SAME 0x1 |
| #define ATA_ZONES_TYPE_SAME_LAST_ZONE_LENGTH_DIFFERENT 0x2 |
| #define ATA_ZONES_TYPE_MAY_DIFFERENT_LENGTH_SAME 0x3 |
| |
| #define ATA_ZONE_TYPE_CONVENTIONAL 0x1 |
| #define ATA_ZONE_TYPE_SEQUENTIAL_WRITE_REQUIRED 0x2 |
| #define ATA_ZONE_TYPE_SEQUENTIAL_WRITE_PREFERRED 0x3 |
| |
| #define ATA_ZONE_CONDITION_NOT_WRITE_POINTER 0x0 |
| #define ATA_ZONE_CONDITION_EMPTY 0x1 |
| #define ATA_ZONE_CONDITION_IMPLICITLY_OPENED 0x2 |
| #define ATA_ZONE_CONDITION_EXPLICITLY_OPENED 0x3 |
| #define ATA_ZONE_CONDITION_CLOSED 0x4 |
| #define ATA_ZONE_CONDITION_READ_ONLY 0xD |
| #define ATA_ZONE_CONDITION_FULL 0xE |
| #define ATA_ZONE_CONDITION_OFFLINE 0xF |
| |
| #endif |