Interesting. The first error is shown by g++ now this error is shown by gcc. Here I remove the _LBA and _MSF names from the structs.
From 120b04e6ebd083042e65669fbd079cfec53145a5 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath <nathbap...@gmail.com> Date: Tue, 16 Jun 2020 21:40:21 +0530 Subject: [PATCH] ddk/scsi: add missing enum and define entries
Signed-off-by: Biswapriyo Nath <nathbap...@gmail.com> --- mingw-w64-headers/ddk/include/ddk/scsi.h | 402 +++++++++++++++++++++-- 1 file changed, 379 insertions(+), 23 deletions(-) diff --git a/mingw-w64-headers/ddk/include/ddk/scsi.h b/mingw-w64-headers/ddk/include/ddk/scsi.h index 962b2a9..94f20b4 100644 --- a/mingw-w64-headers/ddk/include/ddk/scsi.h +++ b/mingw-w64-headers/ddk/include/ddk/scsi.h @@ -113,12 +113,15 @@ extern "C" { #define NOTIFICATION_BUSY_EVENT_NO_EVENT 0x0 #define NOTIFICATION_BUSY_EVENT_NO_CHANGE 0x0 #define NOTIFICATION_BUSY_EVENT_BUSY 0x1 +#define NOTIFICATION_BUSY_EVENT_LO_CHANGE 0x2 #define NOTIFICATION_BUSY_STATUS_NO_EVENT 0x0 #define NOTIFICATION_BUSY_STATUS_POWER 0x1 #define NOTIFICATION_BUSY_STATUS_IMMEDIATE 0x2 #define NOTIFICATION_BUSY_STATUS_DEFERRED 0x3 +#define SECURITY_PROTOCOL_IEEE1667 0xEE + #define DVD_FORMAT_LEAD_IN 0x00 #define DVD_FORMAT_COPYRIGHT 0x01 #define DVD_FORMAT_DISK_KEY 0x02 @@ -292,6 +295,7 @@ extern "C" { #define SCSIOP_CHANGE_DEFINITION 0x40 #define SCSIOP_WRITE_SAME 0x41 #define SCSIOP_READ_SUB_CHANNEL 0x42 +#define SCSIOP_UNMAP 0x42 #define SCSIOP_READ_TOC 0x43 #define SCSIOP_READ_HEADER 0x44 #define SCSIOP_REPORT_DENSITY_SUPPORT 0x44 @@ -299,6 +303,7 @@ extern "C" { #define SCSIOP_GET_CONFIGURATION 0x46 #define SCSIOP_PLAY_AUDIO_MSF 0x47 #define SCSIOP_PLAY_TRACK_INDEX 0x48 +#define SCSIOP_SANITIZE 0x48 #define SCSIOP_PLAY_TRACK_RELATIVE 0x49 #define SCSIOP_GET_EVENT_STATUS 0x4A #define SCSIOP_PAUSE_RESUME 0x4B @@ -330,6 +335,7 @@ extern "C" { #define SCSIOP_BLANK 0xA1 #define SCSIOP_ATA_PASSTHROUGH12 0xA1 #define SCSIOP_SEND_EVENT 0xA2 +#define SCSIOP_SECURITY_PROTOCOL_IN 0xA2 #define SCSIOP_SEND_KEY 0xA3 #define SCSIOP_MAINTENANCE_IN 0xA3 #define SCSIOP_REPORT_KEY 0xA4 @@ -355,6 +361,7 @@ extern "C" { #define SCSIOP_SET_LIMITS12 0xB3 #define SCSIOP_READ_ELEMENT_STATUS_ATTACHED 0xB4 #define SCSIOP_REQUEST_VOL_ELEMENT 0xB5 +#define SCSIOP_SECURITY_PROTOCOL_OUT 0xB5 #define SCSIOP_SEND_VOLUME_TAG 0xB6 #define SCSIOP_SET_STREAMING 0xB6 #define SCSIOP_READ_DEFECT_DATA 0xB7 @@ -380,11 +387,15 @@ extern "C" { #define SCSIOP_READ_REVERSE16 0x81 #define SCSIOP_REGENERATE16 0x82 #define SCSIOP_EXTENDED_COPY 0x83 +#define SCSIOP_POPULATE_TOKEN 0x83 +#define SCSIOP_WRITE_USING_TOKEN 0x83 #define SCSIOP_RECEIVE_COPY_RESULTS 0x84 +#define SCSIOP_RECEIVE_ROD_TOKEN_INFORMATION 0x84 #define SCSIOP_ATA_PASSTHROUGH16 0x85 #define SCSIOP_ACCESS_CONTROL_IN 0x86 #define SCSIOP_ACCESS_CONTROL_OUT 0x87 #define SCSIOP_READ16 0x88 +#define SCSIOP_COMPARE_AND_WRITE 0x89 #define SCSIOP_WRITE16 0x8A #define SCSIOP_READ_ATTRIBUTES 0x8C #define SCSIOP_WRITE_ATTRIBUTES 0x8D @@ -397,10 +408,62 @@ extern "C" { #define SCSIOP_LOCATE16 0x92 #define SCSIOP_WRITE_SAME16 0x93 #define SCSIOP_ERASE16 0x93 +#define SCSIOP_ZBC_OUT 0x94 +#define SCSIOP_ZBC_IN 0x95 +#define SCSIOP_READ_DATA_BUFF16 0x9B #define SCSIOP_READ_CAPACITY16 0x9E +#define SCSIOP_GET_LBA_STATUS 0x9E +#define SCSIOP_GET_PHYSICAL_ELEMENT_STATUS 0x9E +#define SCSIOP_REMOVE_ELEMENT_AND_TRUNCATE 0x9E #define SCSIOP_SERVICE_ACTION_IN16 0x9E #define SCSIOP_SERVICE_ACTION_OUT16 0x9F +#define SCSIOP_OPERATION32 0x7F + +#define SERVICE_ACTION_OVERWRITE 0x01 +#define SERVICE_ACTION_BLOCK_ERASE 0x02 +#define SERVICE_ACTION_CRYPTO_ERASE 0x03 +#define SERVICE_ACTION_EXIT_FAILURE 0x1f + +#define SERVICE_ACTION_XDWRITE 0x0004 +#define SERVICE_ACTION_XPWRITE 0x0006 +#define SERVICE_ACTION_XDWRITEREAD 0x0007 +#define SERVICE_ACTION_WRITE 0x000B +#define SERVICE_ACTION_WRITE_VERIFY 0x000C +#define SERVICE_ACTION_WRITE_SAME 0x000D +#define SERVICE_ACTION_ORWRITE 0x000E + +#define SERVICE_ACTION_POPULATE_TOKEN 0x10 +#define SERVICE_ACTION_WRITE_USING_TOKEN 0x11 + +#define SERVICE_ACTION_RECEIVE_TOKEN_INFORMATION 0x07 + +#define SERVICE_ACTION_CLOSE_ZONE 0x01 +#define SERVICE_ACTION_FINISH_ZONE 0x02 +#define SERVICE_ACTION_OPEN_ZONE 0x03 +#define SERVICE_ACTION_RESET_WRITE_POINTER 0x04 + +#define SERVICE_ACTION_REPORT_ZONES 0x00 + +#define REPORT_ZONES_OPTION_LIST_ALL_ZONES 0x00 +#define REPORT_ZONES_OPTION_LIST_EMPTY_ZONES 0x01 +#define REPORT_ZONES_OPTION_LIST_IMPLICITLY_OPENED_ZONES 0x02 +#define REPORT_ZONES_OPTION_LIST_EXPLICITLY_OPENED_ZONES 0x03 +#define REPORT_ZONES_OPTION_LIST_CLOSED_ZONES 0x04 +#define REPORT_ZONES_OPTION_LIST_FULL_ZONES 0x05 +#define REPORT_ZONES_OPTION_LIST_READ_ONLY_ZONES 0x06 +#define REPORT_ZONES_OPTION_LIST_OFFLINE_ZONES 0x07 +#define REPORT_ZONES_OPTION_LIST_RWP_ZONES 0x10 +#define REPORT_ZONES_OPTION_LIST_NON_SEQUENTIAL_WRITE_RESOURCES_ACTIVE_ZONES 0x11 +#define REPORT_ZONES_OPTION_LIST_NOT_WRITE_POINTER_ZONES 0x3F + +#define SERVICE_ACTION_READ_CAPACITY16 0x10 +#define SERVICE_ACTION_GET_LBA_STATUS 0x12 +#define SERVICE_ACTION_GET_PHYSICAL_ELEMENT_STATUS 0x17 +#define SERVICE_ACTION_REMOVE_ELEMENT_AND_TRUNCATE 0x18 +#define SERVICE_ACTION_REPORT_TIMESTAMP 0x0F +#define SERVICE_ACTION_SET_TIMESTAMP 0x0F + #define CDB_RETURN_ON_COMPLETION 0 #define CDB_RETURN_IMMEDIATE 1 @@ -454,6 +517,9 @@ extern "C" { #define START_UNIT_CODE 0x01 #define STOP_UNIT_CODE 0x00 +#define OFFSET_VER_DESCRIPTOR_ONE (FIELD_OFFSET(INQUIRYDATA, VersionDescriptors[0])) +#define OFFSET_VER_DESCRIPTOR_EIGHT (FIELD_OFFSET(INQUIRYDATA, VersionDescriptors[8])) + /* INQUIRYDATA.DeviceType constants */ #define DIRECT_ACCESS_DEVICE 0x00 #define SEQUENTIAL_ACCESS_DEVICE 0x01 @@ -471,6 +537,8 @@ extern "C" { #define OPTICAL_CARD_READER_WRITER_DEVICE 0x0F #define BRIDGE_CONTROLLER_DEVICE 0x10 #define OBJECT_BASED_STORAGE_DEVICE 0x11 +#define HOST_MANAGED_ZONED_BLOCK_DEVICE 0x14 +#define UNKNOWN_OR_NO_DEVICE 0x1F #define LOGICAL_UNIT_NOT_PRESENT_DEVICE 0x7F #define DEVICE_QUALIFIER_ACTIVE 0x00 @@ -785,6 +853,26 @@ typedef union _CDB { UCHAR VerificationLength[3]; UCHAR Control; } CDB6VERIFY; + struct _RECEIVE_DIAGNOSTIC { + UCHAR OperationCode; + UCHAR PageCodeValid:1; + UCHAR Reserved:7; + UCHAR PageCode; + UCHAR AllocationLength[2]; + UCHAR Control; + } RECEIVE_DIAGNOSTIC; + struct _SEND_DIAGNOSTIC { + UCHAR OperationCode; + UCHAR UnitOffline:1; + UCHAR DeviceOffline:1; + UCHAR SelfTest:1; + UCHAR Reserved1:1; + UCHAR PageFormat:1; + UCHAR SelfTestCode:3; + UCHAR Reserved2; + UCHAR ParameterListLength[2]; + UCHAR Control; + } SEND_DIAGNOSTIC; struct _CDB6FORMAT { UCHAR OperationCode; UCHAR FormatControl:5; @@ -833,6 +921,66 @@ typedef union _CDB { UCHAR Reserved2; UCHAR Control; } CDB16; + struct _READ_BUFFER_10 { + UCHAR OperationCode; + UCHAR Mode:5; + UCHAR ModeSpecific:3; + UCHAR BufferId; + UCHAR BufferOffset[3]; + UCHAR AllocationLength[3]; + UCHAR Control; + } READ_BUFFER_10; + struct _READ_BUFFER_16 { + UCHAR OperationCode; + UCHAR Mode:5; + UCHAR ModeSpecific:3; + UCHAR BufferOffset[8]; + UCHAR AllocationLength[4]; + UCHAR BufferId; + UCHAR Control; + } READ_BUFFER_16; + struct _SECURITY_PROTOCOL_IN { + UCHAR OperationCode; + UCHAR SecurityProtocol; + UCHAR SecurityProtocolSpecific[2]; + UCHAR Reserved1:7; + UCHAR INC_512:1; + UCHAR Reserved2; + UCHAR AllocationLength[4]; + UCHAR Reserved3; + UCHAR Control; + } SECURITY_PROTOCOL_IN; + struct _SECURITY_PROTOCOL_OUT { + UCHAR OperationCode; + UCHAR SecurityProtocol; + UCHAR SecurityProtocolSpecific[2]; + UCHAR Reserved1:7; + UCHAR INC_512:1; + UCHAR Reserved2; + UCHAR AllocationLength[4]; + UCHAR Reserved3; + UCHAR Control; + } SECURITY_PROTOCOL_OUT; + struct _UNMAP { + UCHAR OperationCode; + UCHAR Anchor:1; + UCHAR Reserved1:7; + UCHAR Reserved2[4]; + UCHAR GroupNumber:5; + UCHAR Reserved3:3; + UCHAR AllocationLength[2]; + UCHAR Control; + } UNMAP; + struct _SANITIZE { + UCHAR OperationCode; + UCHAR ServiceAction:5; + UCHAR AUSE:1; + UCHAR Reserved1:1; + UCHAR Immediate:1; + UCHAR Reserved2[5]; + UCHAR ParameterListLength[2]; + UCHAR Control; + } SANITIZE; struct _PAUSE_RESUME { UCHAR OperationCode; UCHAR Reserved1:5; @@ -865,9 +1013,8 @@ typedef union _CDB { } READ_DISK_INFORMATION; struct _READ_TRACK_INFORMATION { UCHAR OperationCode; - UCHAR Track:1; - UCHAR Reserved1:3; - UCHAR Reserved2:1; + UCHAR Track:2; + UCHAR Reserved4:3; UCHAR Lun:3; UCHAR BlockAddress[4]; UCHAR Reserved3; @@ -975,24 +1122,22 @@ typedef union _CDB { UCHAR CMSF:1; UCHAR ExpectedSectorType:3; UCHAR Lun:3; - struct _LBA { - UCHAR StartingBlockAddress[4]; - UCHAR PlayLength[4]; - }; - struct _MSF { - UCHAR Reserved1; - UCHAR StartingM; - UCHAR StartingS; - UCHAR StartingF; - UCHAR EndingM; - UCHAR EndingS; - UCHAR EndingF; - UCHAR Reserved2; - }; _ANONYMOUS_UNION union { - struct _LBA LBA; - struct _MSF MSF; - } DUMMYUNIONNAME; + struct { + UCHAR StartingBlockAddress[4]; + UCHAR PlayLength[4]; + } LBA; + struct { + UCHAR Reserved1; + UCHAR StartingM; + UCHAR StartingS; + UCHAR StartingF; + UCHAR EndingM; + UCHAR EndingS; + UCHAR EndingF; + UCHAR Reserved2; + } MSF; + }; UCHAR Audio:1; UCHAR Composite:1; UCHAR Port1:1; @@ -1105,7 +1250,33 @@ typedef union _CDB { UCHAR TransferBlockByte1; UCHAR Control; } NEC_READ_CDDA; +#if NTDDI_VERSION >= NTDDI_WIN8 struct _MODE_SENSE { + UCHAR OperationCode; + UCHAR Reserved1:3; + UCHAR Dbd:1; + UCHAR Reserved2:4; + UCHAR PageCode:6; + UCHAR Pc:2; + UCHAR SubPageCode; + UCHAR AllocationLength; + UCHAR Control; + } MODE_SENSE; + struct _MODE_SENSE10 { + UCHAR OperationCode; + UCHAR Reserved1:3; + UCHAR Dbd:1; + UCHAR LongLBAAccepted:1; + UCHAR Reserved2:3; + UCHAR PageCode:6; + UCHAR Pc:2; + UCHAR SubPageCode; + UCHAR Reserved3[3]; + UCHAR AllocationLength[2]; + UCHAR Control; + } MODE_SENSE10; +#else + struct _MODE_SENSE { UCHAR OperationCode; UCHAR Reserved1:3; UCHAR Dbd:1; @@ -1129,6 +1300,7 @@ typedef union _CDB { UCHAR AllocationLength[2]; UCHAR Control; } MODE_SENSE10; +#endif /* NTDDI_VERSION >= NTDDI_WIN8 */ struct _MODE_SELECT { UCHAR OperationCode; UCHAR SPBit:1; @@ -1170,7 +1342,10 @@ typedef union _CDB { UCHAR LogicalUnitNumber:3; UCHAR PageCode:6; UCHAR PCBit:2; - UCHAR Reserved2; + _ANONYMOUS_UNION union { + UCHAR SubPageCode; + UCHAR Reserved2; + }; UCHAR Reserved3; UCHAR ParameterPointer[2]; UCHAR AllocationLength[2]; @@ -1548,10 +1723,28 @@ typedef union _CDB { UCHAR ParameterListLength[2]; UCHAR Control; } PERSISTENT_RESERVE_OUT; + struct _REPORT_TIMESTAMP { + UCHAR OperationCode; + UCHAR ServiceAction:5; + UCHAR Reserved1:3; + UCHAR Reserved2[4]; + UCHAR AllocationLength[4]; + UCHAR Reserved3; + UCHAR Control; + } REPORT_TIMESTAMP; + struct _SET_TIMESTAMP { + UCHAR OperationCode; + UCHAR ServiceAction:5; + UCHAR Reserved1:3; + UCHAR Reserved2[4]; + UCHAR ParameterListLength[4]; + UCHAR Reserved3; + UCHAR Control; + } SET_TIMESTAMP; struct _GET_CONFIGURATION { UCHAR OperationCode; - UCHAR RequestType:1; - UCHAR Reserved1:7; + UCHAR RequestType:2; + UCHAR Reserved1:6; UCHAR StartingFeature[2]; UCHAR Reserved2[3]; UCHAR AllocationLength[2]; @@ -1598,6 +1791,27 @@ typedef union _CDB { UCHAR Streaming:1; UCHAR Control; } WRITE12; + struct _ATA_PASSTHROUGH12 { + UCHAR OperationCode; + UCHAR Reserved1:1; + UCHAR Protocol:4; + UCHAR MultipleCount:3; + UCHAR TLength:2; + UCHAR ByteBlock:1; + UCHAR TDir:1; + UCHAR Reserved2:1; + UCHAR CkCond:1; + UCHAR Offline:2; + UCHAR Features; + UCHAR SectorCount; + UCHAR LbaLow; + UCHAR LbaMid; + UCHAR LbaHigh; + UCHAR Device; + UCHAR Command; + UCHAR Reserved3; + UCHAR Control; + } ATA_PASSTHROUGH12; struct _READ16 { UCHAR OperationCode; UCHAR Reserved1:3; @@ -1656,6 +1870,142 @@ typedef union _CDB { UCHAR Reserved2:7; UCHAR Control; } READ_CAPACITY16; + struct _ATA_PASSTHROUGH16 { + UCHAR OperationCode; + UCHAR Extend:1; + UCHAR Protocol:4; + UCHAR MultipleCount:3; + UCHAR TLength:2; + UCHAR ByteBlock:1; + UCHAR TDir:1; + UCHAR Reserved1:1; + UCHAR CkCond:1; + UCHAR Offline:2; + UCHAR Features15_8; + UCHAR Features7_0; + UCHAR SectorCount15_8; + UCHAR SectorCount7_0; + UCHAR LbaLow15_8; + UCHAR LbaLow7_0; + UCHAR LbaMid15_8; + UCHAR LbaMid7_0; + UCHAR LbaHigh15_8; + UCHAR LbaHigh7_0; + UCHAR Device; + UCHAR Command; + UCHAR Control; + } ATA_PASSTHROUGH16; + struct _GET_LBA_STATUS { + UCHAR OperationCode; + UCHAR ServiceAction:5; + UCHAR Reserved1:3; + UCHAR StartingLBA[8]; + UCHAR AllocationLength[4]; + UCHAR Reserved2; + UCHAR Control; + } GET_LBA_STATUS; + struct _TOKEN_OPERATION { + UCHAR OperationCode; + UCHAR ServiceAction:5; + UCHAR Reserved1:3; + UCHAR Reserved2[4]; + UCHAR ListIdentifier[4]; + UCHAR ParameterListLength[4]; + UCHAR GroupNumber: 5; + UCHAR Reserved3: 3; + UCHAR Control; + } TOKEN_OPERATION; + struct _RECEIVE_TOKEN_INFORMATION { + UCHAR OperationCode; + UCHAR ServiceAction:5; + UCHAR Reserved1:3; + UCHAR ListIdentifier[4]; + UCHAR Reserved2[4]; + UCHAR AllocationLength[4]; + UCHAR Reserved3; + UCHAR Control; + } RECEIVE_TOKEN_INFORMATION; + struct _WRITE_BUFFER { + UCHAR OperationCode; + UCHAR Mode:5; + UCHAR ModeSpecific:3; + UCHAR BufferID; + UCHAR BufferOffset[3]; + UCHAR ParameterListLength[3]; + UCHAR Control; + } WRITE_BUFFER; + struct _CLOSE_ZONE { + UCHAR OperationCode; + UCHAR ServiceAction:5; + UCHAR Reserved1:3; + UCHAR ZoneId[8]; + UCHAR Reserved2[4]; + UCHAR All:1; + UCHAR Reserved3:7; + UCHAR Control; + } CLOSE_ZONE; + struct _FINISH_ZONE { + UCHAR OperationCode; + UCHAR ServiceAction:5; + UCHAR Reserved1:3; + UCHAR ZoneId[8]; + UCHAR Reserved2[4]; + UCHAR All:1; + UCHAR Reserved3:7; + UCHAR Control; + } FINISH_ZONE; + struct _OPEN_ZONE { + UCHAR OperationCode; + UCHAR ServiceAction:5; + UCHAR Reserved1:3; + UCHAR ZoneId[8]; + UCHAR Reserved2[4]; + UCHAR All:1; + UCHAR Reserved3:7; + UCHAR Control; + } OPEN_ZONE; + struct _RESET_WRITE_POINTER { + UCHAR OperationCode; + UCHAR ServiceAction:5; + UCHAR Reserved1:3; + UCHAR ZoneId[8]; + UCHAR Reserved2[4]; + UCHAR All:1; + UCHAR Reserved3:7; + UCHAR Control; + } RESET_WRITE_POINTER; + struct _REPORT_ZONES { + UCHAR OperationCode; + UCHAR ServiceAction:5; + UCHAR Reserved1:3; + UCHAR ZoneStartLBA[8]; + UCHAR AllocationLength[4]; + UCHAR ReportingOptions:6; + UCHAR Reserved3:1; + UCHAR Partial:1; + UCHAR Control; + } REPORT_ZONES; + struct _GET_PHYSICAL_ELEMENT_STATUS { + UCHAR OperationCode; + UCHAR ServiceAction:5; + UCHAR Reserved1:3; + UCHAR Reserved2[4]; + UCHAR StartingElement[4]; + UCHAR AllocationLength[4]; + UCHAR ReportType:4; + UCHAR Reserved3:2; + UCHAR Filter:2; + UCHAR Control; + } GET_PHYSICAL_ELEMENT_STATUS; + struct _REMOVE_ELEMENT_AND_TRUNCATE { + UCHAR OperationCode; + UCHAR ServiceAction:5; + UCHAR Reserved1:3; + UCHAR RequestedCapacity[8]; + UCHAR ElementIdentifier[4]; + UCHAR Reserved2; + UCHAR Control; + } REMOVE_ELEMENT_AND_TRUNCATE; ULONG AsUlong[4]; UCHAR AsByte[16]; } CDB, *PCDB; @@ -1726,6 +2076,12 @@ typedef struct _NOTIFICATION_BUSY_STATUS { UCHAR Time[2]; } NOTIFICATION_BUSY_STATUS, *PNOTIFICATION_BUSY_STATUS; +typedef struct _SUPPORTED_SECURITY_PROTOCOLS_PARAMETER_DATA { + UCHAR Reserved1[6]; + UCHAR SupportedSecurityListLength[2]; + UCHAR SupportedSecurityProtocol[0]; +} SUPPORTED_SECURITY_PROTOCOLS_PARAMETER_DATA, *PSUPPORTED_SECURITY_PROTOCOLS_PARAMETER_DATA; + typedef struct _READ_DVD_STRUCTURES_HEADER { UCHAR Length[2]; UCHAR Reserved[2]; -- 2.27.0
_______________________________________________ Mingw-w64-public mailing list Mingw-w64-public@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mingw-w64-public