Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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