winemac: Make the implementation of clearToBlackIfNeeded compatible with core contexts.
[wine.git] / include / ntddscsi.h
blob390b653efb80855442f49ed8fc9f593ab026eae2
1 /*
2 * Definitions for scsi media access
4 * Copyright (C) 2002 Laurent Pinchart
5 * Copyright 2005 Ivan Leo Puoti
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
22 #ifndef _NTDDSCSI_H_
23 #define _NTDDSCSI_H_
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
29 #define IOCTL_SCSI_BASE FILE_DEVICE_CONTROLLER
31 #define IOCTL_SCSI_PASS_THROUGH CTL_CODE(IOCTL_SCSI_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
32 #define IOCTL_SCSI_MINIPORT CTL_CODE(IOCTL_SCSI_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
33 #define IOCTL_SCSI_GET_INQUIRY_DATA CTL_CODE(IOCTL_SCSI_BASE, 0x0403, METHOD_BUFFERED, FILE_ANY_ACCESS)
34 #define IOCTL_SCSI_GET_CAPABILITIES CTL_CODE(IOCTL_SCSI_BASE, 0x0404, METHOD_BUFFERED, FILE_ANY_ACCESS)
35 #define IOCTL_SCSI_PASS_THROUGH_DIRECT CTL_CODE(IOCTL_SCSI_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
36 #define IOCTL_SCSI_GET_ADDRESS CTL_CODE(IOCTL_SCSI_BASE, 0x0406, METHOD_BUFFERED, FILE_ANY_ACCESS)
37 #define IOCTL_SCSI_RESCAN_BUS CTL_CODE(IOCTL_SCSI_BASE, 0x0407, METHOD_BUFFERED, FILE_ANY_ACCESS)
38 #define IOCTL_SCSI_GET_DUMP_POINTERS CTL_CODE(IOCTL_SCSI_BASE, 0x0408, METHOD_BUFFERED, FILE_ANY_ACCESS)
39 #define IOCTL_SCSI_FREE_DUMP_POINTERS CTL_CODE(IOCTL_SCSI_BASE, 0x0409, METHOD_BUFFERED, FILE_ANY_ACCESS)
40 #define IOCTL_IDE_PASS_THROUGH CTL_CODE(IOCTL_SCSI_BASE, 0x040a, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
41 #define IOCTL_ATA_PASS_THROUGH CTL_CODE(IOCTL_SCSI_BASE, 0x040b, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
42 #define IOCTL_ATA_PASS_THROUGH_DIRECT CTL_CODE(IOCTL_SCSI_BASE, 0x040c, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
44 #define SCSI_IOCTL_DATA_OUT 0
45 #define SCSI_IOCTL_DATA_IN 1
46 #define SCSI_IOCTL_DATA_UNSPECIFIED 2
48 typedef struct _SCSI_PASS_THROUGH {
49 USHORT Length;
50 UCHAR ScsiStatus;
51 UCHAR PathId;
52 UCHAR TargetId;
53 UCHAR Lun;
54 UCHAR CdbLength;
55 UCHAR SenseInfoLength;
56 UCHAR DataIn;
57 ULONG DataTransferLength;
58 ULONG TimeOutValue;
59 ULONG_PTR DataBufferOffset;
60 ULONG SenseInfoOffset;
61 UCHAR Cdb[16];
62 } SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH;
64 typedef struct _SCSI_PASS_THROUGH_DIRECT {
65 USHORT Length;
66 UCHAR ScsiStatus;
67 UCHAR PathId;
68 UCHAR TargetId;
69 UCHAR Lun;
70 UCHAR CdbLength;
71 UCHAR SenseInfoLength;
72 UCHAR DataIn;
73 ULONG DataTransferLength;
74 ULONG TimeOutValue;
75 PVOID DataBuffer;
76 ULONG SenseInfoOffset;
77 UCHAR Cdb[16];
78 } SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT;
80 typedef struct _SCSI_ADDRESS {
81 ULONG Length;
82 UCHAR PortNumber;
83 UCHAR PathId;
84 UCHAR TargetId;
85 UCHAR Lun;
86 } SCSI_ADDRESS, *PSCSI_ADDRESS;
88 typedef struct _IO_SCSI_CAPABILITIES {
89 ULONG Length;
90 ULONG MaximumTransferLength;
91 ULONG MaximumPhysicalPages;
92 ULONG SupportedAsynchronousEvents;
93 ULONG AlignmentMask;
94 BOOLEAN TaggedQueuing;
95 BOOLEAN AdapterScansDown;
96 BOOLEAN AdapterUsesPio;
97 } IO_SCSI_CAPABILITIES, *PIO_SCSI_CAPABILITIES;
99 typedef struct _SCSI_BUS_DATA {
100 UCHAR NumberOfLogicalUnits;
101 UCHAR InitiatorBusId;
102 ULONG InquiryDataOffset;
103 } SCSI_BUS_DATA, *PSCSI_BUS_DATA;
105 typedef struct _SCSI_ADAPTER_BUS_INFO {
106 UCHAR NumberOfBuses;
107 SCSI_BUS_DATA BusData[1];
108 } SCSI_ADAPTER_BUS_INFO, *PSCSI_ADAPTER_BUS_INFO;
110 typedef struct _SCSI_INQUIRY_DATA {
111 UCHAR PathId;
112 UCHAR TargetId;
113 UCHAR Lun;
114 BOOLEAN DeviceClaimed;
115 ULONG InquiryDataLength;
116 ULONG NextInquiryDataOffset;
117 UCHAR InquiryData[1];
118 } SCSI_INQUIRY_DATA, *PSCSI_INQUIRY_DATA;
120 #ifdef __cplusplus
122 #endif
124 #endif /* _NTDDSCSI_H_ */