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

📄 scsi.h

📁 MinGW+MSYS开发必用的api参考
💻 H
📖 第 1 页 / 共 4 页
字号:
/* * scsi.h * * SCSI port and class interface. * * This file is part of the w32api package. * * Contributors: *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net> * * THIS SOFTWARE IS NOT COPYRIGHTED * * This source code is offered for use in the public domain. You may * use, modify or distribute it freely. * * This code is distributed in the hope that it will be useful but * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY * DISCLAIMED. This includes but is not limited to warranties of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */#ifndef __SCSI_H#define __SCSI_H#if __GNUC__ >=3#pragma GCC system_header#endif#ifdef __cplusplusextern "C" {#endif#include "ntddk.h"typedef union _CDB {  struct _CDB6GENERIC {    UCHAR  OperationCode;    UCHAR  Immediate : 1;    UCHAR  CommandUniqueBits : 4;    UCHAR  LogicalUnitNumber : 3;    UCHAR  CommandUniqueBytes[3];    UCHAR  Link : 1;    UCHAR  Flag : 1;    UCHAR  Reserved : 4;    UCHAR  VendorUnique : 2;  } CDB6GENERIC, *PCDB6GENERIC;    struct _CDB6READWRITE {    UCHAR  OperationCode;    UCHAR  LogicalBlockMsb1 : 5;    UCHAR  LogicalUnitNumber : 3;    UCHAR  LogicalBlockMsb0;    UCHAR  LogicalBlockLsb;    UCHAR  TransferBlocks;    UCHAR  Control;  } CDB6READWRITE, *PCDB6READWRITE;    struct _CDB6INQUIRY {    UCHAR  OperationCode;    UCHAR  Reserved1 : 5;    UCHAR  LogicalUnitNumber : 3;    UCHAR  PageCode;    UCHAR  IReserved;    UCHAR  AllocationLength;    UCHAR  Control;  } CDB6INQUIRY, *PCDB6INQUIRY;    struct _CDB6INQUIRY3 {    UCHAR  OperationCode;    UCHAR  EnableVitalProductData : 1;    UCHAR  CommandSupportData : 1;    UCHAR  Reserved1 : 6;    UCHAR  PageCode;    UCHAR  Reserved2;    UCHAR  AllocationLength;    UCHAR  Control;  } CDB6INQUIRY3, *PCDB6INQUIRY3;    struct _CDB6VERIFY {    UCHAR  OperationCode;    UCHAR  Fixed : 1;    UCHAR  ByteCompare : 1;    UCHAR  Immediate : 1;    UCHAR  Reserved : 2;    UCHAR  LogicalUnitNumber : 3;    UCHAR  VerificationLength[3];    UCHAR  Control;  } CDB6VERIFY, *PCDB6VERIFY;    struct _CDB6FORMAT {    UCHAR  OperationCode;    UCHAR  FormatControl : 5;    UCHAR  LogicalUnitNumber : 3;    UCHAR  FReserved1;    UCHAR  InterleaveMsb;    UCHAR  InterleaveLsb;    UCHAR  FReserved2;  } CDB6FORMAT, *PCDB6FORMAT;    struct _CDB10 {    UCHAR  OperationCode;    UCHAR  RelativeAddress : 1;    UCHAR  Reserved1 : 2;    UCHAR  ForceUnitAccess : 1;    UCHAR  DisablePageOut : 1;    UCHAR  LogicalUnitNumber : 3;    UCHAR  LogicalBlockByte0;    UCHAR  LogicalBlockByte1;    UCHAR  LogicalBlockByte2;    UCHAR  LogicalBlockByte3;    UCHAR  Reserved2;    UCHAR  TransferBlocksMsb;    UCHAR  TransferBlocksLsb;    UCHAR  Control;  } CDB10, *PCDB10;    struct _CDB12 {    UCHAR  OperationCode;    UCHAR  RelativeAddress : 1;    UCHAR  Reserved1 : 2;    UCHAR  ForceUnitAccess : 1;    UCHAR  DisablePageOut : 1;    UCHAR  LogicalUnitNumber : 3;    UCHAR  LogicalBlock[4];    UCHAR  TransferLength[4];    UCHAR  Reserved2;    UCHAR  Control;  } CDB12, *PCDB12;    struct _PAUSE_RESUME {    UCHAR  OperationCode;    UCHAR  Reserved1 : 5;    UCHAR  LogicalUnitNumber : 3;    UCHAR  Reserved2[6];    UCHAR  Action;    UCHAR  Control;  } PAUSE_RESUME, *PPAUSE_RESUME;    struct _READ_TOC {    UCHAR  OperationCode;    UCHAR  Reserved0 : 1;    UCHAR  Msf : 1;    UCHAR  Reserved1 : 3;    UCHAR  LogicalUnitNumber : 3;    UCHAR  Format2 : 4;    UCHAR  Reserved2 : 4;    UCHAR  Reserved3[3];    UCHAR  StartingTrack;    UCHAR  AllocationLength[2];    UCHAR  Control : 6;    UCHAR  Format : 2;  } READ_TOC, *PREAD_TOC;    struct _READ_DISK_INFORMATION {    UCHAR  OperationCode;    UCHAR  Reserved1 : 5;    UCHAR  Lun : 3;    UCHAR  Reserved2[5];    UCHAR  AllocationLength[2];    UCHAR  Control;  } READ_DISK_INFORMATION, *PREAD_DISK_INFORMATION;    struct _READ_TRACK_INFORMATION {    UCHAR  OperationCode;    UCHAR  Track : 1;    UCHAR  Reserved1 : 3;    UCHAR  Reserved2 : 1;    UCHAR  Lun : 3;    UCHAR  BlockAddress[4];    UCHAR  Reserved3;    UCHAR  AllocationLength[2];    UCHAR  Control;  } READ_TRACK_INFORMATION, *PREAD_TRACK_INFORMATION;    struct _RESERVE_TRACK_RZONE {    UCHAR  OperationCode;    UCHAR  Reserved1[4];    UCHAR  ReservationSize[4];    UCHAR  Control;  } RESERVE_TRACK_RZONE, *PRESERVE_TRACK_RZONE;    struct _SEND_OPC_INFORMATION {    UCHAR  OperationCode;    UCHAR  DoOpc    : 1;    UCHAR  Reserved : 7;    UCHAR  Reserved1[5];    UCHAR  ParameterListLength[2];    UCHAR  Reserved2;  } SEND_OPC_INFORMATION, *PSEND_OPC_INFORMATION;    struct _CLOSE_TRACK {    UCHAR  OperationCode;    UCHAR  Immediate : 1;    UCHAR  Reserved1 : 7;    UCHAR  Track     : 1;    UCHAR  Session   : 1;    UCHAR  Reserved2 : 6;    UCHAR  Reserved3;    UCHAR  TrackNumber[2];    UCHAR  Reserved4[3];    UCHAR  Control;  } CLOSE_TRACK, *PCLOSE_TRACK;    struct _SEND_CUE_SHEET {    UCHAR  OperationCode;    UCHAR  Reserved[5];    UCHAR  CueSheetSize[3];    UCHAR  Control;  } SEND_CUE_SHEET, *PSEND_CUE_SHEET;    struct _READ_HEADER {    UCHAR  OperationCode;    UCHAR  Reserved1 : 1;    UCHAR  Msf : 1;    UCHAR  Reserved2 : 3;    UCHAR  Lun : 3;    UCHAR  LogicalBlockAddress[4];    UCHAR  Reserved3;    UCHAR  AllocationLength[2];    UCHAR  Control;  } READ_HEADER, *PREAD_HEADER;    struct _PLAY_AUDIO {    UCHAR  OperationCode;    UCHAR  Reserved1 : 5;    UCHAR  LogicalUnitNumber : 3;    UCHAR  StartingBlockAddress[4];    UCHAR  Reserved2;    UCHAR  PlayLength[2];    UCHAR  Control;  } PLAY_AUDIO, *PPLAY_AUDIO;    struct _PLAY_AUDIO_MSF {     UCHAR  OperationCode;    UCHAR  Reserved1 : 5;    UCHAR  LogicalUnitNumber : 3;    UCHAR  Reserved2;    UCHAR  StartingM;    UCHAR  StartingS;    UCHAR  StartingF;    UCHAR  EndingM;    UCHAR  EndingS;    UCHAR  EndingF;    UCHAR  Control;  } PLAY_AUDIO_MSF, *PPLAY_AUDIO_MSF;  /* FIXME: Should the union be anonymous in C++ too?  If so,   can't define named types _LBA and _MSF within anonymous union   for C++. */ 	  struct _PLAY_CD {    UCHAR  OperationCode;    UCHAR  Reserved1 : 1;    UCHAR  CMSF : 1;    UCHAR  ExpectedSectorType : 3;    UCHAR  Lun : 3;#ifndef __cplusplus  _ANONYMOUS_UNION#endif  union {      struct _LBA {            UCHAR  StartingBlockAddress[4];            UCHAR  PlayLength[4];      } LBA;        struct _MSF {            UCHAR  Reserved1;            UCHAR  StartingM;            UCHAR  StartingS;            UCHAR  StartingF;            UCHAR  EndingM;            UCHAR  EndingS;            UCHAR  EndingF;            UCHAR  Reserved2;      } MSF;  #ifndef __cplusplus  }DUMMYUNIONNAME;  #else  }u;  #endif      UCHAR  Audio : 1;    UCHAR  Composite : 1;    UCHAR  Port1 : 1;    UCHAR  Port2 : 1;    UCHAR  Reserved2 : 3;    UCHAR  Speed : 1;    UCHAR  Control;  } PLAY_CD, *PPLAY_CD;    struct _SCAN_CD {    UCHAR  OperationCode;    UCHAR  RelativeAddress : 1;    UCHAR  Reserved1 : 3;    UCHAR  Direct : 1;    UCHAR  Lun : 3;    UCHAR  StartingAddress[4];    UCHAR  Reserved2[3];    UCHAR  Reserved3 : 6;    UCHAR  Type : 2;    UCHAR  Reserved4;    UCHAR  Control;  } SCAN_CD, *PSCAN_CD;    struct _STOP_PLAY_SCAN {    UCHAR  OperationCode;    UCHAR  Reserved1 : 5;    UCHAR  Lun : 3;    UCHAR  Reserved2[7];    UCHAR  Control;  } STOP_PLAY_SCAN, *PSTOP_PLAY_SCAN;    struct _SUBCHANNEL {    UCHAR  OperationCode;    UCHAR  Reserved0 : 1;    UCHAR  Msf : 1;    UCHAR  Reserved1 : 3;    UCHAR  LogicalUnitNumber : 3;    UCHAR  Reserved2 : 6;    UCHAR  SubQ : 1;    UCHAR  Reserved3 : 1;    UCHAR  Format;    UCHAR  Reserved4[2];    UCHAR  TrackNumber;    UCHAR  AllocationLength[2];    UCHAR  Control;  } SUBCHANNEL, *PSUBCHANNEL;    struct _READ_CD {     UCHAR  OperationCode;    UCHAR  RelativeAddress : 1;    UCHAR  Reserved0 : 1;    UCHAR  ExpectedSectorType : 3;    UCHAR  Lun : 3;    UCHAR  StartingLBA[4];    UCHAR  TransferBlocks[3];    UCHAR  Reserved2 : 1;    UCHAR  ErrorFlags : 2;    UCHAR  IncludeEDC : 1;    UCHAR  IncludeUserData : 1;    UCHAR  HeaderCode : 2;    UCHAR  IncludeSyncData : 1;    UCHAR  SubChannelSelection : 3;    UCHAR  Reserved3 : 5;    UCHAR  Control;  } READ_CD, *PREAD_CD;    struct _READ_CD_MSF {    UCHAR  OperationCode;    UCHAR  RelativeAddress : 1;    UCHAR  Reserved1 : 1;    UCHAR  ExpectedSectorType : 3;    UCHAR  Lun : 3;    UCHAR  Reserved2;    UCHAR  StartingM;    UCHAR  StartingS;    UCHAR  StartingF;    UCHAR  EndingM;    UCHAR  EndingS;    UCHAR  EndingF;    UCHAR  Reserved3;    UCHAR  Reserved4 : 1;    UCHAR  ErrorFlags : 2;    UCHAR  IncludeEDC : 1;    UCHAR  IncludeUserData : 1;    UCHAR  HeaderCode : 2;    UCHAR  IncludeSyncData : 1;    UCHAR  SubChannelSelection : 3;    UCHAR  Reserved5 : 5;    UCHAR  Control;  } READ_CD_MSF, *PREAD_CD_MSF;    struct _PLXTR_READ_CDDA {    UCHAR  OperationCode;    UCHAR  Reserved0 : 5;    UCHAR  LogicalUnitNumber : 3;    UCHAR  LogicalBlockByte0;    UCHAR  LogicalBlockByte1;    UCHAR  LogicalBlockByte2;    UCHAR  LogicalBlockByte3;    UCHAR  TransferBlockByte0;    UCHAR  TransferBlockByte1;    UCHAR  TransferBlockByte2;    UCHAR  TransferBlockByte3;    UCHAR  SubCode;    UCHAR  Control;  } PLXTR_READ_CDDA, *PPLXTR_READ_CDDA;    struct _NEC_READ_CDDA {    UCHAR  OperationCode;    UCHAR  Reserved0;    UCHAR  LogicalBlockByte0;    UCHAR  LogicalBlockByte1;    UCHAR  LogicalBlockByte2;    UCHAR  LogicalBlockByte3;    UCHAR  Reserved1;    UCHAR  TransferBlockByte0;    UCHAR  TransferBlockByte1;    UCHAR  Control;  } NEC_READ_CDDA, *PNEC_READ_CDDA;    struct _MODE_SENSE {    UCHAR  OperationCode;    UCHAR  Reserved1 : 3;    UCHAR  Dbd : 1;    UCHAR  Reserved2 : 1;    UCHAR  LogicalUnitNumber : 3;    UCHAR  PageCode : 6;    UCHAR  Pc : 2;    UCHAR  Reserved3;    UCHAR  AllocationLength;    UCHAR  Control;  } MODE_SENSE, *PMODE_SENSE;    struct _MODE_SENSE10 {    UCHAR  OperationCode;    UCHAR  Reserved1 : 3;    UCHAR  Dbd : 1;    UCHAR  Reserved2 : 1;    UCHAR  LogicalUnitNumber : 3;    UCHAR  PageCode : 6;    UCHAR  Pc : 2;    UCHAR  Reserved3[4];    UCHAR  AllocationLength[2];

⌨️ 快捷键说明

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