4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Definitions for scsi media access
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Copyright (C) 2002 Laurent Pinchart
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Copyright 2005 Ivan Leo Puoti
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * This library is free software; you can redistribute it and/or
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * modify it under the terms of the GNU Lesser General Public
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * License as published by the Free Software Foundation; either
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * version 2.1 of the License, or (at your option) any later version.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * This library is distributed in the hope that it will be useful,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * but WITHOUT ANY WARRANTY; without even the implied warranty of
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Lesser General Public License for more details.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * You should have received a copy of the GNU Lesser General Public
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * License along with this library; if not, write to the Free Software
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * a choice of LGPL license versions is made available with the language indicating
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * that LGPLv2 or any later version may be used, or where a choice of which version
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * of the LGPL is applied is otherwise unspecified.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef _NTDDSCSI_H_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define _NTDDSCSI_H_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __cplusplus
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern "C" {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define IOCTL_SCSI_BASE FILE_DEVICE_CONTROLLER
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define IOCTL_SCSI_PASS_THROUGH CTL_CODE(IOCTL_SCSI_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define IOCTL_SCSI_MINIPORT CTL_CODE(IOCTL_SCSI_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define IOCTL_SCSI_GET_INQUIRY_DATA CTL_CODE(IOCTL_SCSI_BASE, 0x0403, METHOD_BUFFERED, FILE_ANY_ACCESS)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define IOCTL_SCSI_GET_CAPABILITIES CTL_CODE(IOCTL_SCSI_BASE, 0x0404, METHOD_BUFFERED, FILE_ANY_ACCESS)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define IOCTL_SCSI_PASS_THROUGH_DIRECT CTL_CODE(IOCTL_SCSI_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define IOCTL_SCSI_GET_ADDRESS CTL_CODE(IOCTL_SCSI_BASE, 0x0406, METHOD_BUFFERED, FILE_ANY_ACCESS)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define IOCTL_SCSI_RESCAN_BUS CTL_CODE(IOCTL_SCSI_BASE, 0x0407, METHOD_BUFFERED, FILE_ANY_ACCESS)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define IOCTL_SCSI_GET_DUMP_POINTERS CTL_CODE(IOCTL_SCSI_BASE, 0x0408, METHOD_BUFFERED, FILE_ANY_ACCESS)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define IOCTL_SCSI_FREE_DUMP_POINTERS CTL_CODE(IOCTL_SCSI_BASE, 0x0409, METHOD_BUFFERED, FILE_ANY_ACCESS)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define IOCTL_IDE_PASS_THROUGH CTL_CODE(IOCTL_SCSI_BASE, 0x040a, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCSI_IOCTL_DATA_OUT 0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCSI_IOCTL_DATA_IN 1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCSI_IOCTL_DATA_UNSPECIFIED 2
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _SCSI_PASS_THROUGH {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync USHORT Length;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR ScsiStatus;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR PathId;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR TargetId;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR Lun;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR CdbLength;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR SenseInfoLength;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR DataIn;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ULONG DataTransferLength;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ULONG TimeOutValue;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ULONG_PTR DataBufferOffset;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ULONG SenseInfoOffset;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR Cdb[16];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _SCSI_PASS_THROUGH_DIRECT {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync USHORT Length;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR ScsiStatus;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR PathId;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR TargetId;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR Lun;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR CdbLength;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR SenseInfoLength;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR DataIn;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ULONG DataTransferLength;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ULONG TimeOutValue;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PVOID DataBuffer;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ULONG SenseInfoOffset;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR Cdb[16];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _SCSI_ADDRESS {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ULONG Length;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR PortNumber;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR PathId;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR TargetId;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR Lun;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} SCSI_ADDRESS, *PSCSI_ADDRESS;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _IO_SCSI_CAPABILITIES {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ULONG Length;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ULONG MaximumTransferLength;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ULONG MaximumPhysicalPages;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ULONG SupportedAsynchronousEvents;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ULONG AlignmentMask;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync BOOLEAN TaggedQueuing;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync BOOLEAN AdapterScansDown;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync BOOLEAN AdapterUsesPio;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} IO_SCSI_CAPABILITIES, *PIO_SCSI_CAPABILITIES;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _SCSI_BUS_DATA {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR NumberOfLogicalUnits;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR InitiatorBusId;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ULONG InquiryDataOffset;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} SCSI_BUS_DATA, *PSCSI_BUS_DATA;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _SCSI_ADAPTER_BUS_INFO {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR NumberOfBuses;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SCSI_BUS_DATA BusData[1];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} SCSI_ADAPTER_BUS_INFO, *PSCSI_ADAPTER_BUS_INFO;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _SCSI_INQUIRY_DATA {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR PathId;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR TargetId;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR Lun;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync BOOLEAN DeviceClaimed;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ULONG InquiryDataLength;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ULONG NextInquiryDataOffset;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UCHAR InquiryData[1];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} SCSI_INQUIRY_DATA, *PSCSI_INQUIRY_DATA;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __cplusplus
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif /* _NTDDSCSI_H_ */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync