REACTOS_COMMON_FCB_HEADER structure made W32 XP compatible
[reactos.git] / include / ddk / ntddscsi.h
1 /* $Id$
2  *
3  * COPYRIGHT:       See COPYING in the top level directory
4  * PROJECT:         ReactOS kernel
5  * FILE:            services/storage/include/ntddscsi.h
6  * PURPOSE:         Basic SCSI definitions
7  * PROGRAMMER:      Eric Kohl (ekohl@rz-online.de)
8  */
9
10 #ifndef __STORAGE_INCLUDE_NTDDSCSI_H
11 #define __STORAGE_INCLUDE_NTDDSCSI_H
12
13
14 /* IOCTL codes */
15
16 #define IOCTL_SCSI_PASS_THROUGH \
17         CTL_CODE(FILE_DEVICE_CONTROLLER, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
18 #define IOCTL_SCSI_MINIPORT \
19         CTL_CODE(FILE_DEVICE_CONTROLLER, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
20 #define IOCTL_SCSI_GET_INQUIRY_DATA \
21         CTL_CODE(FILE_DEVICE_CONTROLLER, 0x0403, METHOD_BUFFERED, FILE_ANY_ACCESS)
22 #define IOCTL_SCSI_GET_CAPABILITIES \
23         CTL_CODE(FILE_DEVICE_CONTROLLER, 0x0404, METHOD_BUFFERED, FILE_ANY_ACCESS)
24 #define IOCTL_SCSI_PASS_THROUGH_DIRECT \
25         CTL_CODE(FILE_DEVICE_CONTROLLER, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
26 #define IOCTL_SCSI_GET_ADDRESS \
27         CTL_CODE(FILE_DEVICE_CONTROLLER, 0x0406, METHOD_BUFFERED, FILE_ANY_ACCESS)
28 #define IOCTL_SCSI_RESCAN_BUS \
29         CTL_CODE(FILE_DEVICE_CONTROLLER, 0x0407, METHOD_BUFFERED, FILE_ANY_ACCESS)
30 #define IOCTL_SCSI_GET_DUMP_POINTERS \
31         CTL_CODE(FILE_DEVICE_CONTROLLER, 0x0408, METHOD_BUFFERED, FILE_ANY_ACCESS)
32
33
34
35 /* Used by IOCTL_SCSI_GET_CAPABILITIES */
36
37 typedef struct _IO_SCSI_CAPABILITIES
38 {
39   ULONG Length;
40   ULONG MaximumTransferLength;
41   ULONG MaximumPhysicalPages;
42   ULONG SupportedAsynchronousEvents;
43   ULONG AlignmentMask;
44   BOOLEAN TaggedQueuing;
45   BOOLEAN AdapterScansDown;
46   BOOLEAN AdapterUsesPio;
47 } IO_SCSI_CAPABILITIES, *PIO_SCSI_CAPABILITIES;
48
49
50 /* Used by IOCTL_SCSI_GET_INQUIRY_DATA */
51
52 typedef struct _SCSI_BUS_DATA
53 {
54   UCHAR NumberOfLogicalUnits;
55   UCHAR InitiatorBusId;
56   ULONG InquiryDataOffset;
57 }SCSI_BUS_DATA, *PSCSI_BUS_DATA;
58
59
60 typedef struct _SCSI_ADAPTER_BUS_INFO
61 {
62   UCHAR NumberOfBuses;
63   SCSI_BUS_DATA BusData[1];
64 } SCSI_ADAPTER_BUS_INFO, *PSCSI_ADAPTER_BUS_INFO;
65
66
67 typedef struct _SCSI_INQUIRY_DATA
68 {
69   UCHAR PathId;
70   UCHAR TargetId;
71   UCHAR Lun;
72   BOOLEAN DeviceClaimed;
73   ULONG InquiryDataLength;
74   ULONG NextInquiryDataOffset;
75   UCHAR InquiryData[1];
76 }SCSI_INQUIRY_DATA, *PSCSI_INQUIRY_DATA;
77
78
79 /* Used by IOCTL_SCSI_GET_ADDRESS */
80
81 typedef struct _SCSI_ADDRESS
82 {
83   ULONG Length;
84   UCHAR PortNumber;
85   UCHAR PathId;
86   UCHAR TargetId;
87   UCHAR Lun;
88 } SCSI_ADDRESS, *PSCSI_ADDRESS;
89
90 #endif /* __STORAGE_INCLUDE_NTDDSCSI_H */
91
92 /* EOF */