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.
scsiscan.h
00001 /* 00002 * scsiscan.h 00003 * 00004 * SCSI scanner driver 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 __SCSISCAN_H 00024 #define __SCSISCAN_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 IOCTL_SCSISCAN_CMD \ 00037 CTL_CODE(FILE_DEVICE_SCANNER, SCSISCAN_CMD_CODE, METHOD_OUT_DIRECT, FILE_ANY_ACCESS) 00038 00039 #define IOCTL_SCSISCAN_LOCKDEVICE \ 00040 CTL_CODE(FILE_DEVICE_SCANNER, SCSISCAN_LOCKDEVICE, METHOD_OUT_DIRECT, FILE_ANY_ACCESS) 00041 00042 #define IOCTL_SCSISCAN_SET_TIMEOUT \ 00043 CTL_CODE(FILE_DEVICE_SCANNER, SCSISCAN_SET_TIMEOUT, METHOD_BUFFERED, FILE_ANY_ACCESS) 00044 00045 #define IOCTL_SCSISCAN_GET_INFO \ 00046 CTL_CODE(FILE_DEVICE_SCANNER, SCSISCAN_GET_INFO, METHOD_OUT_DIRECT, FILE_ANY_ACCESS) 00047 00048 #define IOCTL_SCSISCAN_UNLOCKDEVICE \ 00049 CTL_CODE(FILE_DEVICE_SCANNER, SCSISCAN_UNLOCKDEVICE, METHOD_OUT_DIRECT, FILE_ANY_ACCESS) 00050 00051 00052 /* SCSISCAN_CMD.SrbFlags constants */ 00053 #define SRB_FLAGS_DISABLE_SYNCH_TRANSFER 0x00000008 00054 #define SRB_FLAGS_DISABLE_AUTOSENSE 0x00000020 00055 #define SRB_FLAGS_DATA_IN 0x00000040 00056 #define SRB_FLAGS_DATA_OUT 0x00000080 00057 #define SRB_FLAGS_NO_DATA_TRANSFER 0x00000000 00058 00059 /* SCSISCAN_CMD.pSrbStatus constants */ 00060 #define SRB_STATUS_PENDING 0x00 00061 #define SRB_STATUS_SUCCESS 0x01 00062 #define SRB_STATUS_ABORTED 0x02 00063 #define SRB_STATUS_ABORT_FAILED 0x03 00064 #define SRB_STATUS_ERROR 0x04 00065 #define SRB_STATUS_BUSY 0x05 00066 #define SRB_STATUS_INVALID_REQUEST 0x06 00067 #define SRB_STATUS_INVALID_PATH_ID 0x07 00068 #define SRB_STATUS_NO_DEVICE 0x08 00069 #define SRB_STATUS_TIMEOUT 0x09 00070 #define SRB_STATUS_SELECTION_TIMEOUT 0x0A 00071 #define SRB_STATUS_COMMAND_TIMEOUT 0x0B 00072 #define SRB_STATUS_MESSAGE_REJECTED 0x0D 00073 #define SRB_STATUS_BUS_RESET 0x0E 00074 #define SRB_STATUS_PARITY_ERROR 0x0F 00075 #define SRB_STATUS_REQUEST_SENSE_FAILED 0x10 00076 #define SRB_STATUS_NO_HBA 0x11 00077 #define SRB_STATUS_DATA_OVERRUN 0x12 00078 #define SRB_STATUS_UNEXPECTED_BUS_FREE 0x13 00079 #define SRB_STATUS_PHASE_SEQUENCE_FAILURE 0x14 00080 #define SRB_STATUS_BAD_SRB_BLOCK_LENGTH 0x15 00081 #define SRB_STATUS_REQUEST_FLUSHED 0x16 00082 #define SRB_STATUS_INVALID_LUN 0x20 00083 #define SRB_STATUS_INVALID_TARGET_ID 0x21 00084 #define SRB_STATUS_BAD_FUNCTION 0x22 00085 #define SRB_STATUS_ERROR_RECOVERY 0x23 00086 #define SRB_STATUS_QUEUE_FROZEN 0x40 00087 #define SRB_STATUS_AUTOSENSE_VALID 0x80 00088 00089 #define SRB_STATUS(Status) (Status & ~(SRB_STATUS_AUTOSENSE_VALID | SRB_STATUS_QUEUE_FROZEN)) 00090 00091 typedef struct _SCSISCAN_CMD { 00092 ULONG Reserved1; 00093 ULONG Size; 00094 ULONG SrbFlags; 00095 UCHAR CdbLength; 00096 UCHAR SenseLength; 00097 UCHAR Reserved2; 00098 UCHAR Reserved3; 00099 ULONG TransferLength; 00100 UCHAR Cdb[16]; 00101 PUCHAR pSrbStatus; 00102 PUCHAR pSenseBuffer; 00103 } SCSISCAN_CMD, *PSCSISCAN_CMD; 00104 00105 #define MAX_STRING 128 00106 00107 /* SCSISCAN_INFO.Flags constants */ 00108 #define SCSISCAN_RESERVED 0x000 00109 #define SCSISCAN_CMD_CODE 0x004 00110 #define SCSISCAN_LOCKDEVICE 0x005 00111 #define SCSISCAN_UNLOCKDEVICE 0x006 00112 #define SCSISCAN_SET_TIMEOUT 0x007 00113 #define SCSISCAN_GET_INFO 0x008 00114 00115 typedef struct _SCSISCAN_INFO { 00116 ULONG Size; 00117 ULONG Flags; 00118 UCHAR PortNumber; 00119 UCHAR PathId; 00120 UCHAR TargetId; 00121 UCHAR Lun; 00122 UCHAR AdapterName[MAX_STRING]; 00123 ULONG Reserved; 00124 } SCSISCAN_INFO, *PSCSISCAN_INFO; 00125 00126 #ifdef __cplusplus 00127 } 00128 #endif 00129 00130 #endif /* __SCSISCAN_H */
Generated on Tue Jul 12 2022 19:59:55 by
1.7.2