scsipt.h
上传用户:xmgzy123
上传日期:2007-01-07
资源大小:373k
文件大小:3k
源码类别:

SCSI/ASPI

开发平台:

WINDOWS

  1. /*
  2.  * distilled information from various header files from Microsoft's
  3.  * DDK for Windows NT 4.0
  4.  */
  5. #ifndef _SCSIPT_H_INC
  6. #define _SCSIPT_H_INC
  7. #include <windows.h>
  8. typedef struct {
  9.   USHORT Length;
  10.   UCHAR  ScsiStatus;
  11.   UCHAR  PathId;
  12.   UCHAR  TargetId;
  13.   UCHAR  Lun;
  14.   UCHAR  CdbLength;
  15.   UCHAR  SenseInfoLength;
  16.   UCHAR  DataIn;
  17.   ULONG  DataTransferLength;
  18.   ULONG  TimeOutValue;
  19.   ULONG  DataBufferOffset;
  20.   ULONG  SenseInfoOffset;
  21.   UCHAR  Cdb[16];
  22. } SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH;
  23. typedef struct {
  24.   USHORT Length;
  25.   UCHAR  ScsiStatus;
  26.   UCHAR  PathId;
  27.   UCHAR  TargetId;
  28.   UCHAR  Lun;
  29.   UCHAR  CdbLength;
  30.   UCHAR  SenseInfoLength;
  31.   UCHAR  DataIn;
  32.   ULONG  DataTransferLength;
  33.   ULONG  TimeOutValue;
  34.   PVOID  DataBuffer;
  35.   ULONG  SenseInfoOffset;
  36.   UCHAR  Cdb[16];
  37. } SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT;
  38. typedef struct {
  39.   SCSI_PASS_THROUGH spt;
  40.   ULONG Filler;
  41.   UCHAR ucSenseBuf[32];
  42.   UCHAR ucDataBuf[512];
  43. } SCSI_PASS_THROUGH_WITH_BUFFERS, *PSCSI_PASS_THROUGH_WITH_BUFFERS;
  44. typedef struct {
  45.   SCSI_PASS_THROUGH_DIRECT spt;
  46.   ULONG Filler;
  47.   UCHAR ucSenseBuf[32];
  48. } SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER, *PSCSI_PASS_THROUGH_DIRECT_WITH_BUFFER;
  49. typedef struct {
  50.   UCHAR NumberOfLogicalUnits;
  51.   UCHAR InitiatorBusId;
  52.   ULONG InquiryDataOffset;
  53. } SCSI_BUS_DATA, *PSCSI_BUS_DATA;
  54. typedef struct {
  55.   UCHAR NumberOfBusses;
  56.   SCSI_BUS_DATA BusData[1];
  57. } SCSI_ADAPTER_BUS_INFO, *PSCSI_ADAPTER_BUS_INFO;
  58. typedef struct {
  59.   UCHAR PathId;
  60.   UCHAR TargetId;
  61.   UCHAR Lun;
  62.   BOOLEAN DeviceClaimed;
  63.   ULONG InquiryDataLength;
  64.   ULONG NextInquiryDataOffset;
  65.   UCHAR InquiryData[1];
  66. } SCSI_INQUIRY_DATA, *PSCSI_INQUIRY_DATA;
  67. /*
  68.  * method codes
  69.  */
  70. #define  METHOD_BUFFERED     0
  71. #define  METHOD_IN_DIRECT    1
  72. #define  METHOD_OUT_DIRECT   2
  73. #define  METHOD_NEITHER      3
  74. /*
  75.  * file access values
  76.  */
  77. #define  FILE_ANY_ACCESS      0
  78. #define  FILE_READ_ACCESS     (0x0001)
  79. #define  FILE_WRITE_ACCESS    (0x0002)
  80. #define IOCTL_SCSI_BASE    0x00000004
  81. /*
  82.  * constants for DataIn member of SCSI_PASS_THROUGH* structures
  83.  */
  84. #define  SCSI_IOCTL_DATA_OUT          0
  85. #define  SCSI_IOCTL_DATA_IN           1
  86. #define  SCSI_IOCTL_DATA_UNSPECIFIED  2
  87. /*
  88.  * Standard IOCTL define
  89.  */
  90. #define CTL_CODE( DevType, Function, Method, Access ) (                 
  91.     ((DevType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) 
  92. )
  93. #define IOCTL_SCSI_PASS_THROUGH         CTL_CODE( IOCTL_SCSI_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS )
  94. #define IOCTL_SCSI_MINIPORT             CTL_CODE( IOCTL_SCSI_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS )
  95. #define IOCTL_SCSI_GET_INQUIRY_DATA     CTL_CODE( IOCTL_SCSI_BASE, 0x0403, METHOD_BUFFERED, FILE_ANY_ACCESS)
  96. #define IOCTL_SCSI_GET_CAPABILITIES     CTL_CODE( IOCTL_SCSI_BASE, 0x0404, METHOD_BUFFERED, FILE_ANY_ACCESS)
  97. #define IOCTL_SCSI_PASS_THROUGH_DIRECT  CTL_CODE( IOCTL_SCSI_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS )
  98. #endif