| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 | 
							- /*
 
-  * distilled information from various header files from Microsoft's
 
-  * DDK for Windows NT 4.0
 
-  */
 
- #ifndef NTSCSI_H_INCLUDED
 
- #define NTSCSI_H_INCLUDED
 
- #include <windows.h>
 
- #include "Aspi.h"
 
- typedef struct {
 
-   USHORT Length;
 
-   UCHAR  ScsiStatus;
 
-   UCHAR  PathId;
 
-   UCHAR  TargetId;
 
-   UCHAR  Lun;
 
-   UCHAR  CdbLength;
 
-   UCHAR  SenseInfoLength;
 
-   UCHAR  DataIn;
 
-   ULONG  DataTransferLength;
 
-   ULONG  TimeOutValue;
 
-   ULONG  DataBufferOffset;
 
-   ULONG  SenseInfoOffset;
 
-   UCHAR  Cdb[16];
 
- } SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH;
 
- typedef struct {
 
-   USHORT Length;
 
-   UCHAR  ScsiStatus;
 
-   UCHAR  PathId;
 
-   UCHAR  TargetId;
 
-   UCHAR  Lun;
 
-   UCHAR  CdbLength;
 
-   UCHAR  SenseInfoLength;
 
-   UCHAR  DataIn;
 
-   ULONG  DataTransferLength;
 
-   ULONG  TimeOutValue;
 
-   PVOID  DataBuffer;
 
-   ULONG  SenseInfoOffset;
 
-   UCHAR  Cdb[16];
 
- } SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT;
 
- typedef struct {
 
-   SCSI_PASS_THROUGH spt;
 
-   ULONG Filler;
 
-   UCHAR ucSenseBuf[32];
 
-   UCHAR ucDataBuf[512];
 
- } SCSI_PASS_THROUGH_WITH_BUFFERS, *PSCSI_PASS_THROUGH_WITH_BUFFERS;
 
- typedef struct {
 
-   SCSI_PASS_THROUGH_DIRECT spt;
 
-   ULONG Filler;
 
-   UCHAR ucSenseBuf[32];
 
- } SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER, *PSCSI_PASS_THROUGH_DIRECT_WITH_BUFFER;
 
- typedef struct {
 
-   UCHAR NumberOfLogicalUnits;
 
-   UCHAR InitiatorBusId;
 
-   ULONG InquiryDataOffset;
 
- } SCSI_BUS_DATA, *PSCSI_BUS_DATA;
 
- typedef struct {
 
-   UCHAR NumberOfBusses;
 
-   SCSI_BUS_DATA BusData[1];
 
- } SCSI_ADAPTER_BUS_INFO, *PSCSI_ADAPTER_BUS_INFO;
 
- typedef struct {
 
-   UCHAR PathId;
 
-   UCHAR TargetId;
 
-   UCHAR Lun;
 
-   BOOLEAN DeviceClaimed;
 
-   ULONG InquiryDataLength;
 
-   ULONG NextInquiryDataOffset;
 
-   UCHAR InquiryData[1];
 
- } SCSI_INQUIRY_DATA, *PSCSI_INQUIRY_DATA;
 
- typedef struct {
 
-   ULONG Length;
 
-   UCHAR PortNumber;
 
-   UCHAR PathId;
 
-   UCHAR TargetId;
 
-   UCHAR Lun;
 
- } SCSI_ADDRESS, *PSCSI_ADDRESS;
 
- /*
 
-  * method codes
 
-  */
 
- #define  METHOD_BUFFERED     0
 
- #define  METHOD_IN_DIRECT    1
 
- #define  METHOD_OUT_DIRECT   2
 
- #define  METHOD_NEITHER      3
 
- /*
 
-  * file access values
 
-  */
 
- #define  FILE_ANY_ACCESS      0
 
- #ifndef FILE_READ_ACCESS
 
- #define  FILE_READ_ACCESS     (0x0001)
 
- #define  FILE_WRITE_ACCESS    (0x0002)
 
- #endif
 
- #define IOCTL_SCSI_BASE    0x00000004
 
- /*
 
-  * constants for DataIn member of SCSI_PASS_THROUGH* structures
 
-  */
 
- #define  SCSI_IOCTL_DATA_OUT          0
 
- #define  SCSI_IOCTL_DATA_IN           1
 
- #define  SCSI_IOCTL_DATA_UNSPECIFIED  2
 
- /*
 
-  * Standard IOCTL define
 
-  */
 
- #define CTL_CODE( DevType, Function, Method, Access ) (                 \
 
-     ((DevType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \
 
- )
 
- #define IOCTL_SCSI_PASS_THROUGH         CTL_CODE( IOCTL_SCSI_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS )
 
- #define IOCTL_SCSI_MINIPORT             CTL_CODE( IOCTL_SCSI_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS )
 
- #define IOCTL_SCSI_GET_INQUIRY_DATA     CTL_CODE( IOCTL_SCSI_BASE, 0x0403, METHOD_BUFFERED, FILE_ANY_ACCESS)
 
- #define IOCTL_SCSI_GET_CAPABILITIES     CTL_CODE( IOCTL_SCSI_BASE, 0x0404, METHOD_BUFFERED, FILE_ANY_ACCESS)
 
- #define IOCTL_SCSI_PASS_THROUGH_DIRECT  CTL_CODE( IOCTL_SCSI_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS )
 
- #define IOCTL_SCSI_GET_ADDRESS          CTL_CODE( IOCTL_SCSI_BASE, 0x0406, METHOD_BUFFERED, FILE_ANY_ACCESS )
 
- int		NtScsiInit( void );
 
- int		NtScsiDeInit( void );
 
- BYTE	NtScsiGetNumAdapters( void );
 
- DWORD	NtScsiGetASPI32SupportInfo( void );
 
- DWORD	NtScsiGetDeviceType( LPSRB_GDEVBLOCK lpsrb );
 
- BYTE	NtScsiGetDeviceIndex( BYTE ha, BYTE tgt, BYTE lun );
 
- DWORD	NtScsiHandleHaInquiry( LPSRB_HAINQUIRY lpsrb );
 
- extern "C" DWORD	NtScsiSendASPI32Command( LPSRB lpsrb );
 
- DWORD	NtScsiExecSCSICommand( LPSRB_EXECSCSICMD lpsrb, BOOL bBeenHereBefore );
 
- #endif
 
 
  |