|
Mac Dev Center
Mac OS X Reference Library Drivers, Kernel, & Hardware: Kernel Device Drivers Kernel Framework Reference
|
SCSICmds_INQUIRY_Definitions.h |
| Includes: |
<IOKit/IOTypes.h> <CoreFoundation/CoreFoundation.h> |
This file contains all definitions for the data returned from the INQUIRY (0x12) command.
SCSICmd_INQUIRY_Page00_Header |
typedef struct SCSICmd_INQUIRY_Page00_Header { UInt8 PERIPHERAL_DEVICE_TYPE; // 7-5 = Qualifier. 4-0 = Device type. UInt8 PAGE_CODE; // Must be equal to 00h UInt8 RESERVED; // reserved field UInt8 PAGE_LENGTH; // n-3 bytes } SCSICmd_INQUIRY_Page00_Header;
INQUIRY Page 00h Header.
SCSICmd_INQUIRY_Page80_Header |
typedef struct SCSICmd_INQUIRY_Page80_Header { UInt8 PERIPHERAL_DEVICE_TYPE; // 7-5 = Qualifier. 4-0 = Device type. UInt8 PAGE_CODE; // Must be equal to 80h UInt8 RESERVED; // reserved field UInt8 PAGE_LENGTH; // n-3 bytes UInt8 PRODUCT_SERIAL_NUMBER; // 4-n } SCSICmd_INQUIRY_Page80_Header;
INQUIRY Page 80h Header.
SCSICmd_INQUIRY_Page83_Header |
typedef struct SCSICmd_INQUIRY_Page83_Header { UInt8 PERIPHERAL_DEVICE_TYPE; // 7-5 = Qualifier. 4-0 = Device type. UInt8 PAGE_CODE; // Must be equal to 83h UInt8 RESERVED; // reserved field UInt8 PAGE_LENGTH; // n-3 bytes } SCSICmd_INQUIRY_Page83_Header;
INQUIRY Page 83h Header.
SCSICmd_INQUIRY_Page83_Header_SPC_16 |
typedef struct SCSICmd_INQUIRY_Page83_Header_SPC_16 { UInt8 PERIPHERAL_DEVICE_TYPE; // 7-5 = Qualifier. 4-0 = Device type. UInt8 PAGE_CODE; // Must be equal to 83h UInt16 PAGE_LENGTH; // n-3 bytes } SCSICmd_INQUIRY_Page83_Header_SPC_16;
INQUIRY Page 83h Header used with the 16 byte INQUIRY command.
SCSICmd_INQUIRY_Page83_Identification_Descriptor |
typedef struct SCSICmd_INQUIRY_Page83_Identification_Descriptor { UInt8 CODE_SET; // 7-4 = Protocol Identifier. 3-0 = Code Set UInt8 IDENTIFIER_TYPE; // 7 = PIV 5-4 = ASSOCIATION 3-0 = Identifier UInt8 RESERVED; UInt8 IDENTIFIER_LENGTH; UInt8 IDENTIFIER; } SCSICmd_INQUIRY_Page83_Identification_Descriptor;
INQUIRY Page 83h Identification Descriptor.
SCSICmd_INQUIRY_Page89_Data |
typedef struct SCSICmd_INQUIRY_Page89_Data { UInt8 PERIPHERAL_DEVICE_TYPE; // 7-5 = Qualifier. 4-0 = Device type. UInt8 PAGE_CODE; // Must be equal to 89h UInt16 PAGE_LENGTH; // Must be equal to 238h UInt32 Reserved; UInt8 SAT_VENDOR_IDENTIFICATION[ kINQUIRY_VENDOR_IDENTIFICATION_Length]; UInt8 SAT_PRODUCT_IDENTIFICATION[ kINQUIRY_PRODUCT_IDENTIFICATION_Length]; UInt8 SAT_PRODUCT_REVISION_LEVEL[ kINQUIRY_PRODUCT_REVISION_LEVEL_Length]; UInt8 ATA_DEVICE_SIGNATURE[20]; UInt8 COMMAND_CODE; UInt8 Reserved2[3]; UInt8 IDENTIFY_DATA[512]; } SCSICmd_INQUIRY_Page89_Data;
INQUIRY Page 89h data as defined in the SAT 1.0 specification. This section contians all structures and definitions used by the INQUIRY command in response to a request for page 89h - ATA information VPD Page.
SCSICmd_INQUIRY_StandardData |
typedef struct SCSICmd_INQUIRY_StandardData { UInt8 PERIPHERAL_DEVICE_TYPE; // 7-5 = Qualifier. 4-0 = Device type. UInt8 RMB; // 7 = removable UInt8 VERSION; // 7/6 = ISO/IEC, 5-3 = ECMA, 2-0 = ANSI. UInt8 RESPONSE_DATA_FORMAT; // 7 = AERC, 6 = Obsolete, 5 = NormACA, 4 = HiSup 3-0 = Response data format. (SPC-3 obsoletes AERC) // If ANSI Version = 0, this is ATAPI and bits 7-4 = ATAPI version. UInt8 ADDITIONAL_LENGTH; // Number of additional bytes available in inquiry data UInt8 SCCSReserved; // SCC-2 device flag and reserved fields (SPC-3 adds PROTECT 3PC TPGS, and ACC) UInt8 flags1; // First byte of support flags (See SPC-3 section 6.4.2) UInt8 flags2; // Second byte of support flags (Byte 7) (See SPC-3 section 6.4.2) char VENDOR_IDENTIFICATION[ kINQUIRY_VENDOR_IDENTIFICATION_Length]; char PRODUCT_IDENTIFICATION[ kINQUIRY_PRODUCT_IDENTIFICATION_Length]; char PRODUCT_REVISION_LEVEL[ kINQUIRY_PRODUCT_REVISION_LEVEL_Length]; } SCSICmd_INQUIRY_StandardData;
This structure defines the format of the required standard data that is returned for the INQUIRY command. This is the data that is required to be returned from all devices.
SCSICmd_INQUIRY_StandardDataAll |
typedef struct SCSICmd_INQUIRY_StandardDataAll { UInt8 PERIPHERAL_DEVICE_TYPE; // 7-5 = Qualifier. 4-0 = Device type. UInt8 RMB; // 7 = removable UInt8 VERSION; // 7/6 = ISO/IEC, 5-3 = ECMA, 2-0 = ANSI. UInt8 RESPONSE_DATA_FORMAT; // 7 = AERC, 6 = Obsolete, 5 = NormACA, 4 = HiSup 3-0 = Response data format. // If ANSI Version = 0, this is ATAPI and bits 7-4 = ATAPI version. UInt8 ADDITIONAL_LENGTH; // Number of additional bytes available in inquiry data UInt8 SCCSReserved; // SCC-2 device flag and reserved fields UInt8 flags1; // First byte of support flags (Byte 6) UInt8 flags2; // Second byte of support flags (Byte 7) char VENDOR_IDENTIFICATION[ kINQUIRY_VENDOR_IDENTIFICATION_Length]; char PRODUCT_IDENTIFICATION[ kINQUIRY_PRODUCT_IDENTIFICATION_Length]; char PRODUCT_REVISION_LEVEL[ kINQUIRY_PRODUCT_REVISION_LEVEL_Length]; // Following is the optional data that may be returned by a device. UInt8 VendorSpecific1[20]; UInt8 flags3; // Third byte of support flags, mainly SPI-3 (Byte 56) UInt8 Reserved1; UInt16 VERSION_DESCRIPTOR[8]; UInt8 Reserved2[22]; UInt8 VendorSpecific2[160]; } SCSICmd_INQUIRY_StandardDataAll;
This structure defines the all of the fields that can be returned in repsonse to the INQUIRy request for the standard data. There is no requirement as to how much of the additional data must be returned by a device.
Byte 56 features field definitions |
enum { // Byte offset kINQUIRY_Byte56_Offset = 56, // Bit definitions kINQUIRY_Byte56_IUS_Bit = 0, kINQUIRY_Byte56_QAS_Bit = 1, // Bits 2 and 3 are the CLOCKING bits // All other bits are reserved kINQUIRY_Byte56_IUS_Mask = ( 1 << kINQUIRY_Byte56_IUS_Bit), kINQUIRY_Byte56_QAS_Mask = ( 1 << kINQUIRY_Byte56_QAS_Bit), kINQUIRY_Byte56_CLOCKING_Mask = 0x0C, // Definitions for the CLOCKING bits kINQUIRY_Byte56_CLOCKING_ONLY_ST = 0x00, kINQUIRY_Byte56_CLOCKING_ONLY_DT = 0x04, // kINQUIRY_Byte56_CLOCKING_RESERVED = 0x08, kINQUIRY_Byte56_CLOCKING_ST_AND_DT = 0x0C };
kINQUIRY_Byte56_IUS_BitIUS bit definition.
kINQUIRY_Byte56_QAS_BitQAS bit definition.
kINQUIRY_Byte56_IUS_MaskMask to use to test the IUS bit.
kINQUIRY_Byte56_QAS_MaskMask to use to test the QAS bit.
kINQUIRY_Byte56_CLOCKING_MaskMask to use to test CLOCKING bits.
kINQUIRY_Byte56_CLOCKING_ONLY_STSingle-transition clocking only.
kINQUIRY_Byte56_CLOCKING_ONLY_DTDouble-transition clocking only.
kINQUIRY_Byte56_CLOCKING_ST_AND_DTSingle-transition and double-transition clocking.
Definitions for bits/masks in the INQUIRY Byte 56 field. Inquiry Byte 56 features (for devices that report an ANSI VERSION of kINQUIRY_ANSI_VERSION_SCSI_SPC_Compliant or later). These are SPI-3 Specific.
flags1 field definitions |
enum { // Byte offset kINQUIRY_Byte6_Offset = 6, // Bit definitions kINQUIRY_Byte6_ADDR16_Bit = 0, // SPI Specific // Bit 1 is Obsolete // Bit 2 is Obsolete kINQUIRY_Byte6_MCHNGR_Bit = 3, kINQUIRY_Byte6_MULTIP_Bit = 4, kINQUIRY_Byte6_VS_Bit = 5, kINQUIRY_Byte6_ENCSERV_Bit = 6, kINQUIRY_Byte6_BQUE_Bit = 7, // Masks kINQUIRY_Byte6_ADDR16_Mask = ( 1 << kINQUIRY_Byte6_ADDR16_Bit), // SPI Specific // Bit 1 is Obsolete // Bit 2 is Obsolete kINQUIRY_Byte6_MCHNGR_Mask = ( 1 << kINQUIRY_Byte6_MCHNGR_Bit), kINQUIRY_Byte6_MULTIP_Mask = ( 1 << kINQUIRY_Byte6_MULTIP_Bit), kINQUIRY_Byte6_VS_Mask = ( 1 << kINQUIRY_Byte6_VS_Bit), kINQUIRY_Byte6_ENCSERV_Mask = ( 1 << kINQUIRY_Byte6_ENCSERV_Bit), kINQUIRY_Byte6_BQUE_Mask = ( 1 << kINQUIRY_Byte6_BQUE_Bit) };
kINQUIRY_Byte6_ADDR16_BitADDR16 bit definition.
kINQUIRY_Byte6_MCHNGR_BitMCHNGR bit definition.
kINQUIRY_Byte6_MULTIP_BitMULTIP bit definition.
kINQUIRY_Byte6_VS_BitVS bit definition.
kINQUIRY_Byte6_ENCSERV_BitENCSERV bit definition.
kINQUIRY_Byte6_BQUE_BitBQUE bit definition.
kINQUIRY_Byte6_ADDR16_MaskMask to use to test the ADDR16 bit.
kINQUIRY_Byte6_MCHNGR_MaskMask to use to test the MCHNGR bit.
kINQUIRY_Byte6_MULTIP_MaskMask to use to test the MULTIP bit.
kINQUIRY_Byte6_VS_MaskMask to use to test the VS bit.
kINQUIRY_Byte6_ENCSERV_MaskMask to use to test the ENCSERV bit.
kINQUIRY_Byte6_BQUE_MaskMask to use to test the BQUE bit.
Definitions for bits/masks in the INQUIRY flags1 field.
flags2 field definitions |
enum { // Byte offset kINQUIRY_Byte7_Offset = 7, // Bit definitions kINQUIRY_Byte7_VS_Bit = 0, kINQUIRY_Byte7_CMDQUE_Bit = 1, kINQUIRY_Byte7_TRANDIS_Bit = 2, // SPI Specific kINQUIRY_Byte7_LINKED_Bit = 3, kINQUIRY_Byte7_SYNC_Bit = 4, // SPI Specific kINQUIRY_Byte7_WBUS16_Bit = 5, // SPI Specific // Bit 6 is Obsolete kINQUIRY_Byte7_RELADR_Bit = 7, // Masks kINQUIRY_Byte7_VS_Mask = ( 1 << kINQUIRY_Byte7_VS_Bit), kINQUIRY_Byte7_CMDQUE_Mask = ( 1 << kINQUIRY_Byte7_CMDQUE_Bit), kINQUIRY_Byte7_TRANDIS_Mask = ( 1 << kINQUIRY_Byte7_TRANDIS_Bit),// SPI Specific kINQUIRY_Byte7_LINKED_Mask = ( 1 << kINQUIRY_Byte7_LINKED_Bit), kINQUIRY_Byte7_SYNC_Mask = ( 1 << kINQUIRY_Byte7_SYNC_Bit), // SPI Specific kINQUIRY_Byte7_WBUS16_Mask = ( 1 << kINQUIRY_Byte7_WBUS16_Bit), // SPI Specific // Bit 6 is Obsolete kINQUIRY_Byte7_RELADR_Mask = ( 1 << kINQUIRY_Byte7_RELADR_Bit) };
kINQUIRY_Byte7_VS_BitVS bit definition.
kINQUIRY_Byte7_CMDQUE_BitCMDQUE bit definition.
kINQUIRY_Byte7_TRANDIS_BitTRANDIS bit definition.
kINQUIRY_Byte7_LINKED_BitLINKED bit definition.
kINQUIRY_Byte7_SYNC_BitSYNC bit definition.
kINQUIRY_Byte7_WBUS16_BitWBUS16 bit definition.
kINQUIRY_Byte7_RELADR_BitRELADR bit definition.
kINQUIRY_Byte7_VS_MaskMask to use to test the VS bit.
kINQUIRY_Byte7_CMDQUE_MaskMask to use to test the CMDQUE bit.
kINQUIRY_Byte7_TRANDIS_MaskMask to use to test the TRANDIS bit.
kINQUIRY_Byte7_LINKED_MaskMask to use to test the LINKED bit.
kINQUIRY_Byte7_SYNC_MaskMask to use to test the SYNC bit.
kINQUIRY_Byte7_WBUS16_MaskMask to use to test the WBUS16 bit.
kINQUIRY_Byte7_RELADR_MaskMask to use to test the RELADR bit.
Definitions for bits/masks in the INQUIRY flags2 field.
INQUIRY field sizes |
enum { kINQUIRY_VENDOR_IDENTIFICATION_Length = 8, kINQUIRY_PRODUCT_IDENTIFICATION_Length = 16, kINQUIRY_PRODUCT_REVISION_LEVEL_Length = 4 };
kINQUIRY_VENDOR_IDENTIFICATION_LengthSize of VENDOR_IDENTIFICATION field.
kINQUIRY_PRODUCT_IDENTIFICATION_LengthSize of PRODUCT_IDENTIFICATION field.
kINQUIRY_PRODUCT_REVISION_LEVEL_LengthSize of PRODUCT_REVISION_LEVEL field.
Sizes for some of the inquiry data fields.
INQUIRY Page 83h Association |
enum { // SPC-3 - Association is changed to be specific to // Logical Units kINQUIRY_Page83_AssociationLogicalUnit = 0x00, // Backwards compatibility for SPC-2 kINQUIRY_Page83_AssociationDevice = kINQUIRY_Page83_AssociationLogicalUnit, // Association is related to a Target Port kINQUIRY_Page83_AssociationTargetPort = 0x10, // SPC-3 - Added as specific association to // a Target device. kINQUIRY_Page83_AssociationTargetDevice = 0x20, kINQUIRY_Page83_AssociationMask = 0x30 };
kINQUIRY_Page83_AssociationLogicalUnitAssociation of the identifier is with the logical unit.
kINQUIRY_Page83_AssociationDeviceAssociation of the identifier is with the device (same as logical unit in SPC-2).
kINQUIRY_Page83_AssociationTargetPortAssociation of the identifier is with the target port.
kINQUIRY_Page83_AssociationTargetDeviceAssociation of the identifier is with the target device (i.e. all ports).
kINQUIRY_Page83_AssociationMaskMask to use to determine association.
Definitions for the Association field.
INQUIRY Page 83h Code Set |
enum { kINQUIRY_Page83_CodeSetReserved = 0x0, kINQUIRY_Page83_CodeSetBinaryData = 0x1, kINQUIRY_Page83_CodeSetASCIIData = 0x2, kINQUIRY_Page83_CodeSetUTF8Data = 0x3, // 0x4 - 0xF reserved kINQUIRY_Page83_CodeSetMask = 0xF };
kINQUIRY_Page83_CodeSetBinaryDataThe identifier contains binary data.
kINQUIRY_Page83_CodeSetASCIIDataThe identifier contains ASCII data.
kINQUIRY_Page83_CodeSetUTF8DataThe identifier contains UTF-8 data.
Definitions for the Code Set field.
INQUIRY Page 83h Identifier Type |
enum { kINQUIRY_Page83_IdentifierTypeUndefined = 0, kINQUIRY_Page83_IdentifierTypeVendorID = 1, kINQUIRY_Page83_IdentifierTypeIEEE_EUI64 = 2, kINQUIRY_Page83_IdentifierTypeNAAIdentifier = 3, kINQUIRY_Page83_IdentifierTypeRelativePortIdentifier = 4, kINQUIRY_Page83_IdentifierTypeTargetPortGroup = 5, kINQUIRY_Page83_IdentifierTypeLogicalUnitGroup = 6, kINQUIRY_Page83_IdentifierTypeMD5LogicalUnitIdentifier = 7, kINQUIRY_Page83_IdentifierTypeSCSINameString = 8, // 0x9 - 0xF Reserved kINQUIRY_Page83_IdentifierTypeMask = 0xF, kINQUIRY_Page83_ProtocolIdentifierValidBit = 7, kINQUIRY_Page83_ProtocolIdentifierValidMask = ( 1 << kINQUIRY_Page83_ProtocolIdentifierValidBit) };
kINQUIRY_Page83_IdentifierTypeUndefinedUndefined Identifier Type.
kINQUIRY_Page83_IdentifierTypeVendorIDVendor Specific Identifier Type.
kINQUIRY_Page83_IdentifierTypeIEEE_EUI64EUI-64 Identifier Type.
kINQUIRY_Page83_IdentifierTypeNAAIdentifierNAA Identifier Type.
kINQUIRY_Page83_IdentifierTypeRelativePortIdentifierRelative Target Port Identifier Type.
kINQUIRY_Page83_IdentifierTypeTargetPortGroupTarget Port Group Identifier Type.
kINQUIRY_Page83_IdentifierTypeLogicalUnitGroupLogical Unit Group Identifier Type.
kINQUIRY_Page83_IdentifierTypeMD5LogicalUnitIdentifierMD5 Logical Unit Identifier Type.
kINQUIRY_Page83_IdentifierTypeSCSINameStringSCSI Name String Identifier Type.
kINQUIRY_Page83_IdentifierTypeMaskMask to use to determine association.
kINQUIRY_Page83_ProtocolIdentifierValidBitPIV Bit definition.
kINQUIRY_Page83_ProtocolIdentifierValidMaskMask to use to determine if PIV is set.
Definitions for the Identifier Type field.
INQUIRY Page Codes |
enum { kINQUIRY_Page00_PageCode = 0x00, kINQUIRY_Page80_PageCode = 0x80, kINQUIRY_Page83_PageCode = 0x83, kINQUIRY_Page89_PageCode = 0x89 };
kINQUIRY_Page00_PageCodePage Code 00h.
kINQUIRY_Page80_PageCodePage Code 80h.
kINQUIRY_Page83_PageCodePage Code 83h.
kINQUIRY_Page89_PageCodePage Code 89h.
INQUIRY Page Codes to be used when EVPD is set in the INQUIRY command.
Payload sizes |
enum { kINQUIRY_StandardDataHeaderSize = 5, kINQUIRY_MaximumDataSize = 255 };
kINQUIRY_StandardDataHeaderSizeINQUIRY data header size.
kINQUIRY_MaximumDataSizeMaximum size for INQUIRY data.
Definitions for sizes related to the INQUIRY data.
Peripheral Device types |
enum { kINQUIRY_PERIPHERAL_TYPE_DirectAccessSBCDevice = 0x00, kINQUIRY_PERIPHERAL_TYPE_SequentialAccessSSCDevice = 0x01, kINQUIRY_PERIPHERAL_TYPE_PrinterSSCDevice = 0x02, kINQUIRY_PERIPHERAL_TYPE_ProcessorSPCDevice = 0x03, kINQUIRY_PERIPHERAL_TYPE_WriteOnceSBCDevice = 0x04, kINQUIRY_PERIPHERAL_TYPE_CDROM_MMCDevice = 0x05, kINQUIRY_PERIPHERAL_TYPE_ScannerSCSI2Device = 0x06, kINQUIRY_PERIPHERAL_TYPE_OpticalMemorySBCDevice = 0x07, kINQUIRY_PERIPHERAL_TYPE_MediumChangerSMCDevice = 0x08, kINQUIRY_PERIPHERAL_TYPE_CommunicationsSSCDevice = 0x09, /* 0x0A - 0x0B ASC IT8 Graphic Arts Prepress Devices */ kINQUIRY_PERIPHERAL_TYPE_StorageArrayControllerSCC2Device = 0x0C, kINQUIRY_PERIPHERAL_TYPE_EnclosureServicesSESDevice = 0x0D, kINQUIRY_PERIPHERAL_TYPE_SimplifiedDirectAccessRBCDevice = 0x0E, kINQUIRY_PERIPHERAL_TYPE_OpticalCardReaderOCRWDevice = 0x0F, /* 0x10 - 0x1E Reserved Device Types */ kINQUIRY_PERIPHERAL_TYPE_ObjectBasedStorageDevice = 0x11, kINQUIRY_PERIPHERAL_TYPE_AutomationDriveInterface = 0x12, kINQUIRY_PERIPHERAL_TYPE_WellKnownLogicalUnit = 0x1E, kINQUIRY_PERIPHERAL_TYPE_UnknownOrNoDeviceType = 0x1F, kINQUIRY_PERIPHERAL_TYPE_Mask = 0x1F };
kINQUIRY_PERIPHERAL_TYPE_DirectAccessSBCDeviceSBC Device.
kINQUIRY_PERIPHERAL_TYPE_SequentialAccessSSCDeviceSequential Access (Tape) SSC Device.
kINQUIRY_PERIPHERAL_TYPE_PrinterSSCDeviceSSC Device.
kINQUIRY_PERIPHERAL_TYPE_ProcessorSPCDeviceSPC Device.
kINQUIRY_PERIPHERAL_TYPE_WriteOnceSBCDeviceSBC Device.
kINQUIRY_PERIPHERAL_TYPE_CDROM_MMCDeviceMMC Device.
kINQUIRY_PERIPHERAL_TYPE_ScannerSCSI2DeviceSCSI2 Device.
kINQUIRY_PERIPHERAL_TYPE_OpticalMemorySBCDeviceSBC Device.
kINQUIRY_PERIPHERAL_TYPE_MediumChangerSMCDeviceSMC Device.
kINQUIRY_PERIPHERAL_TYPE_CommunicationsSSCDeviceComms SSC Device.
kINQUIRY_PERIPHERAL_TYPE_StorageArrayControllerSCC2DeviceSCC2 Device.
kINQUIRY_PERIPHERAL_TYPE_EnclosureServicesSESDeviceSES Device.
kINQUIRY_PERIPHERAL_TYPE_SimplifiedDirectAccessRBCDeviceRBC Device.
kINQUIRY_PERIPHERAL_TYPE_OpticalCardReaderOCRWDeviceOCRW Device.
kINQUIRY_PERIPHERAL_TYPE_ObjectBasedStorageDeviceOSD device.
kINQUIRY_PERIPHERAL_TYPE_AutomationDriveInterfaceAutomation Drive Interface device.
kINQUIRY_PERIPHERAL_TYPE_WellKnownLogicalUnitWell known logical unit.
kINQUIRY_PERIPHERAL_TYPE_UnknownOrNoDeviceTypeUnknown or no device.
kINQUIRY_PERIPHERAL_TYPE_MaskMask to use for PERIPHERAL_DEVICE_TYPE field.
Inquiry Peripheral Device type definitions
Peripheral Qualifier |
enum { kINQUIRY_PERIPHERAL_QUALIFIER_Connected = 0x00, kINQUIRY_PERIPHERAL_QUALIFIER_SupportedButNotConnected = 0x20, kINQUIRY_PERIPHERAL_QUALIFIER_NotSupported = 0x60, kINQUIRY_PERIPHERAL_QUALIFIER_Mask = 0xE0 };
kINQUIRY_PERIPHERAL_QUALIFIER_ConnectedPeripheral Device is connected.
kINQUIRY_PERIPHERAL_QUALIFIER_SupportedButNotConnectedPeripheral Device is supported, but not connected.
kINQUIRY_PERIPHERAL_QUALIFIER_NotSupportedPeripheral Device is not supported.
kINQUIRY_PERIPHERAL_QUALIFIER_MaskMask to use for PERIPHERAL_DEVICE_TYPE field.
Inquiry Peripheral Qualifier definitions
Protocol Identifier values |
enum { kSCSIProtocolIdentifier_FibreChannel = 0, kSCSIProtocolIdentifier_ParallelSCSI = 1, kSCSIProtocolIdentifier_SSA = 2, kSCSIProtocolIdentifier_FireWire = 3, kSCSIProtocolIdentifier_RDMA = 4, kSCSIProtocolIdentifier_iSCSI = 5, kSCSIProtocolIdentifier_SAS = 6, kSCSIProtocolIdentifier_ADT = 7, kSCSIProtocolIdentifier_ATAPI = 8, // 0x9-0xE Reserved kSCSIProtocolIdentifier_None = 0xF };
kSCSIProtocolIdentifier_FibreChannelFibreChannel Protocol Identifier.
kSCSIProtocolIdentifier_ParallelSCSIParallel SCSI Protocol Identifier.
kSCSIProtocolIdentifier_SSASSA Protocol Identifier.
kSCSIProtocolIdentifier_FireWireFireWire (IEEE-1394) Protocol Identifier.
kSCSIProtocolIdentifier_RDMARDMA Protocol Identifier.
kSCSIProtocolIdentifier_iSCSIiSCSI Protocol Identifier.
kSCSIProtocolIdentifier_SASSAS Protocol Identifier.
kSCSIProtocolIdentifier_ADTADT Protocol Identifier.
kSCSIProtocolIdentifier_ATAPIATAPI Protocol Identifier.
kSCSIProtocolIdentifier_NoneNo Protocol Identifier.
Definitions for the protocol identifier values.
Removable Bit field definitions |
enum { kINQUIRY_PERIPHERAL_RMB_MediumFixed = 0x00, kINQUIRY_PERIPHERAL_RMB_MediumRemovable = 0x80, kINQUIRY_PERIPHERAL_RMB_BitMask = 0x80 };
kINQUIRY_PERIPHERAL_RMB_MediumFixedMedium type is fixed disk.
kINQUIRY_PERIPHERAL_RMB_MediumRemovableMedium type is removable disk.
kINQUIRY_PERIPHERAL_RMB_BitMaskMask to use for RMB field.
Inquiry Removable Bit field definitions
Response Data Format field definitions |
enum { // Bit definitions // Bits 0-3: RESPONSE DATA FORMAT kINQUIRY_Byte3_HISUP_Bit = 4, kINQUIRY_Byte3_NORMACA_Bit = 5, // Bit 6 is Obsolete kINQUIRY_Byte3_AERC_Bit = 7, // Masks kINQUIRY_RESPONSE_DATA_FORMAT_Mask = 0x0F, // Bits 0-3 kINQUIRY_Byte3_HISUP_Mask = ( 1 << kINQUIRY_Byte3_HISUP_Bit), kINQUIRY_Byte3_NORMACA_Mask = ( 1 << kINQUIRY_Byte3_NORMACA_Bit), // Bit 6 is Obsolete kINQUIRY_Byte3_AERC_Mask = ( 1 << kINQUIRY_Byte3_AERC_Bit) };
kINQUIRY_Byte3_HISUP_BitHISUP bit definition.
kINQUIRY_Byte3_NORMACA_BitNORMACA bit definition.
kINQUIRY_Byte3_AERC_BitAERC bit definition.
kINQUIRY_RESPONSE_DATA_FORMAT_MaskMask for valid bits for RESPONSE_DATA_FORMAT.
kINQUIRY_Byte3_HISUP_MaskMask to use to test the HISUP bit.
kINQUIRY_Byte3_NORMACA_MaskMask to use to test the NORMACA bit.
kINQUIRY_Byte3_AERC_MaskMask to use to test the AERC bit.
Definitions for bits/masks in the INQUIRY RESPONSE_DATA_FORMAT field.
SCCS field definitions |
enum { // Bit definitions kINQUIRY_Byte5_SCCS_Bit = 7, kINQUIRY_Byte5_ACC_Bit = 6, // Bits 4-5: TPGS kINQUIRY_Byte5_3PC_Bit = 3, // Bits 1-2: Reserved kINQUIRY_Byte5_PROTECT_Bit = 0, // Masks kINQUIRY_Byte5_SCCS_Mask = ( 1 << kINQUIRY_Byte5_SCCS_Bit), kINQUIRY_Byte5_ACC_Mask = ( 1 << kINQUIRY_Byte5_ACC_Bit), kINQUIRY_Byte5_TPGS_Mask = 0x18, kINQUIRY_Byte5_3PC_Mask = ( 1 << kINQUIRY_Byte5_3PC_Bit), // Bits 1-2: Reserved kINQUIRY_Byte5_PROTECT_Mask = ( 1 << kINQUIRY_Byte5_PROTECT_Bit) };
kINQUIRY_Byte5_SCCS_BitSCCS bit definition.
kINQUIRY_Byte5_ACC_BitACC bit definition.
kINQUIRY_Byte5_3PC_Bit3PC bit definition.
kINQUIRY_Byte5_PROTECT_BitPROTECT bit definition.
kINQUIRY_Byte5_SCCS_MaskMask to use to test the SCCS bit.
kINQUIRY_Byte5_ACC_MaskMask to use to test the ACC bit.
kINQUIRY_Byte5_TPGS_MaskMask to use for the TPGS bits.
kINQUIRY_Byte5_3PC_MaskMask to use to test the 3PC bit.
kINQUIRY_Byte5_PROTECT_MaskMask to use to test the PROTECT bit.
Definitions for bits/masks in the INQUIRY SCCSReserved field.
Version field definitions |
enum { kINQUIRY_ISO_IEC_VERSION_Mask = 0xC0, kINQUIRY_ECMA_VERSION_Mask = 0x38, kINQUIRY_ANSI_VERSION_NoClaimedConformance = 0x00, kINQUIRY_ANSI_VERSION_SCSI_1_Compliant = 0x01, kINQUIRY_ANSI_VERSION_SCSI_2_Compliant = 0x02, kINQUIRY_ANSI_VERSION_SCSI_SPC_Compliant = 0x03, kINQUIRY_ANSI_VERSION_SCSI_SPC_2_Compliant = 0x04, kINQUIRY_ANSI_VERSION_SCSI_SPC_3_Compliant = 0x05, kINQUIRY_ANSI_VERSION_Mask = 0x07 };
kINQUIRY_ISO_IEC_VERSION_MaskMask for valid bits for ISO/IEC Version.
kINQUIRY_ECMA_VERSION_MaskMask for valid bits for ECMA Version.
kINQUIRY_ANSI_VERSION_NoClaimedConformanceNo ANSI conformance claimed by the device server.
kINQUIRY_ANSI_VERSION_SCSI_1_CompliantSCSI-1 conformance claimed by the device server.
kINQUIRY_ANSI_VERSION_SCSI_2_CompliantSCSI-2 conformance claimed by the device server.
kINQUIRY_ANSI_VERSION_SCSI_SPC_CompliantSPC conformance claimed by the device server.
kINQUIRY_ANSI_VERSION_SCSI_SPC_2_CompliantSPC-2 conformance claimed by the device server.
kINQUIRY_ANSI_VERSION_SCSI_SPC_3_CompliantSPC-3 conformance claimed by the device server.
kINQUIRY_ANSI_VERSION_MaskMask for valid bits for ANSI Version.
Definitions for bits/masks in the INQUIRY Version field.
kINQUIRY_VERSION_DESCRIPTOR_MaxCount |
#define kINQUIRY_VERSION_DESCRIPTOR_MaxCount 8
Maximum number of INQUIRY version descriptors supported.
kIOPropertySATProductIdentification |
#define kIOPropertySATProductIdentification "SAT Product Identification"
Product Identification of the SATL.
kIOPropertySATProductRevisonLevel |
#define kIOPropertySATProductRevisonLevel "SAT Product Revision Level"
Product Revision Level of the SATL.
kIOPropertySATVendorIdentification |
#define kIOPropertySATVendorIdentification "SAT Vendor Identification"
Vendor Identification of the SATL.
kIOPropertySCSIINQUIRYDeviceIdAssociation |
#define kIOPropertySCSIINQUIRYDeviceIdAssociation "Association"
Association key.
kIOPropertySCSIINQUIRYDeviceIdCodeSet |
#define kIOPropertySCSIINQUIRYDeviceIdCodeSet "Code Set"
Code Set type key.
kIOPropertySCSIINQUIRYDeviceIdentification |
#define kIOPropertySCSIINQUIRYDeviceIdentification "INQUIRY Device Identification"
Device Identification key.
kIOPropertySCSIINQUIRYDeviceIdentifier |
#define kIOPropertySCSIINQUIRYDeviceIdentifier "Identifier"
Identifier key (data or string).
kIOPropertySCSIINQUIRYDeviceIdType |
#define kIOPropertySCSIINQUIRYDeviceIdType "Identifier Type"
Identifier Type key.
kIOPropertySCSIINQUIRYUnitSerialNumber |
#define kIOPropertySCSIINQUIRYUnitSerialNumber "INQUIRY Unit Serial Number"
Key that describes the INQUIRY Unit Serial Number in the IORegistry.
kIOPropertySCSIPeripheralDeviceType |
#define kIOPropertySCSIPeripheralDeviceType "Peripheral Device Type"
SCSI Peripheral Device Type as reported in the INQUIRY data.
kIOPropertySCSIPeripheralDeviceTypeSize |
#define kIOPropertySCSIPeripheralDeviceTypeSize 8
Size of the kIOPropertySCSIPeripheralDeviceType key.
kIOPropertySCSIProductIdentification |
#define kIOPropertySCSIProductIdentification "Product Identification"
Product ID as reported in the INQUIRY data. Additional space characters (0x20) are truncated.
kIOPropertySCSIProductRevisionLevel |
#define kIOPropertySCSIProductRevisionLevel "Product Revision Level"
Product Revision Level as reported in the INQUIRY data.
kIOPropertySCSIVendorIdentification |
#define kIOPropertySCSIVendorIdentification "Vendor Identification"
Vendor ID as reported in the INQUIRY data. Additional space characters (0x20) are truncated.
Last Updated: 2009-10-14