ntddscsi.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /*
  2. * DDK definitions for scsi media access
  3. *
  4. * Copyright (C) 2002 Laurent Pinchart
  5. *
  6. * This library is free software; you can redistribute it and/or
  7. * modify it under the terms of the GNU Lesser General Public
  8. * License as published by the Free Software Foundation; either
  9. * version 2.1 of the License, or (at your option) any later version.
  10. *
  11. * This library is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. * Lesser General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU Lesser General Public
  17. * License along with this library; if not, write to the Free Software
  18. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  19. */
  20. #ifndef _NTDDSCSI_H_
  21. #define _NTDDSCSI_H_
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. #define IOCTL_SCSI_BASE FILE_DEVICE_CONTROLLER
  26. #define IOCTL_SCSI_PASS_THROUGH CTL_CODE(IOCTL_SCSI_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
  27. #define IOCTL_SCSI_MINIPORT CTL_CODE(IOCTL_SCSI_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
  28. #define IOCTL_SCSI_GET_INQUIRY_DATA CTL_CODE(IOCTL_SCSI_BASE, 0x0403, METHOD_BUFFERED, FILE_ANY_ACCESS)
  29. #define IOCTL_SCSI_GET_CAPABILITIES CTL_CODE(IOCTL_SCSI_BASE, 0x0404, METHOD_BUFFERED, FILE_ANY_ACCESS)
  30. #define IOCTL_SCSI_PASS_THROUGH_DIRECT CTL_CODE(IOCTL_SCSI_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
  31. #define IOCTL_SCSI_GET_ADDRESS CTL_CODE(IOCTL_SCSI_BASE, 0x0406, METHOD_BUFFERED, FILE_ANY_ACCESS)
  32. #define IOCTL_SCSI_RESCAN_BUS CTL_CODE(IOCTL_SCSI_BASE, 0x0407, METHOD_BUFFERED, FILE_ANY_ACCESS)
  33. #define IOCTL_SCSI_GET_DUMP_POINTERS CTL_CODE(IOCTL_SCSI_BASE, 0x0408, METHOD_BUFFERED, FILE_ANY_ACCESS)
  34. #define IOCTL_SCSI_FREE_DUMP_POINTERS CTL_CODE(IOCTL_SCSI_BASE, 0x0409, METHOD_BUFFERED, FILE_ANY_ACCESS)
  35. #define IOCTL_IDE_PASS_THROUGH CTL_CODE(IOCTL_SCSI_BASE, 0x040a, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
  36. #define SCSI_IOCTL_DATA_OUT 0
  37. #define SCSI_IOCTL_DATA_IN 1
  38. #define SCSI_IOCTL_DATA_UNSPECIFIED 2
  39. typedef struct _SCSI_PASS_THROUGH {
  40. USHORT Length;
  41. UCHAR ScsiStatus;
  42. UCHAR PathId;
  43. UCHAR TargetId;
  44. UCHAR Lun;
  45. UCHAR CdbLength;
  46. UCHAR SenseInfoLength;
  47. UCHAR DataIn;
  48. ULONG DataTransferLength;
  49. ULONG TimeOutValue;
  50. ULONG_PTR DataBufferOffset;
  51. ULONG SenseInfoOffset;
  52. UCHAR Cdb[16];
  53. } SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH;
  54. typedef struct _SCSI_PASS_THROUGH_DIRECT {
  55. USHORT Length;
  56. UCHAR ScsiStatus;
  57. UCHAR PathId;
  58. UCHAR TargetId;
  59. UCHAR Lun;
  60. UCHAR CdbLength;
  61. UCHAR SenseInfoLength;
  62. UCHAR DataIn;
  63. ULONG DataTransferLength;
  64. ULONG TimeOutValue;
  65. PVOID DataBuffer;
  66. ULONG SenseInfoOffset;
  67. UCHAR Cdb[16];
  68. } SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT;
  69. typedef struct _SCSI_ADDRESS {
  70. ULONG Length;
  71. UCHAR PortNumber;
  72. UCHAR PathId;
  73. UCHAR TargetId;
  74. UCHAR Lun;
  75. } SCSI_ADDRESS, *PSCSI_ADDRESS;
  76. typedef struct _IO_SCSI_CAPABILITIES {
  77. ULONG Length;
  78. ULONG MaximumTransferLength;
  79. ULONG MaximumPhysicalPages;
  80. ULONG SupportedAsynchronousEvents;
  81. ULONG AlignmentMask;
  82. BOOLEAN TaggedQueuing;
  83. BOOLEAN AdapterScansDown;
  84. BOOLEAN AdapterUsesPio;
  85. } IO_SCSI_CAPABILITIES, *PIO_SCSI_CAPABILITIES;
  86. #ifdef __cplusplus
  87. }
  88. #endif
  89. #endif /* _NTDDSCSI_H_ */