Embed:
(wiki syntax)
Show/hide line numbers
ntddscsi.h
00001 /* 00002 * ntddscsi.h 00003 * 00004 * SCSI port IOCTL interface. 00005 * 00006 * This file is part of the w32api package. 00007 * 00008 * Contributors: 00009 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> 00010 * 00011 * THIS SOFTWARE IS NOT COPYRIGHTED 00012 * 00013 * This source code is offered for use in the public domain. You may 00014 * use, modify or distribute it freely. 00015 * 00016 * This code is distributed in the hope that it will be useful but 00017 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 00018 * DISCLAIMED. This includes but is not limited to warranties of 00019 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00020 * 00021 */ 00022 00023 #ifndef __NTDDSCSI_H 00024 #define __NTDDSCSI_H 00025 00026 #if __GNUC__ >=3 00027 #pragma GCC system_header 00028 #endif 00029 00030 #ifdef __cplusplus 00031 extern "C" { 00032 #endif 00033 00034 #include "ntddk.h" 00035 00036 #define DD_SCSI_DEVICE_NAME "\\Device\\ScsiPort" 00037 #define DD_SCSI_DEVICE_NAME_U L"\\Device\\ScsiPort" 00038 00039 #define IOCTL_SCSI_BASE FILE_DEVICE_CONTROLLER 00040 00041 #define IOCTL_SCSI_GET_INQUIRY_DATA \ 00042 CTL_CODE(IOCTL_SCSI_BASE, 0x0403, METHOD_BUFFERED, FILE_ANY_ACCESS) 00043 00044 #define IOCTL_SCSI_GET_CAPABILITIES \ 00045 CTL_CODE(IOCTL_SCSI_BASE, 0x0404, METHOD_BUFFERED, FILE_ANY_ACCESS) 00046 00047 #define IOCTL_SCSI_GET_ADDRESS \ 00048 CTL_CODE(IOCTL_SCSI_BASE, 0x0406, METHOD_BUFFERED, FILE_ANY_ACCESS) 00049 00050 #define IOCTL_SCSI_MINIPORT \ 00051 CTL_CODE(IOCTL_SCSI_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) 00052 00053 #define IOCTL_SCSI_PASS_THROUGH \ 00054 CTL_CODE(IOCTL_SCSI_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) 00055 00056 #define IOCTL_SCSI_PASS_THROUGH_DIRECT \ 00057 CTL_CODE(IOCTL_SCSI_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) 00058 00059 #define IOCTL_SCSI_RESCAN_BUS \ 00060 CTL_CODE(IOCTL_SCSI_BASE, 0x0407, METHOD_BUFFERED, FILE_ANY_ACCESS) 00061 00062 00063 DEFINE_GUID(ScsiRawInterfaceGuid, \ 00064 0x53f56309L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); 00065 00066 DEFINE_GUID(WmiScsiAddressGuid, \ 00067 0x53f5630fL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); 00068 00069 typedef struct _SCSI_PASS_THROUGH { 00070 USHORT Length; 00071 UCHAR ScsiStatus; 00072 UCHAR PathId; 00073 UCHAR TargetId; 00074 UCHAR Lun; 00075 UCHAR CdbLength; 00076 UCHAR SenseInfoLength; 00077 UCHAR DataIn; 00078 ULONG DataTransferLength; 00079 ULONG TimeOutValue; 00080 ULONG_PTR DataBufferOffset; 00081 ULONG SenseInfoOffset; 00082 UCHAR Cdb[16]; 00083 } SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH; 00084 00085 typedef struct _SCSI_PASS_THROUGH_DIRECT { 00086 USHORT Length; 00087 UCHAR ScsiStatus; 00088 UCHAR PathId; 00089 UCHAR TargetId; 00090 UCHAR Lun; 00091 UCHAR CdbLength; 00092 UCHAR SenseInfoLength; 00093 UCHAR DataIn; 00094 ULONG DataTransferLength; 00095 ULONG TimeOutValue; 00096 PVOID DataBuffer; 00097 ULONG SenseInfoOffset; 00098 UCHAR Cdb[16]; 00099 } SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT; 00100 00101 typedef struct _SRB_IO_CONTROL { 00102 ULONG HeaderLength; 00103 UCHAR Signature[8]; 00104 ULONG Timeout; 00105 ULONG ControlCode; 00106 ULONG ReturnCode; 00107 ULONG Length; 00108 } SRB_IO_CONTROL, *PSRB_IO_CONTROL; 00109 00110 typedef struct _SCSI_ADDRESS { 00111 ULONG Length; 00112 UCHAR PortNumber; 00113 UCHAR PathId; 00114 UCHAR TargetId; 00115 UCHAR Lun; 00116 } SCSI_ADDRESS, *PSCSI_ADDRESS; 00117 00118 typedef struct _SCSI_BUS_DATA { 00119 UCHAR NumberOfLogicalUnits; 00120 UCHAR InitiatorBusId; 00121 ULONG InquiryDataOffset; 00122 }SCSI_BUS_DATA, *PSCSI_BUS_DATA; 00123 00124 typedef struct _SCSI_ADAPTER_BUS_INFO { 00125 UCHAR NumberOfBuses; 00126 SCSI_BUS_DATA BusData[1]; 00127 } SCSI_ADAPTER_BUS_INFO, *PSCSI_ADAPTER_BUS_INFO; 00128 00129 typedef struct _IO_SCSI_CAPABILITIES { 00130 ULONG Length; 00131 ULONG MaximumTransferLength; 00132 ULONG MaximumPhysicalPages; 00133 ULONG SupportedAsynchronousEvents; 00134 ULONG AlignmentMask; 00135 BOOLEAN TaggedQueuing; 00136 BOOLEAN AdapterScansDown; 00137 BOOLEAN AdapterUsesPio; 00138 } IO_SCSI_CAPABILITIES, *PIO_SCSI_CAPABILITIES; 00139 00140 typedef struct _SCSI_INQUIRY_DATA { 00141 UCHAR PathId; 00142 UCHAR TargetId; 00143 UCHAR Lun; 00144 BOOLEAN DeviceClaimed; 00145 ULONG InquiryDataLength; 00146 ULONG NextInquiryDataOffset; 00147 UCHAR InquiryData[1]; 00148 } SCSI_INQUIRY_DATA, *PSCSI_INQUIRY_DATA; 00149 00150 #define SCSI_IOCTL_DATA_OUT 0 00151 #define SCSI_IOCTL_DATA_IN 1 00152 #define SCSI_IOCTL_DATA_UNSPECIFIED 2 00153 00154 typedef struct _DUMP_POINTERS { 00155 PADAPTER_OBJECT AdapterObject; 00156 PVOID MappedRegisterBase; 00157 PVOID DumpData; 00158 PVOID CommonBufferVa; 00159 LARGE_INTEGER CommonBufferPa; 00160 ULONG CommonBufferSize; 00161 BOOLEAN AllocateCommonBuffers; 00162 BOOLEAN UseDiskDump; 00163 UCHAR Spare1[2]; 00164 PVOID DeviceObject; 00165 } DUMP_POINTERS, *PDUMP_POINTERS; 00166 00167 #ifdef __cplusplus 00168 } 00169 #endif 00170 00171 #endif /* __NTDDSCSI_H */
Generated on Tue Jul 12 2022 19:59:54 by
1.7.2