1 | /* $Id: ntddscsi.h,v 1.2 2003-01-12 16:19:56 sandervl Exp $ */
|
---|
2 | #ifndef __NTDDSCSI_H__
|
---|
3 | #define __NTDDSCSI_H__
|
---|
4 |
|
---|
5 | #include <winioctl.h>
|
---|
6 |
|
---|
7 | #define IOCTL_SCSI_BASE FILE_DEVICE_CONTROLLER
|
---|
8 |
|
---|
9 | #define DD_SCSI_DEVICE_NAME "\\Device\\ScsiPort"
|
---|
10 |
|
---|
11 | #define IOCTL_SCSI_PASS_THROUGH CTL_CODE(IOCTL_SCSI_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
|
---|
12 | #define IOCTL_SCSI_MINIPORT CTL_CODE(IOCTL_SCSI_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
|
---|
13 | #define IOCTL_SCSI_GET_INQUIRY_DATA CTL_CODE(IOCTL_SCSI_BASE, 0x0403, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
---|
14 | #define IOCTL_SCSI_GET_CAPABILITIES CTL_CODE(IOCTL_SCSI_BASE, 0x0404, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
---|
15 | #define IOCTL_SCSI_PASS_THROUGH_DIRECT CTL_CODE(IOCTL_SCSI_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
|
---|
16 | #define IOCTL_SCSI_GET_ADDRESS CTL_CODE(IOCTL_SCSI_BASE, 0x0406, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
---|
17 | #define IOCTL_SCSI_RESCAN_BUS CTL_CODE(IOCTL_SCSI_BASE, 0x0407, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
---|
18 | #define IOCTL_SCSI_GET_DUMP_POINTERS CTL_CODE(IOCTL_SCSI_BASE, 0x0408, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
---|
19 | #define IOCTL_SCSI_FREE_DUMP_POINTERS CTL_CODE(IOCTL_SCSI_BASE, 0x0409, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
---|
20 | #define IOCTL_IDE_PASS_THROUGH CTL_CODE(IOCTL_SCSI_BASE, 0x040a, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
|
---|
21 |
|
---|
22 | typedef struct _SCSI_PASS_THROUGH {
|
---|
23 | USHORT Length;
|
---|
24 | UCHAR ScsiStatus;
|
---|
25 | UCHAR PathId;
|
---|
26 | UCHAR TargetId;
|
---|
27 | UCHAR Lun;
|
---|
28 | UCHAR CdbLength;
|
---|
29 | UCHAR SenseInfoLength;
|
---|
30 | UCHAR DataIn;
|
---|
31 | ULONG DataTransferLength;
|
---|
32 | ULONG TimeOutValue;
|
---|
33 | ULONG_PTR DataBufferOffset;
|
---|
34 | ULONG SenseInfoOffset;
|
---|
35 | UCHAR Cdb[16];
|
---|
36 | }SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH;
|
---|
37 |
|
---|
38 | typedef struct _SCSI_PASS_THROUGH_DIRECT {
|
---|
39 | USHORT Length;
|
---|
40 | UCHAR ScsiStatus;
|
---|
41 | UCHAR PathId;
|
---|
42 | UCHAR TargetId;
|
---|
43 | UCHAR Lun;
|
---|
44 | UCHAR CdbLength;
|
---|
45 | UCHAR SenseInfoLength;
|
---|
46 | UCHAR DataIn;
|
---|
47 | ULONG DataTransferLength;
|
---|
48 | ULONG TimeOutValue;
|
---|
49 | PVOID DataBuffer;
|
---|
50 | ULONG SenseInfoOffset;
|
---|
51 | UCHAR Cdb[16];
|
---|
52 | }SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT;
|
---|
53 |
|
---|
54 | typedef struct _SCSI_BUS_DATA {
|
---|
55 | UCHAR NumberOfLogicalUnits;
|
---|
56 | UCHAR InitiatorBusId;
|
---|
57 | ULONG InquiryDataOffset;
|
---|
58 | }SCSI_BUS_DATA, *PSCSI_BUS_DATA;
|
---|
59 |
|
---|
60 | typedef struct _SCSI_ADAPTER_BUS_INFO {
|
---|
61 | UCHAR NumberOfBuses;
|
---|
62 | SCSI_BUS_DATA BusData[1];
|
---|
63 | } SCSI_ADAPTER_BUS_INFO, *PSCSI_ADAPTER_BUS_INFO;
|
---|
64 |
|
---|
65 | typedef struct _SCSI_INQUIRY_DATA {
|
---|
66 | UCHAR PathId;
|
---|
67 | UCHAR TargetId;
|
---|
68 | UCHAR Lun;
|
---|
69 | BOOLEAN DeviceClaimed;
|
---|
70 | ULONG InquiryDataLength;
|
---|
71 | ULONG NextInquiryDataOffset;
|
---|
72 | UCHAR InquiryData[1];
|
---|
73 | }SCSI_INQUIRY_DATA, *PSCSI_INQUIRY_DATA;
|
---|
74 |
|
---|
75 | typedef struct _SRB_IO_CONTROL {
|
---|
76 | ULONG HeaderLength;
|
---|
77 | UCHAR Signature[8];
|
---|
78 | ULONG Timeout;
|
---|
79 | ULONG ControlCode;
|
---|
80 | ULONG ReturnCode;
|
---|
81 | ULONG Length;
|
---|
82 | } SRB_IO_CONTROL, *PSRB_IO_CONTROL;
|
---|
83 |
|
---|
84 | typedef struct _IO_SCSI_CAPABILITIES {
|
---|
85 | ULONG Length;
|
---|
86 | ULONG MaximumTransferLength;
|
---|
87 | ULONG MaximumPhysicalPages;
|
---|
88 | ULONG SupportedAsynchronousEvents;
|
---|
89 | ULONG AlignmentMask;
|
---|
90 | BOOLEAN TaggedQueuing;
|
---|
91 | BOOLEAN AdapterScansDown;
|
---|
92 | BOOLEAN AdapterUsesPio;
|
---|
93 | } IO_SCSI_CAPABILITIES, *PIO_SCSI_CAPABILITIES;
|
---|
94 |
|
---|
95 | typedef struct _SCSI_ADDRESS {
|
---|
96 | ULONG Length;
|
---|
97 | UCHAR PortNumber;
|
---|
98 | UCHAR PathId;
|
---|
99 | UCHAR TargetId;
|
---|
100 | UCHAR Lun;
|
---|
101 | }SCSI_ADDRESS, *PSCSI_ADDRESS;
|
---|
102 |
|
---|
103 | struct _ADAPTER_OBJECT;
|
---|
104 |
|
---|
105 | typedef struct _DUMP_POINTERS {
|
---|
106 | struct _ADAPTER_OBJECT *AdapterObject;
|
---|
107 | PVOID MappedRegisterBase;
|
---|
108 | PVOID DumpData;
|
---|
109 | PVOID CommonBufferVa;
|
---|
110 | LARGE_INTEGER CommonBufferPa;
|
---|
111 | ULONG CommonBufferSize;
|
---|
112 | BOOLEAN AllocateCommonBuffers;
|
---|
113 | UCHAR Spare1[3];
|
---|
114 | PVOID DeviceObject;
|
---|
115 | } DUMP_POINTERS, *PDUMP_POINTERS;
|
---|
116 |
|
---|
117 | #define SCSI_IOCTL_DATA_OUT 0
|
---|
118 | #define SCSI_IOCTL_DATA_IN 1
|
---|
119 | #define SCSI_IOCTL_DATA_UNSPECIFIED 2
|
---|
120 |
|
---|
121 | #endif // __NTDDSCSI_H__
|
---|
122 |
|
---|