SCSICmds_REPORT_LUNS_Definitions.h [plain text]
#ifndef _IOKIT_SCSI_CMDS_REPORT_LUNS_DEFINITIONS_H_
#define _IOKIT_SCSI_CMDS_REPORT_LUNS_DEFINITIONS_H_
#if KERNEL
#include <IOKit/IOTypes.h>
#else
#include <CoreFoundation/CoreFoundation.h>
#endif
#if 0
#pragma mark -
#pragma mark ¥ REPORT_LUNS Definitions
#pragma mark -
#endif
typedef struct SCSICmd_REPORT_LUNS_LUN_ENTRY
{
UInt16 FIRST_LEVEL_ADDRESSING;
UInt16 SECOND_LEVEL_ADDRESSING;
UInt16 THIRD_LEVEL_ADDRESSING;
UInt16 FOURTH_LEVEL_ADDRESSING;
} SCSICmd_REPORT_LUNS_LUN_ENTRY;
#define kREPORT_LUNS_HeaderSize 8
enum
{
kREPORT_LUNS_ADDRESS_METHOD_PERIPHERAL_DEVICE = 0,
kREPORT_LUNS_ADDRESS_DEVICE_TYPE_SPECIFIC = 1,
kREPORT_LUNS_ADDRESS_METHOD_LOGICAL_UNIT = 2,
kREPORT_LUNS_ADDRESS_METHOD_OFFSET = 14
};
typedef struct REPORT_LUNS_LOGICAL_UNIT_ADDRESSING
{
#ifdef __LITTLE_ENDIAN__
UInt16 LUN : 5;
UInt16 BUS_NUMBER : 3;
UInt16 TARGET : 6;
UInt16 reserved2 : 1;
UInt16 reserved : 1;
#else
UInt16 reserved : 1;
UInt16 reserved2 : 1;
UInt16 TARGET : 6;
UInt16 BUS_NUMBER : 3;
UInt16 LUN : 5;
#endif
} REPORT_LUNS_LOGICAL_UNIT_ADDRESSING;
typedef struct REPORT_LUNS_PERIPHERAL_DEVICE_ADDRESSING
{
#ifdef __LITTLE_ENDIAN__
UInt16 TARGET_LUN : 8;
UInt16 BUS_IDENTIFIER : 6;
UInt16 reserved2 : 1;
UInt16 reserved : 1;
#else
UInt16 reserved : 1;
UInt16 reserved2 : 1;
UInt16 BUS_IDENTIFIER : 6;
UInt16 TARGET_LUN : 8;
#endif
} REPORT_LUNS_PERIPHERAL_DEVICE_ADDRESSING;
struct SCSICmd_REPORT_LUNS_Header
{
UInt32 LUN_LIST_LENGTH; UInt32 RESERVED;
SCSICmd_REPORT_LUNS_LUN_ENTRY LUN[1]; }; typedef struct SCSICmd_REPORT_LUNS_Header SCSICmd_REPORT_LUNS_Header;
#endif