home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 14 / hacker14.iso / programacao / cwin / c.exe / $INSTDIR / include / ddk / ntddscsi.h < prev    next >
Encoding:
C/C++ Source or Header  |  2003-12-15  |  4.3 KB  |  177 lines

  1. /*
  2.  * ntddscsi.h
  3.  *
  4.  * SCSI port IOCTL interface.
  5.  *
  6.  * This file is part of the w32api package.
  7.  *
  8.  * Contributors:
  9.  *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
  10.  *
  11.  * THIS SOFTWARE IS NOT COPYRIGHTED
  12.  *
  13.  * This source code is offered for use in the public domain. You may
  14.  * use, modify or distribute it freely.
  15.  *
  16.  * This code is distributed in the hope that it will be useful but
  17.  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
  18.  * DISCLAIMED. This includes but is not limited to warranties of
  19.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  20.  *
  21.  */
  22.  
  23. #ifndef __NTDDSCSI_H
  24. #define __NTDDSCSI_H
  25.  
  26. #if __GNUC__ >=3
  27. #pragma GCC system_header
  28. #endif
  29.  
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif
  33.  
  34. #pragma pack(push,4)
  35.  
  36. #include "ntddk.h"
  37.  
  38.  
  39. #define DD_SCSI_DEVICE_NAME               "\\Device\\ScsiPort"
  40. #define DD_SCSI_DEVICE_NAME_U             L"\\Device\\ScsiPort"
  41.  
  42. #define IOCTL_SCSI_BASE                   FILE_DEVICE_CONTROLLER
  43.  
  44. #define IOCTL_SCSI_GET_INQUIRY_DATA \
  45.   CTL_CODE(IOCTL_SCSI_BASE, 0x0403, METHOD_BUFFERED, FILE_ANY_ACCESS)
  46.  
  47. #define IOCTL_SCSI_GET_CAPABILITIES \
  48.   CTL_CODE(IOCTL_SCSI_BASE, 0x0404, METHOD_BUFFERED, FILE_ANY_ACCESS)
  49.  
  50. #define IOCTL_SCSI_GET_ADDRESS \
  51.   CTL_CODE(IOCTL_SCSI_BASE, 0x0406, METHOD_BUFFERED, FILE_ANY_ACCESS)
  52.  
  53. #define IOCTL_SCSI_MINIPORT \
  54.   CTL_CODE(IOCTL_SCSI_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
  55.  
  56. #define IOCTL_SCSI_PASS_THROUGH \
  57.   CTL_CODE(IOCTL_SCSI_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
  58.  
  59. #define IOCTL_SCSI_PASS_THROUGH_DIRECT \
  60.   CTL_CODE(IOCTL_SCSI_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
  61.  
  62. #define IOCTL_SCSI_RESCAN_BUS \
  63.   CTL_CODE(IOCTL_SCSI_BASE, 0x0407, METHOD_BUFFERED, FILE_ANY_ACCESS)
  64.  
  65.  
  66. DEFINE_GUID(ScsiRawInterfaceGuid, \
  67.   0x53f56309L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
  68.  
  69. DEFINE_GUID(WmiScsiAddressGuid, \
  70.   0x53f5630fL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
  71.  
  72. typedef struct _SCSI_PASS_THROUGH {
  73.   USHORT  Length;
  74.   UCHAR  ScsiStatus;
  75.   UCHAR  PathId;
  76.   UCHAR  TargetId;
  77.   UCHAR  Lun;
  78.   UCHAR  CdbLength;
  79.   UCHAR  SenseInfoLength;
  80.   UCHAR  DataIn;
  81.   ULONG  DataTransferLength;
  82.   ULONG  TimeOutValue;
  83.   ULONG_PTR DataBufferOffset;
  84.   ULONG  SenseInfoOffset;
  85.   UCHAR  Cdb[16];
  86. } SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH;
  87.  
  88. typedef struct _SCSI_PASS_THROUGH_DIRECT {
  89.   USHORT  Length;
  90.   UCHAR  ScsiStatus;
  91.   UCHAR  PathId;
  92.   UCHAR  TargetId;
  93.   UCHAR  Lun;
  94.   UCHAR  CdbLength;
  95.   UCHAR  SenseInfoLength;
  96.   UCHAR  DataIn;
  97.   ULONG  DataTransferLength;
  98.   ULONG  TimeOutValue;
  99.   PVOID  DataBuffer;
  100.   ULONG  SenseInfoOffset;
  101.   UCHAR  Cdb[16];
  102. } SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT;
  103.  
  104. typedef struct _SRB_IO_CONTROL { 
  105.   ULONG  HeaderLength; 
  106.   UCHAR  Signature[8]; 
  107.   ULONG  Timeout; 
  108.   ULONG  ControlCode; 
  109.   ULONG  ReturnCode; 
  110.   ULONG  Length; 
  111. } SRB_IO_CONTROL, *PSRB_IO_CONTROL; 
  112.  
  113. typedef struct _SCSI_ADDRESS {
  114.     ULONG  Length;
  115.     UCHAR  PortNumber;
  116.     UCHAR  PathId;
  117.     UCHAR  TargetId;
  118.     UCHAR  Lun;
  119. } SCSI_ADDRESS, *PSCSI_ADDRESS;
  120.  
  121. typedef struct _SCSI_BUS_DATA {
  122.     UCHAR  NumberOfLogicalUnits;
  123.     UCHAR  InitiatorBusId;
  124.     ULONG  InquiryDataOffset;
  125. }SCSI_BUS_DATA, *PSCSI_BUS_DATA;
  126.  
  127. typedef struct _SCSI_ADAPTER_BUS_INFO {
  128.     UCHAR  NumberOfBuses;
  129.     SCSI_BUS_DATA  BusData[1];
  130. } SCSI_ADAPTER_BUS_INFO, *PSCSI_ADAPTER_BUS_INFO;
  131.  
  132. typedef struct _IO_SCSI_CAPABILITIES {
  133.     ULONG  Length;
  134.     ULONG  MaximumTransferLength;
  135.     ULONG  MaximumPhysicalPages;
  136.     ULONG  SupportedAsynchronousEvents;
  137.     ULONG  AlignmentMask;
  138.     BOOLEAN  TaggedQueuing;
  139.     BOOLEAN  AdapterScansDown;
  140.     BOOLEAN  AdapterUsesPio;
  141. } IO_SCSI_CAPABILITIES, *PIO_SCSI_CAPABILITIES;
  142.  
  143. typedef struct _SCSI_INQUIRY_DATA {
  144.     UCHAR  PathId;
  145.     UCHAR  TargetId;
  146.     UCHAR  Lun;
  147.     BOOLEAN  DeviceClaimed;
  148.     ULONG  InquiryDataLength;
  149.     ULONG  NextInquiryDataOffset;
  150.     UCHAR  InquiryData[1];
  151. } SCSI_INQUIRY_DATA, *PSCSI_INQUIRY_DATA;
  152.  
  153. #define SCSI_IOCTL_DATA_OUT               0
  154. #define SCSI_IOCTL_DATA_IN                1
  155. #define SCSI_IOCTL_DATA_UNSPECIFIED       2
  156.  
  157. typedef struct _DUMP_POINTERS {
  158.     PADAPTER_OBJECT  AdapterObject;
  159.     PVOID  MappedRegisterBase;
  160.     PVOID  DumpData;
  161.     PVOID  CommonBufferVa;
  162.     LARGE_INTEGER  CommonBufferPa;
  163.     ULONG  CommonBufferSize;
  164.     BOOLEAN  AllocateCommonBuffers;
  165.     BOOLEAN  UseDiskDump;
  166.     UCHAR  Spare1[2];
  167.     PVOID  DeviceObject;
  168. } DUMP_POINTERS, *PDUMP_POINTERS;
  169.  
  170. #pragma pack(pop)
  171.  
  172. #ifdef __cplusplus
  173. }
  174. #endif
  175.  
  176. #endif /* __NTDDSCSI_H */
  177.