Signed-off-by: Mark Harmstone <m...@harmstone.com> --- mingw-w64-headers/ddk/include/ddk/ata.h | 1732 +++++++++++++++++++++++ 1 file changed, 1732 insertions(+) create mode 100644 mingw-w64-headers/ddk/include/ddk/ata.h
diff --git a/mingw-w64-headers/ddk/include/ddk/ata.h b/mingw-w64-headers/ddk/include/ddk/ata.h new file mode 100644 index 000000000..2d95717e8 --- /dev/null +++ b/mingw-w64-headers/ddk/include/ddk/ata.h @@ -0,0 +1,1732 @@ +/** + * 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 -- 2.32.0 _______________________________________________ Mingw-w64-public mailing list Mingw-w64-public@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mingw-w64-public