|
|
1.1 ! root 1: /*++ BUILD Version: 0001 // Increment this if a change has global effects ! 2: ! 3: Copyright (c) 1990-1993 Microsoft Corporation ! 4: ! 5: Module Name: ! 6: ! 7: ntddscsi.h ! 8: ! 9: Abstract: ! 10: ! 11: This is the include file that defines all constants and types for ! 12: accessing the SCSI port adapters. ! 13: ! 14: Author: ! 15: ! 16: Jeff Havens ! 17: ! 18: Revision History: ! 19: ! 20: --*/ ! 21: ! 22: #ifndef _NTDDSCSIH_ ! 23: #define _NTDDSCSIH_ ! 24: ! 25: // ! 26: // Device Name - this string is the name of the device. It is the name ! 27: // that should be passed to NtOpenFile when accessing the device. ! 28: // ! 29: // Note: For devices that support multiple units, it should be suffixed ! 30: // with the Ascii representation of the unit number. ! 31: // ! 32: ! 33: #define IOCTL_SCSI_BASE FILE_DEVICE_CONTROLLER ! 34: ! 35: #define DD_SCSI_DEVICE_NAME "\\Device\\ScsiPort" ! 36: ! 37: ! 38: // ! 39: // NtDeviceIoControlFile IoControlCode values for this device. ! 40: // ! 41: // Warning: Remember that the low two bits of the code specify how the ! 42: // buffers are passed to the driver! ! 43: // ! 44: ! 45: #define IOCTL_SCSI_PASS_THROUGH CTL_CODE(IOCTL_SCSI_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) ! 46: #define IOCTL_SCSI_MINIPORT CTL_CODE(IOCTL_SCSI_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) ! 47: #define IOCTL_SCSI_GET_INQUIRY_DATA CTL_CODE(IOCTL_SCSI_BASE, 0x0403, METHOD_BUFFERED, FILE_ANY_ACCESS) ! 48: #define IOCTL_SCSI_GET_CAPABILITIES CTL_CODE(IOCTL_SCSI_BASE, 0x0404, METHOD_BUFFERED, FILE_ANY_ACCESS) ! 49: #define IOCTL_SCSI_PASS_THROUGH_DIRECT CTL_CODE(IOCTL_SCSI_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) ! 50: #define IOCTL_SCSI_GET_ADDRESS CTL_CODE(IOCTL_SCSI_BASE, 0x0406, METHOD_BUFFERED, FILE_ANY_ACCESS) ! 51: ! 52: // ! 53: // Define the SCSI pass through structure. ! 54: // ! 55: ! 56: typedef struct _SCSI_PASS_THROUGH { ! 57: USHORT Length; ! 58: UCHAR ScsiStatus; ! 59: UCHAR PathId; ! 60: UCHAR TargetId; ! 61: UCHAR Lun; ! 62: UCHAR CdbLength; ! 63: UCHAR SenseInfoLength; ! 64: UCHAR DataIn; ! 65: ULONG DataTransferLength; ! 66: ULONG TimeOutValue; ! 67: ULONG DataBufferOffset; ! 68: ULONG SenseInfoOffset; ! 69: UCHAR Cdb[16]; ! 70: }SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH; ! 71: ! 72: // ! 73: // Define the SCSI pass through direct structure. ! 74: // ! 75: ! 76: typedef struct _SCSI_PASS_THROUGH_DIRECT { ! 77: USHORT Length; ! 78: UCHAR ScsiStatus; ! 79: UCHAR PathId; ! 80: UCHAR TargetId; ! 81: UCHAR Lun; ! 82: UCHAR CdbLength; ! 83: UCHAR SenseInfoLength; ! 84: UCHAR DataIn; ! 85: ULONG DataTransferLength; ! 86: ULONG TimeOutValue; ! 87: PVOID DataBuffer; ! 88: ULONG SenseInfoOffset; ! 89: UCHAR Cdb[16]; ! 90: }SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT; ! 91: ! 92: // ! 93: // Define SCSI information. ! 94: // Used with the IOCTL_SCSI_GET_INQUIRY_DATA IOCTL. ! 95: // ! 96: ! 97: typedef struct _SCSI_BUS_DATA { ! 98: UCHAR NumberOfLogicalUnits; ! 99: UCHAR InitiatorBusId; ! 100: ULONG InquiryDataOffset; ! 101: }SCSI_BUS_DATA, *PSCSI_BUS_DATA; ! 102: ! 103: // ! 104: // Define SCSI adapter bus information structure.. ! 105: // Used with the IOCTL_SCSI_GET_INQUIRY_DATA IOCTL. ! 106: // ! 107: ! 108: typedef struct _SCSI_ADAPTER_BUS_INFO { ! 109: UCHAR NumberOfBuses; ! 110: SCSI_BUS_DATA BusData[1]; ! 111: } SCSI_ADAPTER_BUS_INFO, *PSCSI_ADAPTER_BUS_INFO; ! 112: ! 113: // ! 114: // Define SCSI adapter bus information. ! 115: // Used with the IOCTL_SCSI_GET_INQUIRY_DATA IOCTL. ! 116: // ! 117: ! 118: typedef struct _SCSI_INQUIRY_DATA { ! 119: UCHAR PathId; ! 120: UCHAR TargetId; ! 121: UCHAR Lun; ! 122: BOOLEAN DeviceClaimed; ! 123: ULONG InquiryDataLength; ! 124: ULONG NextInquiryDataOffset; ! 125: UCHAR InquiryData[1]; ! 126: }SCSI_INQUIRY_DATA, *PSCSI_INQUIRY_DATA; ! 127: ! 128: // ! 129: // Define header for I/O control SRB. ! 130: // ! 131: ! 132: typedef struct _SRB_IO_CONTROL { ! 133: ULONG HeaderLength; ! 134: UCHAR Signature[8]; ! 135: ULONG Timeout; ! 136: ULONG ControlCode; ! 137: ULONG ReturnCode; ! 138: ULONG Length; ! 139: } SRB_IO_CONTROL, *PSRB_IO_CONTROL; ! 140: ! 141: // ! 142: // SCSI port driver capabilities structure. ! 143: // ! 144: ! 145: typedef struct _IO_SCSI_CAPABILITIES { ! 146: ! 147: // ! 148: // Length of this structure ! 149: // ! 150: ! 151: ULONG Length; ! 152: ! 153: // ! 154: // Maximum transfer size in single SRB ! 155: // ! 156: ! 157: ULONG MaximumTransferLength; ! 158: ! 159: // ! 160: // Maximum number of physical pages per data buffer ! 161: // ! 162: ! 163: ULONG MaximumPhysicalPages; ! 164: ! 165: // ! 166: // Async calls from port to class ! 167: // ! 168: ! 169: ULONG SupportedAsynchronousEvents; ! 170: ! 171: // ! 172: // Alignment mask for data transfers. ! 173: // ! 174: ! 175: ULONG AlignmentMask; ! 176: ! 177: // ! 178: // Supports tagged queuing ! 179: // ! 180: ! 181: BOOLEAN TaggedQueuing; ! 182: ! 183: // ! 184: // Host adapter scans down for bios devices. ! 185: // ! 186: ! 187: BOOLEAN AdapterScansDown; ! 188: ! 189: // ! 190: // The host adapter uses programmed I/O. ! 191: // ! 192: ! 193: BOOLEAN AdapterUsesPio; ! 194: ! 195: } IO_SCSI_CAPABILITIES, *PIO_SCSI_CAPABILITIES; ! 196: ! 197: typedef struct _SCSI_ADDRESS { ! 198: ULONG Length; ! 199: UCHAR PortNumber; ! 200: UCHAR PathId; ! 201: UCHAR TargetId; ! 202: UCHAR Lun; ! 203: }SCSI_ADDRESS, *PSCSI_ADDRESS; ! 204: ! 205: // ! 206: // Define values for pass-through DataIn field. ! 207: // ! 208: ! 209: #define SCSI_IOCTL_DATA_OUT 0 ! 210: #define SCSI_IOCTL_DATA_IN 1 ! 211: #define SCSI_IOCTL_DATA_UNSPECIFIED 2 ! 212: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.