mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 18:15:11 +00:00
301 lines
9.3 KiB
C
301 lines
9.3 KiB
C
#ifndef _NTATA_
|
|
#define _NTATA_
|
|
|
|
#include <pshpack1.h>
|
|
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 ReservedWord2;
|
|
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;
|
|
USHORT ReservedWord48;
|
|
struct {
|
|
UCHAR ReservedByte49;
|
|
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 :13;
|
|
USHORT NumberOfCurrentCylinders;
|
|
USHORT NumberOfCurrentHeads;
|
|
USHORT CurrentSectorsPerTrack;
|
|
ULONG CurrentSectorCapacity;
|
|
UCHAR CurrentMultiSectorSetting;
|
|
UCHAR MultiSectorSettingValid :1;
|
|
UCHAR ReservedByte59 :7;
|
|
ULONG UserAddressableSectors;
|
|
USHORT ObsoleteWord62;
|
|
USHORT MultiWordDMASupport :8;
|
|
USHORT MultiWordDMAActive :8;
|
|
USHORT AdvancedPIOModes :8;
|
|
USHORT ReservedByte64 :8;
|
|
USHORT MinimumMWXferCycleTime;
|
|
USHORT RecommendedMWXferCycleTime;
|
|
USHORT MinimumPIOCycleTime;
|
|
USHORT MinimumPIOCycleTimeIORDY;
|
|
USHORT ReservedWords69[6];
|
|
USHORT QueueDepth :5;
|
|
USHORT ReservedWord75 :11;
|
|
USHORT ReservedWords76[4];
|
|
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 Resrved3 :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 Reserved4 :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 :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 Reserved4 :2;
|
|
} CommandSetActive;
|
|
USHORT UltraDMASupport :8;
|
|
USHORT UltraDMAActive :8;
|
|
USHORT ReservedWord89[4];
|
|
USHORT HardwareResetResult;
|
|
USHORT CurrentAcousticValue :8;
|
|
USHORT RecommendedAcousticValue :8;
|
|
USHORT ReservedWord95[5];
|
|
ULONG Max48BitLBA[2];
|
|
USHORT StreamingTransferTime;
|
|
USHORT ReservedWord105;
|
|
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 WriteReadVerifySupported :1;
|
|
USHORT Reserved01 :11;
|
|
USHORT Reserved1 :2;
|
|
} CommandSetSupportExt;
|
|
struct {
|
|
USHORT ReservedForDrqTechnicalReport :1;
|
|
USHORT WriteReadVerifyEnabled :1;
|
|
USHORT Reserved01 :11;
|
|
USHORT Reserved1 :2;
|
|
} CommandSetActiveExt;
|
|
USHORT ReservedForExpandedSupportandActive[6];
|
|
USHORT MsnSupport :2;
|
|
USHORT ReservedWord1274 :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 MaximumCurrentInMA2 :12;
|
|
USHORT CfaPowerMode1Disabled :1;
|
|
USHORT CfaPowerMode1Required :1;
|
|
USHORT Reserved0 :1;
|
|
USHORT Word160Supported :1;
|
|
} CfaPowerModel;
|
|
USHORT ReservedForCfaWord161[8];
|
|
struct {
|
|
USHORT SupportsTrim :1;
|
|
USHORT Reserved0 :15;
|
|
} DataSetManagementFeature;
|
|
USHORT ReservedForCfaWord170[6];
|
|
USHORT CurrentMediaSerialNumber[30];
|
|
USHORT ReservedWord206;
|
|
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 ReservedWord220[35];
|
|
USHORT Signature :8;
|
|
USHORT CheckSum :8;
|
|
} IDENTIFY_DEVICE_DATA, *PIDENTIFY_DEVICE_DATA;
|
|
#include <poppack.h>
|
|
|
|
#define IDE_LBA_MODE (1 << 6)
|
|
|
|
#define IDE_COMMAND_NOP 0x00
|
|
#define IDE_COMMAND_DATA_SET_MANAGEMENT 0x06
|
|
#define IDE_COMMAND_ATAPI_RESET 0x08
|
|
#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_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_VERIFY 0x40
|
|
#define IDE_COMMAND_VERIFY_EXT 0x42
|
|
#define IDE_COMMAND_EXECUTE_DEVICE_DIAGNOSTIC 0x90
|
|
#define IDE_COMMAND_SET_DRIVE_PARAMETERS 0x91
|
|
#define IDE_COMMAND_ATAPI_PACKET 0xA0
|
|
#define IDE_COMMAND_ATAPI_IDENTIFY 0xA1
|
|
#define IDE_COMMAND_SMART 0xB0
|
|
#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_FREEZE_LOCK 0xF5
|
|
#define IDE_COMMAND_NOT_VALID 0xFF
|
|
|
|
#endif
|