⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scsi.h

📁 MinGW+MSYS开发必用的api参考
💻 H
📖 第 1 页 / 共 4 页
字号:
#define IOCTL_SCSI_MINIPORT_NOT_CLUSTER_CAPABLE ((FILE_DEVICE_SCSI << 16) + 0x0521)/* Read Capacity Data. Returned in Big Endian format */typedef struct _READ_CAPACITY_DATA {  ULONG  LogicalBlockAddress;  ULONG  BytesPerBlock;} READ_CAPACITY_DATA, *PREAD_CAPACITY_DATA;/* Read Block Limits Data. Returned in Big Endian format */typedef struct _READ_BLOCK_LIMITS {  UCHAR  Reserved;  UCHAR  BlockMaximumSize[3];  UCHAR  BlockMinimumSize[2];} READ_BLOCK_LIMITS_DATA, *PREAD_BLOCK_LIMITS_DATA;typedef struct _MODE_PARAMETER_HEADER {  UCHAR  ModeDataLength;  UCHAR  MediumType;  UCHAR  DeviceSpecificParameter;  UCHAR  BlockDescriptorLength;}MODE_PARAMETER_HEADER, *PMODE_PARAMETER_HEADER;typedef struct _MODE_PARAMETER_HEADER10 {  UCHAR  ModeDataLength[2];  UCHAR  MediumType;  UCHAR  DeviceSpecificParameter;  UCHAR  Reserved[2];  UCHAR  BlockDescriptorLength[2];} MODE_PARAMETER_HEADER10, *PMODE_PARAMETER_HEADER10;#define MODE_FD_SINGLE_SIDE               0x01#define MODE_FD_DOUBLE_SIDE               0x02#define MODE_FD_MAXIMUM_TYPE              0x1E#define MODE_DSP_FUA_SUPPORTED            0x10#define MODE_DSP_WRITE_PROTECT            0x80typedef struct _MODE_PARAMETER_BLOCK {  UCHAR  DensityCode;  UCHAR  NumberOfBlocks[3];  UCHAR  Reserved;  UCHAR  BlockLength[3];} MODE_PARAMETER_BLOCK, *PMODE_PARAMETER_BLOCK;typedef struct _MODE_DISCONNECT_PAGE {  UCHAR  PageCode : 6;  UCHAR  Reserved : 1;  UCHAR  PageSavable : 1;  UCHAR  PageLength;  UCHAR  BufferFullRatio;  UCHAR  BufferEmptyRatio;  UCHAR  BusInactivityLimit[2];  UCHAR  BusDisconnectTime[2];  UCHAR  BusConnectTime[2];  UCHAR  MaximumBurstSize[2];  UCHAR  DataTransferDisconnect : 2;  UCHAR  Reserved2[3];}MODE_DISCONNECT_PAGE, *PMODE_DISCONNECT_PAGE;typedef struct _MODE_CACHING_PAGE {  UCHAR  PageCode : 6;  UCHAR  Reserved : 1;  UCHAR  PageSavable : 1;  UCHAR  PageLength;  UCHAR  ReadDisableCache : 1;  UCHAR  MultiplicationFactor : 1;  UCHAR  WriteCacheEnable : 1;  UCHAR  Reserved2 : 5;  UCHAR  WriteRetensionPriority : 4;  UCHAR  ReadRetensionPriority : 4;  UCHAR  DisablePrefetchTransfer[2];  UCHAR  MinimumPrefetch[2];  UCHAR  MaximumPrefetch[2];  UCHAR  MaximumPrefetchCeiling[2];}MODE_CACHING_PAGE, *PMODE_CACHING_PAGE;typedef struct _MODE_CDROM_WRITE_PARAMETERS_PAGE {  UCHAR  PageLength;  UCHAR  WriteType : 4;  UCHAR  TestWrite : 1;  UCHAR  LinkSizeValid : 1;  UCHAR  BufferUnderrunFreeEnabled : 1;  UCHAR  Reserved2 : 1;  UCHAR  TrackMode : 4;  UCHAR  Copy : 1;  UCHAR  FixedPacket : 1;  UCHAR  MultiSession : 2;  UCHAR  DataBlockType : 4;  UCHAR  Reserved3 : 4;      UCHAR  LinkSize;  UCHAR  Reserved4;  UCHAR  HostApplicationCode : 6;  UCHAR  Reserved5 : 2;      UCHAR  SessionFormat;  UCHAR  Reserved6;  UCHAR  PacketSize[4];  UCHAR  AudioPauseLength[2];  UCHAR  Reserved7 : 7;  UCHAR  MediaCatalogNumberValid : 1;  UCHAR  MediaCatalogNumber[13];  UCHAR  MediaCatalogNumberZero;  UCHAR  MediaCatalogNumberAFrame;  UCHAR  Reserved8 : 7;  UCHAR  ISRCValid : 1;  UCHAR  ISRCCountry[2];  UCHAR  ISRCOwner[3];  UCHAR  ISRCRecordingYear[2];  UCHAR  ISRCSerialNumber[5];  UCHAR  ISRCZero;  UCHAR  ISRCAFrame;  UCHAR  ISRCReserved;  UCHAR  SubHeaderData[4];} MODE_CDROM_WRITE_PARAMETERS_PAGE, *PMODE_CDROM_WRITE_PARAMETERS_PAGE;typedef struct _MODE_FLEXIBLE_DISK_PAGE {  UCHAR  PageCode : 6;  UCHAR  Reserved : 1;  UCHAR  PageSavable : 1;  UCHAR  PageLength;  UCHAR  TransferRate[2];  UCHAR  NumberOfHeads;  UCHAR  SectorsPerTrack;  UCHAR  BytesPerSector[2];  UCHAR  NumberOfCylinders[2];  UCHAR  StartWritePrecom[2];  UCHAR  StartReducedCurrent[2];  UCHAR  StepRate[2];  UCHAR  StepPluseWidth;  UCHAR  HeadSettleDelay[2];  UCHAR  MotorOnDelay;  UCHAR  MotorOffDelay;  UCHAR  Reserved2 : 5;  UCHAR  MotorOnAsserted : 1;  UCHAR  StartSectorNumber : 1;  UCHAR  TrueReadySignal : 1;  UCHAR  StepPlusePerCyclynder : 4;  UCHAR  Reserved3 : 4;  UCHAR  WriteCompenstation;  UCHAR  HeadLoadDelay;  UCHAR  HeadUnloadDelay;  UCHAR  Pin2Usage : 4;  UCHAR  Pin34Usage : 4;  UCHAR  Pin1Usage : 4;  UCHAR  Pin4Usage : 4;  UCHAR  MediumRotationRate[2];  UCHAR  Reserved4[2];} MODE_FLEXIBLE_DISK_PAGE, *PMODE_FLEXIBLE_DISK_PAGE;typedef struct _MODE_FORMAT_PAGE {  UCHAR  PageCode : 6;  UCHAR  Reserved : 1;  UCHAR  PageSavable : 1;  UCHAR  PageLength;  UCHAR  TracksPerZone[2];  UCHAR  AlternateSectorsPerZone[2];  UCHAR  AlternateTracksPerZone[2];  UCHAR  AlternateTracksPerLogicalUnit[2];  UCHAR  SectorsPerTrack[2];  UCHAR  BytesPerPhysicalSector[2];  UCHAR  Interleave[2];  UCHAR  TrackSkewFactor[2];  UCHAR  CylinderSkewFactor[2];  UCHAR  Reserved2 : 4;  UCHAR  SurfaceFirst : 1;  UCHAR  RemovableMedia : 1;  UCHAR  HardSectorFormating : 1;  UCHAR  SoftSectorFormating : 1;  UCHAR  Reserved3[3];} MODE_FORMAT_PAGE, *PMODE_FORMAT_PAGE;typedef struct _MODE_RIGID_GEOMETRY_PAGE {  UCHAR  PageCode : 6;  UCHAR  Reserved : 1;  UCHAR  PageSavable : 1;  UCHAR  PageLength;  UCHAR  NumberOfCylinders[3];  UCHAR  NumberOfHeads;  UCHAR  StartWritePrecom[3];  UCHAR  StartReducedCurrent[3];  UCHAR  DriveStepRate[2];  UCHAR  LandZoneCyclinder[3];  UCHAR  RotationalPositionLock : 2;  UCHAR  Reserved2 : 6;  UCHAR  RotationOffset;  UCHAR  Reserved3;  UCHAR  RoataionRate[2];  UCHAR  Reserved4[2];} MODE_RIGID_GEOMETRY_PAGE, *PMODE_RIGID_GEOMETRY_PAGE;typedef struct _MODE_READ_WRITE_RECOVERY_PAGE {  UCHAR  PageCode : 6;  UCHAR  Reserved1 : 1;  UCHAR  PSBit : 1;  UCHAR  PageLength;  UCHAR  DCRBit : 1;  UCHAR  DTEBit : 1;  UCHAR  PERBit : 1;  UCHAR  EERBit : 1;  UCHAR  RCBit : 1;  UCHAR  TBBit : 1;  UCHAR  ARRE : 1;  UCHAR  AWRE : 1;  UCHAR  ReadRetryCount;  UCHAR  Reserved4[4];  UCHAR  WriteRetryCount;  UCHAR  Reserved5[3];} MODE_READ_WRITE_RECOVERY_PAGE, *PMODE_READ_WRITE_RECOVERY_PAGE;typedef struct _MODE_READ_RECOVERY_PAGE {  UCHAR  PageCode : 6;  UCHAR  Reserved1 : 1;  UCHAR  PSBit : 1;  UCHAR  PageLength;  UCHAR  DCRBit : 1;  UCHAR  DTEBit : 1;  UCHAR  PERBit : 1;  UCHAR  Reserved2 : 1;  UCHAR  RCBit : 1;  UCHAR  TBBit : 1;  UCHAR  Reserved3 : 2;  UCHAR  ReadRetryCount;  UCHAR  Reserved4[4];} MODE_READ_RECOVERY_PAGE, *PMODE_READ_RECOVERY_PAGE;typedef struct _MODE_INFO_EXCEPTIONS {  UCHAR  PageCode : 6;  UCHAR  Reserved1 : 1;  UCHAR  PSBit : 1;  UCHAR  PageLength;  _ANONYMOUS_UNION union {    UCHAR  Flags;    _ANONYMOUS_STRUCT struct {      UCHAR  LogErr : 1;      UCHAR  Reserved2 : 1;      UCHAR  Test : 1;      UCHAR  Dexcpt : 1;      UCHAR  Reserved3 : 3;      UCHAR  Perf : 1;    } DUMMYSTRUCTNAME;  } DUMMYUNIONNAME;  UCHAR  ReportMethod : 4;  UCHAR  Reserved4 : 4;  UCHAR  IntervalTimer[4];  UCHAR  ReportCount[4];} MODE_INFO_EXCEPTIONS, *PMODE_INFO_EXCEPTIONS;/* CDROM audio control */#define CDB_AUDIO_PAUSE                   0x00#define CDB_AUDIO_RESUME                  0x01#define CDB_DEVICE_START                  0x11#define CDB_DEVICE_STOP                   0x10#define CDB_EJECT_MEDIA                   0x10#define CDB_LOAD_MEDIA                    0x01#define CDB_SUBCHANNEL_HEADER             0x00#define CDB_SUBCHANNEL_BLOCK              0x01#define CDROM_AUDIO_CONTROL_PAGE          0x0E#define MODE_SELECT_IMMEDIATE             0x04#define MODE_SELECT_PFBIT                 0x10#define CDB_USE_MSF                       0x01typedef struct _PORT_OUTPUT {  UCHAR  ChannelSelection;  UCHAR  Volume;} PORT_OUTPUT, *PPORT_OUTPUT;typedef struct _AUDIO_OUTPUT {  UCHAR  CodePage;  UCHAR  ParameterLength;  UCHAR  Immediate;  UCHAR  Reserved[2];  UCHAR  LbaFormat;  UCHAR  LogicalBlocksPerSecond[2];  PORT_OUTPUT  PortOutput[4];} AUDIO_OUTPUT, *PAUDIO_OUTPUT;/* Multisession CDROMs */#define GET_LAST_SESSION 0x01#define GET_SESSION_DATA 0x02;/* Atapi 2.5 changers */typedef struct _MECHANICAL_STATUS_INFORMATION_HEADER {  UCHAR  CurrentSlot : 5;  UCHAR  ChangerState : 2;  UCHAR  Fault : 1;  UCHAR  Reserved : 5;  UCHAR  MechanismState : 3;  UCHAR  CurrentLogicalBlockAddress[3];  UCHAR  NumberAvailableSlots;  UCHAR  SlotTableLength[2];} MECHANICAL_STATUS_INFORMATION_HEADER, *PMECHANICAL_STATUS_INFORMATION_HEADER;typedef struct _SLOT_TABLE_INFORMATION {  UCHAR  DiscChanged : 1;  UCHAR  Reserved : 6;  UCHAR  DiscPresent : 1;  UCHAR  Reserved2[3];} SLOT_TABLE_INFORMATION, *PSLOT_TABLE_INFORMATION;typedef struct _MECHANICAL_STATUS {  MECHANICAL_STATUS_INFORMATION_HEADER  MechanicalStatusHeader;  SLOT_TABLE_INFORMATION  SlotTableInfo[1];} MECHANICAL_STATUS, *PMECHANICAL_STATUS;/* Tape definitions */typedef struct _TAPE_POSITION_DATA {	UCHAR  Reserved1 : 2;	UCHAR  BlockPositionUnsupported : 1;	UCHAR  Reserved2 : 3;	UCHAR  EndOfPartition : 1;	UCHAR  BeginningOfPartition : 1;	UCHAR  PartitionNumber;	USHORT  Reserved3;	UCHAR  FirstBlock[4];	UCHAR  LastBlock[4];	UCHAR  Reserved4;	UCHAR  NumberOfBlocks[3];	UCHAR  NumberOfBytes[4];} TAPE_POSITION_DATA, *PTAPE_POSITION_DATA;/* This structure is used to convert little endian ULONGs   to SCSI CDB big endians values. */typedef union _EIGHT_BYTE {  _ANONYMOUS_STRUCT struct {    UCHAR  Byte0;    UCHAR  Byte1;    UCHAR  Byte2;    UCHAR  Byte3;    UCHAR  Byte4;    UCHAR  Byte5;    UCHAR  Byte6;    UCHAR  Byte7;  } DUMMYSTRUCTNAME;  ULONGLONG  AsULongLong;} EIGHT_BYTE, *PEIGHT_BYTE;typedef union _FOUR_BYTE {  _ANONYMOUS_STRUCT struct {    UCHAR  Byte0;    UCHAR  Byte1;    UCHAR  Byte2;    UCHAR  Byte3;  } DUMMYSTRUCTNAME;  ULONG  AsULong;} FOUR_BYTE, *PFOUR_BYTE;typedef union _TWO_BYTE {  _ANONYMOUS_STRUCT struct {    UCHAR  Byte0;    UCHAR  Byte1;  } DUMMYSTRUCTNAME;  USHORT  AsUShort;} TWO_BYTE, *PTWO_BYTE;/* Byte reversing macro for converting between   big- and little-endian formats */#define REVERSE_BYTES_QUAD(Destination, Source) { \    PEIGHT_BYTE _val1 = (PEIGHT_BYTE)(Destination); \    PEIGHT_BYTE _val2 = (PEIGHT_BYTE)(Source); \    _val1->Byte7 = _val2->Byte0; \    _val1->Byte6 = _val2->Byte1; \    _val1->Byte5 = _val2->Byte2; \    _val1->Byte4 = _val2->Byte3; \    _val1->Byte3 = _val2->Byte4; \    _val1->Byte2 = _val2->Byte5; \    _val1->Byte1 = _val2->Byte6; \    _val1->Byte0 = _val2->Byte7; \}#define REVERSE_BYTES(Destination, Source) { \    PFOUR_BYTE _val1 = (PFOUR_BYTE)(Destination); \    PFOUR_BYTE _val2 = (PFOUR_BYTE)(Source); \    _val1->Byte3 = _val2->Byte0; \    _val1->Byte2 = _val2->Byte1; \    _val1->Byte1 = _val2->Byte2; \    _val1->Byte0 = _val2->Byte3; \}#define REVERSE_BYTES_SHORT(Destination, Source) { \  PTWO_BYTE _val1 = (PTWO_BYTE)(Destination); \  PTWO_BYTE _val2 = (PTWO_BYTE)(Source); \  _val1->Byte1 = _val2->Byte0; \  _val1->Byte0 = _val2->Byte1; \}#define REVERSE_SHORT(Short) { \  UCHAR _val; \  PTWO_BYTE _val2 = (PTWO_BYTE)(Short); \  _val = _val2->Byte0; \  _val2->Byte0 = _val2->Byte1; \  _val2->Byte1 = _val; \}#define REVERSE_LONG(Long) { \  UCHAR _val; \  PFOUR_BYTE _val2 = (PFOUR_BYTE)(Long); \  _val = _val2->Byte3; \  _val2->Byte3 = _val2->Byte0; \  _val2->Byte0 = _val; \  _val = _val2->Byte2; \  _val2->Byte2 = _val2->Byte1; \  _val2->Byte1 = _val; \}#define WHICH_BIT(Data, Bit) { \  UCHAR _val; \  for (_val = 0; _val < 32; _val++) { \    if (((Data) >> _val) == 1) { \      break; \    } \  } \  ASSERT(_val != 32); \  (Bit) = _val; \}#ifdef __cplusplus}#endif#endif /* __SCSI_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -