diff --git a/constants/Identify_ATA_struct.c b/constants/Identify_ATA_struct.c new file mode 100644 index 0000000..4843ba1 --- /dev/null +++ b/constants/Identify_ATA_struct.c @@ -0,0 +1,408 @@ +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; \ No newline at end of file diff --git a/structures/Identify_ATA_Struct.inc b/structures/Identify_ATA_Struct.inc new file mode 100644 index 0000000..2430f30 --- /dev/null +++ b/structures/Identify_ATA_Struct.inc @@ -0,0 +1,344 @@ + STRUCT _ATA_IDENTIFY_DEVICE_DATA +;Reserved1 bit 0 +;Retired3 bit 1 +;ResponseIncomplete bit 2 +;Retired2 bit 3..5 +;FixedDevice bit 6 +;RemovableMedia bit 7 +;Retired1 bit 8..14 +;DeviceType bit 15 +GeneralConfiguration WORD ; 0 +NumCylinders WORD ; 1 +SpecificConfiguration WORD ; 2 +NumHeads WORD ; 3 +NumUnformattedBytesPerTrack WORD ; 4 +NumUnformattedBytesPerSector WORD ; 5 +NumSectorsPerTrack WORD ; 6 +VendorUnique7 BLOCK 6 ; 6 +SerialNumber BLOCK 20 ; 10 +BufferType WORD ; 20 +BufferSizeMul_512 WORD ; 21 +Obsolete22 WORD ; 22 +FirmwareRevision BLOCK 8 ; 23 +ModelNumber BLOCK 40 ; 27 +MaximumBlockTransfer BYTE ; 47 +VendorUnique2 BYTE +;FeatureSupported bit 0 +;Reserved bit 1..15 +TrustedComputing WORD ; 48 +;CurrentLongPhysicalSectorAlignment bit 0..1 +;Reserved bit 2..7 +;DMAsupported bit 8 +;LBAsupported bit 9 +;IORDYdisable bit 10 +;IORDYsupported bit 11 +;Obsolete1 bit 12 +;OverlapOperationSupported bit 13 +;CommandQueuingSupported bit 14 +;InterleavedDMAsupported bit 15 +Capabilities WORD ; 49 +Reserved50 WORD ; 50 + +ObsoleteWords51 WORD ; 51 +ObsoleteWords52 WORD ; 52 +;FieldsInWords54_58Valid bit 0 +;FieldsInWords64_70Valid bit 1 +;FieldsInWord88_Valid bit 2 +;Reserved bit 3..15 +TranslationFieldsValid WORD ; 53 +NumberOfCurrentCylinders WORD ; 54 +NumberOfCurrentHeads WORD ; 55 +CurrentSectorsPerTrack WORD ; 56 +CurrentSectorCapacity DWORD ; 57 +;SectorsPerInt bit 0..7 +;MultiSectorSettingValid bit 8 +;Reserved bit 9..11 +;SanitizeFeatureSupported bit 12 +;CryptoScrambleExtCommandSupported bit 13 +;OverwriteExtCommandSupported bit 14 +;BlockEraseExtCommandSupported bit 15 +CurrentMultiSectorSetting WORD ; 59 +UserAddressableSectors DWORD ; 60 + +;TransferModesSupported bit 0..7 +;TransferModeActive bit 8..15 +SingleWordDMA WORD ; 62 +;TransferModesSupported bit 0..7 +;TransferModeActive bit 8..15 +MultiWordDMA WORD ; 63 + +AdvancedPIOModes BYTE ; 64 +ReservedByte129 BYTE +MinimumMWXferCycleTime WORD ; 65 +RecommendedMWXferCycleTime WORD ; 66 +MinimumPIOCycleTime WORD ; 67 +MinimumPIOCycleTimeIORDY WORD ; 68 +;ZonedCapabilities bit 0..1 +;NonVolatileWriteCache bit 2 +;ExtendedUserAddressableSectorsSupported bit 3 +;DeviceEncryptsAllUserData bit 4 +;ReadZeroAfterTrimSupported bit 5 +;Optional28BitCommandsSupported bit 6 +;IEEE1667 bit 7 +;DownloadMicrocodeDmaSupported bit 8 +;SetMaxSetPasswordUnlockDmaSupported bit 9 +;WriteBufferDmaSupported bit 10 +;ReadBufferDmaSupported bit 11 +;DeviceConfigIdentifySetDmaSupported bit 12 +;LPSAERCSupported bit 13 +;DeterministicReadAfterTrimSupported bit 14 +;CFastSpecSupported bit 15 +AdditionalSupported WORD ; 69 +ReservedWords70 BLOCK 10 ; 70 +QueueDepth WORD ; 75 +SerialAtaCapabilities DWORD ; 76 +SerialAtaFeaturesSupported WORD ; 78 +SerialAtaFeaturesEnabled WORD ; 79 + +MajorRevision WORD ; 80 +MinorRevision WORD ; 81 +;SmartCommands bit 0 +;SecurityMode bit 1 +;RemovableMediaFeature bit 2 +;PowerManagement bit 3 +;Reserved1 bit 4 +;WriteCache bit 5 +;LookAhead bit 6 +;ReleaseInterrupt bit 7 +;ServiceInterrupt bit 8 +;DeviceReset bit 9 +;HostProtectedArea bit 10 +;Obsolete1 bit 11 +;WriteBuffer bit 12 +;ReadBuffer bit 13 +;Nop bit 14 +;Obsolete2 bit 15 +;DownloadMicrocode bit 16 +;DmaQueued bit 17 +;Cfa bit 18 +;AdvancedPm bit 19 +;Msn bit 20 +;PowerUpInStandby bit 21 +;ManualPowerUp bit 22 +;Reserved2 bit 23 +;SetMax bit 24 +;Acoustics bit 25 +;BigLba bit 26 +;DeviceConfigOverlay bit 27 +;FlushCache bit 28 +;FlushCacheExt bit 29 +;WordValid83 bit 30..31 +;SmartErrorLog bit 32 +;SmartSelfTest bit 33 +;MediaSerialNumber bit 34 +;MediaCardPassThrough bit 35 +;StreamingFeature bit 36 +;GpLogging bit 37 +;WriteFua bit 38 +;WriteQueuedFua bit 39 +;WWN64Bit bit 40 +;URGReadStream bit 41 +;URGWriteStream bit 42 +;ReservedForTechReport bit 43.44 +;IdleWithUnloadFeature bit 45 +;WordValid bit 46..47 +CommandSetSupport BLOCK 6 ; 82 +;SmartCommands bit 0 +;SecurityMode bit 1 +;RemovableMediaFeature bit 2 +;PowerManagement bit 3 +;Reserved1 bit 4 +;WriteCache bit 5 +;LookAhead bit 6 +;ReleaseInterrupt bit 7 +;ServiceInterrupt bit 8 +;DeviceReset bit 9 +;HostProtectedArea bit 10 +;Obsolete1 bit 11 +;WriteBuffer bit 12 +;ReadBuffer bit 13 +;Nop bit 14 +;Obsolete2 bit 15 +;DownloadMicrocode bit 16 +;DmaQueued bit 17 +;Cfa bit 18 +;AdvancedPm bit 19 +;Msn bit 20 +;PowerUpInStandby bit 21 +;ManualPowerUp bit 22 +;Reserved2 bit 23 +;SetMax bit 24 +;Acoustics bit 25 +;BigLba bit 26 +;DeviceConfigOverlay bit 27 +;FlushCache bit 28 +;FlushCacheExt bit 29 +;Resrved3 bit 30 +;Words119_120Valid bit 31 +;SmartErrorLog bit 32 +;SmartSelfTest bit 33 +;MediaSerialNumber bit 34 +;MediaCardPassThrough bit 35 +;StreamingFeature bit 36 +;GpLogging bit 37 +;WriteFua bit 38 +;WriteQueuedFua bit 39 +;WWN64Bit bit 40 +;URGReadStream bit 41 +;URGWriteStream bit 42 +;ReservedForTechReport bit 43..44 +;IdleWithUnloadFeature bit 45 +;Reserved4 bit 46..47 +CommandSetActive BLOCK 6 ; 85 + +UltraDMASupport BYTE ; 88 +UltraDMAActive BYTE +; USHORT TimeRequired : 15 +; USHORT ExtendedTimeReported : 1 +NormalSecurityEraseUnit WORD ; 89 +; USHORT TimeRequired : 15 +; USHORT ExtendedTimeReported : 1 +EnhancedSecurityEraseUnit WORD ; 90 + +CurrentAPMLevel BYTE ; 91 +ReservedByte183 BYTE +MasterPasswordID WORD ; 92 +HardwareResetResult WORD ; 93 +CurrentAcousticValue BYTE ; 94 +RecommendedAcousticValue BYTE +StreamMinRequestSize WORD ; 95 +StreamingTransferTimeDMA WORD ; 96 +StreamingAccessLatencyDMAPIO WORD ; 97 +StreamingPerfGranularity DWORD ; 98 +Max48BitLBA BLOCK 8 ; 100 +StreamingTransferTime WORD ; 104 +DsmCap WORD ; 105 +;LogicalSectorsPerPhysicalSector : 4 +;Reserved0 : 8 +;LogicalSectorLongerThan256Words : 1 +;MultipleLogicalSectorsPerPhysicalSector : 1 +;Reserved1 : 2 +PhysicalLogicalSectorSize WORD ; 106 +InterSeekDelay WORD ; 107 +WorldWideName[4] BLOCK 8 ; 108 +ReservedForWorldWideName128[4] BLOCK 8 ; 112 +ReservedForTlcTechnicalReport WORD ; 116 +WordsPerLogicalSector[2] DWORD ; 117 +;ReservedForDrqTechnicalReport : 1 +;WriteReadVerify : 1 +;WriteUncorrectableExt : 1 +;ReadWriteLogDmaExt : 1 +;DownloadMicrocodeMode3 : 1 +;FreefallControl : 1 +;SenseDataReporting : 1 +;ExtendedPowerConditions : 1 +;Reserved0 : 6 +;WordValid : 2 +CommandSetSupportExt WORD ; 119 +;ReservedForDrqTechnicalReport : 1 +;WriteReadVerify : 1 +;WriteUncorrectableExt : 1 +;ReadWriteLogDmaExt : 1 +;DownloadMicrocodeMode3 : 1 +;FreefallControl : 1 +;SenseDataReporting : 1 +;ExtendedPowerConditions : 1 +;Reserved0 : 6 +;Reserved1 : 2 +CommandSetActiveExt WORD ; 120 + +Reserved121 BLOCK 12 ; 121 +MsnSupport BYTE ; 127 +ReservedByte255 BYTE + +;SecuritySupported : 1 +;SecurityEnabled : 1 +;SecurityLocked : 1 +;SecurityFrozen : 1 +;SecurityCountExpired : 1 +;EnhancedSecurityEraseSupported : 1 +;Reserved0 : 2 +;SecurityLevel : 1 +;Reserved1 : 7 +SecurityStatus WORD ; 128 + +ReservedBlock129 BLOCK 62 ; 129 +;MaximumCurrentInMA : 12 +;CfaPowerMode1Disabled : 1 +;CfaPowerMode1Required : 1 +;Reserved0 : 1 +;Word160Supported : 1 +CfaPowerMode1 WORD ; 160 + +ReservedBlock161 BLOCK 14 ; 161 +NominalFormFactor WORD ; 168 + + + 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 + ENDS \ No newline at end of file