| /* |
| * Definitions for scsi media access |
| * |
| * Copyright (C) 2002 Laurent Pinchart |
| * Copyright 2005 Ivan Leo Puoti |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Lesser General Public |
| * License as published by the Free Software Foundation; either |
| * version 2.1 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public |
| * License along with this library; if not, write to the Free Software |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA |
| */ |
| |
| #ifndef _NTDDSCSI_H_ |
| #define _NTDDSCSI_H_ |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #define IOCTL_SCSI_BASE FILE_DEVICE_CONTROLLER |
| |
| #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) |
| #define IOCTL_SCSI_RESCAN_BUS CTL_CODE(IOCTL_SCSI_BASE, 0x0407, METHOD_BUFFERED, FILE_ANY_ACCESS) |
| #define IOCTL_SCSI_GET_DUMP_POINTERS CTL_CODE(IOCTL_SCSI_BASE, 0x0408, METHOD_BUFFERED, FILE_ANY_ACCESS) |
| #define IOCTL_SCSI_FREE_DUMP_POINTERS CTL_CODE(IOCTL_SCSI_BASE, 0x0409, METHOD_BUFFERED, FILE_ANY_ACCESS) |
| #define IOCTL_IDE_PASS_THROUGH CTL_CODE(IOCTL_SCSI_BASE, 0x040a, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) |
| #define IOCTL_ATA_PASS_THROUGH CTL_CODE(IOCTL_SCSI_BASE, 0x040b, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) |
| #define IOCTL_ATA_PASS_THROUGH_DIRECT CTL_CODE(IOCTL_SCSI_BASE, 0x040c, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) |
| |
| #define SCSI_IOCTL_DATA_OUT 0 |
| #define SCSI_IOCTL_DATA_IN 1 |
| #define SCSI_IOCTL_DATA_UNSPECIFIED 2 |
| |
| typedef struct _SCSI_PASS_THROUGH { |
| USHORT Length; |
| UCHAR ScsiStatus; |
| UCHAR PathId; |
| UCHAR TargetId; |
| UCHAR Lun; |
| UCHAR CdbLength; |
| UCHAR SenseInfoLength; |
| UCHAR DataIn; |
| ULONG DataTransferLength; |
| ULONG TimeOutValue; |
| ULONG_PTR DataBufferOffset; |
| ULONG SenseInfoOffset; |
| UCHAR Cdb[16]; |
| } SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH; |
| |
| typedef struct _SCSI_PASS_THROUGH_DIRECT { |
| 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_ADDRESS { |
| ULONG Length; |
| UCHAR PortNumber; |
| UCHAR PathId; |
| UCHAR TargetId; |
| UCHAR Lun; |
| } SCSI_ADDRESS, *PSCSI_ADDRESS; |
| |
| typedef struct _IO_SCSI_CAPABILITIES { |
| ULONG Length; |
| ULONG MaximumTransferLength; |
| ULONG MaximumPhysicalPages; |
| ULONG SupportedAsynchronousEvents; |
| ULONG AlignmentMask; |
| BOOLEAN TaggedQueuing; |
| BOOLEAN AdapterScansDown; |
| BOOLEAN AdapterUsesPio; |
| } IO_SCSI_CAPABILITIES, *PIO_SCSI_CAPABILITIES; |
| |
| typedef struct _SCSI_BUS_DATA { |
| UCHAR NumberOfLogicalUnits; |
| UCHAR InitiatorBusId; |
| ULONG InquiryDataOffset; |
| } SCSI_BUS_DATA, *PSCSI_BUS_DATA; |
| |
| typedef struct _SCSI_ADAPTER_BUS_INFO { |
| UCHAR NumberOfBuses; |
| SCSI_BUS_DATA BusData[1]; |
| } SCSI_ADAPTER_BUS_INFO, *PSCSI_ADAPTER_BUS_INFO; |
| |
| typedef struct _SCSI_INQUIRY_DATA { |
| UCHAR PathId; |
| UCHAR TargetId; |
| UCHAR Lun; |
| BOOLEAN DeviceClaimed; |
| ULONG InquiryDataLength; |
| ULONG NextInquiryDataOffset; |
| UCHAR InquiryData[1]; |
| } SCSI_INQUIRY_DATA, *PSCSI_INQUIRY_DATA; |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* _NTDDSCSI_H_ */ |