ReactOS 0.4.16-dev-2633-g8dc9e50
scsiex.h File Reference
#include <pshpack1.h>
#include <poppack.h>
Include dependency graph for scsiex.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

union  _SCSI_SENSE_CODE
 
struct  _SCSI_SENSE_KEY_SPECIFIC_FIELD_POINTER
 
struct  _MODE_CACHING_PAGE_SPC5
 
struct  _MODE_CONTROL_EXTENSION_PAGE
 

Macros

#define SCSI_ADSENSE_ADDRESS_MARK_NOT_FOUND_FOR_DATA_FIELD   0x13
 

Typedefs

typedef union _SCSI_SENSE_CODE SCSI_SENSE_CODE
 
typedef union _SCSI_SENSE_CODEPSCSI_SENSE_CODE
 
typedef struct _SCSI_SENSE_KEY_SPECIFIC_FIELD_POINTER SCSI_SENSE_KEY_SPECIFIC_FIELD_POINTER
 
typedef struct _SCSI_SENSE_KEY_SPECIFIC_FIELD_POINTERPSCSI_SENSE_KEY_SPECIFIC_FIELD_POINTER
 
typedef struct _MODE_CACHING_PAGE_SPC5 MODE_CACHING_PAGE_SPC5
 
typedef struct _MODE_CACHING_PAGE_SPC5PMODE_CACHING_PAGE_SPC5
 
typedef struct _MODE_CONTROL_EXTENSION_PAGE MODE_CONTROL_EXTENSION_PAGE
 
typedef struct _MODE_CONTROL_EXTENSION_PAGEPMODE_CONTROL_EXTENSION_PAGE
 

Functions

 C_ASSERT (sizeof(SCSI_SENSE_KEY_SPECIFIC_FIELD_POINTER)==3)
 
 C_ASSERT (sizeof(MODE_CACHING_PAGE_SPC5)==20)
 
 C_ASSERT (sizeof(MODE_CONTROL_EXTENSION_PAGE)==32)
 
 C_ASSERT (sizeof(MODE_INFO_EXCEPTIONS)==12)
 
 C_ASSERT (sizeof(MODE_CONTROL_PAGE)==12)
 
 C_ASSERT (sizeof(MODE_READ_WRITE_RECOVERY_PAGE)==12)
 
 C_ASSERT (sizeof(POWER_CONDITION_PAGE)==12)
 
 C_ASSERT (sizeof(VPD_ATA_INFORMATION_PAGE)==572)
 
 C_ASSERT (sizeof(VPD_BLOCK_LIMITS_PAGE)==0x3c+4)
 
 C_ASSERT (sizeof(VPD_BLOCK_DEVICE_CHARACTERISTICS_PAGE)==0x3c+4)
 
FORCEINLINE UCHAR CdbGetAllocationLength6 (_In_ PCDB Cdb)
 
FORCEINLINE USHORT CdbGetAllocationLength10 (_In_ PCDB Cdb)
 
FORCEINLINE ULONG CdbGetAllocationLength16 (_In_ PCDB Cdb)
 
FORCEINLINE USHORT CdbGetTransferLength10 (_In_ PCDB Cdb)
 
FORCEINLINE ULONG CdbGetTransferLength12 (_In_ PCDB Cdb)
 
FORCEINLINE ULONG CdbGetTransferLength16 (_In_ PCDB Cdb)
 
FORCEINLINE ULONG CdbGetLogicalBlockAddress6 (_In_ PCDB Cdb)
 
FORCEINLINE ULONG CdbGetLogicalBlockAddress10 (_In_ PCDB Cdb)
 
FORCEINLINE ULONG CdbGetLogicalBlockAddress12 (_In_ PCDB Cdb)
 
FORCEINLINE ULONG64 CdbGetLogicalBlockAddress16 (_In_ PCDB Cdb)
 

Macro Definition Documentation

◆ SCSI_ADSENSE_ADDRESS_MARK_NOT_FOUND_FOR_DATA_FIELD

#define SCSI_ADSENSE_ADDRESS_MARK_NOT_FOUND_FOR_DATA_FIELD   0x13

Definition at line 89 of file scsiex.h.

Typedef Documentation

◆ MODE_CACHING_PAGE_SPC5

◆ MODE_CONTROL_EXTENSION_PAGE

◆ PMODE_CACHING_PAGE_SPC5

◆ PMODE_CONTROL_EXTENSION_PAGE

◆ PSCSI_SENSE_CODE

◆ PSCSI_SENSE_KEY_SPECIFIC_FIELD_POINTER

◆ SCSI_SENSE_CODE

◆ SCSI_SENSE_KEY_SPECIFIC_FIELD_POINTER

Function Documentation

◆ C_ASSERT() [1/10]

C_ASSERT ( sizeof(MODE_CACHING_PAGE_SPC5 = =20)

◆ C_ASSERT() [2/10]

C_ASSERT ( sizeof(MODE_CONTROL_EXTENSION_PAGE = =32)

◆ C_ASSERT() [3/10]

C_ASSERT ( sizeof(MODE_CONTROL_PAGE = =12)

◆ C_ASSERT() [4/10]

C_ASSERT ( sizeof(MODE_INFO_EXCEPTIONS = =12)

◆ C_ASSERT() [5/10]

C_ASSERT ( sizeof(MODE_READ_WRITE_RECOVERY_PAGE = =12)

◆ C_ASSERT() [6/10]

C_ASSERT ( sizeof(POWER_CONDITION_PAGE = =12)

◆ C_ASSERT() [7/10]

◆ C_ASSERT() [8/10]

C_ASSERT ( sizeof(VPD_ATA_INFORMATION_PAGE = =572)

◆ C_ASSERT() [9/10]

◆ C_ASSERT() [10/10]

C_ASSERT ( sizeof(VPD_BLOCK_LIMITS_PAGE = =0x3c+4)

◆ CdbGetAllocationLength10()

FORCEINLINE USHORT CdbGetAllocationLength10 ( _In_ PCDB  Cdb)

Definition at line 110 of file scsiex.h.

112{
113 return (Cdb->CDB10.TransferBlocksMsb << 8) |
114 (Cdb->CDB10.TransferBlocksLsb << 0);
115}
_In_opt_ WDFREQUEST _In_ ULONG _In_ BOOLEAN _In_ PCDB Cdb
Definition: scratch.h:159
struct _CDB::_CDB10 CDB10

◆ CdbGetAllocationLength16()

FORCEINLINE ULONG CdbGetAllocationLength16 ( _In_ PCDB  Cdb)

Definition at line 119 of file scsiex.h.

121{
122 return (Cdb->CDB16.TransferLength[0] << 24) |
123 (Cdb->CDB16.TransferLength[1] << 16) |
124 (Cdb->CDB16.TransferLength[2] << 8) |
125 (Cdb->CDB16.TransferLength[3] << 0);
126}
struct _CDB::_CDB16 CDB16

Referenced by AtaReqCompleteReadCapacity(), and AtaReqScsiReadCapacity().

◆ CdbGetAllocationLength6()

FORCEINLINE UCHAR CdbGetAllocationLength6 ( _In_ PCDB  Cdb)

Definition at line 102 of file scsiex.h.

104{
105 return Cdb->CDB6GENERIC.CommandUniqueBytes[2];
106}
struct _CDB::_CDB6GENERIC CDB6GENERIC

◆ CdbGetLogicalBlockAddress10()

FORCEINLINE ULONG CdbGetLogicalBlockAddress10 ( _In_ PCDB  Cdb)

Definition at line 174 of file scsiex.h.

176{
177 /* Bytes 2:5 */
178 return (Cdb->CDB10.LogicalBlockByte0 << 24) |
179 (Cdb->CDB10.LogicalBlockByte1 << 16) |
180 (Cdb->CDB10.LogicalBlockByte2 << 8) |
181 (Cdb->CDB10.LogicalBlockByte3 << 0);
182}

Referenced by AtaReqScsiReadWrite(), and AtaReqScsiVerify().

◆ CdbGetLogicalBlockAddress12()

FORCEINLINE ULONG CdbGetLogicalBlockAddress12 ( _In_ PCDB  Cdb)

Definition at line 186 of file scsiex.h.

188{
189 /* Bytes 2:5 */
190 return (Cdb->CDB12.LogicalBlock[0] << 24) |
191 (Cdb->CDB12.LogicalBlock[1] << 16) |
192 (Cdb->CDB12.LogicalBlock[2] << 8) |
193 (Cdb->CDB12.LogicalBlock[3] << 0);
194}
struct _CDB::_CDB12 CDB12

Referenced by AtaReqScsiReadWrite(), and AtaReqScsiVerify().

◆ CdbGetLogicalBlockAddress16()

FORCEINLINE ULONG64 CdbGetLogicalBlockAddress16 ( _In_ PCDB  Cdb)

Definition at line 198 of file scsiex.h.

200{
201 /* Bytes 2:9 */
202 return ((ULONG64)Cdb->CDB16.LogicalBlock[0] << 56) |
203 ((ULONG64)Cdb->CDB16.LogicalBlock[1] << 48) |
204 ((ULONG64)Cdb->CDB16.LogicalBlock[2] << 40) |
205 ((ULONG64)Cdb->CDB16.LogicalBlock[3] << 32) |
206 ((ULONG64)Cdb->CDB16.LogicalBlock[4] << 24) |
207 ((ULONG64)Cdb->CDB16.LogicalBlock[5] << 16) |
208 ((ULONG64)Cdb->CDB16.LogicalBlock[6] << 8) |
209 ((ULONG64)Cdb->CDB16.LogicalBlock[7] << 0);
210}
unsigned __int64 ULONG64
Definition: imports.h:198

Referenced by AtaReqScsiReadWrite(), and AtaReqScsiVerify().

◆ CdbGetLogicalBlockAddress6()

FORCEINLINE ULONG CdbGetLogicalBlockAddress6 ( _In_ PCDB  Cdb)

Definition at line 164 of file scsiex.h.

166{
167 /* Bytes 2:3 */
168 return (Cdb->CDB6READWRITE.LogicalBlockMsb0 << 8) |
169 (Cdb->CDB6READWRITE.LogicalBlockLsb << 0);
170}
struct _CDB::_CDB6READWRITE CDB6READWRITE

Referenced by AtaReqScsiReadWrite().

◆ CdbGetTransferLength10()

FORCEINLINE USHORT CdbGetTransferLength10 ( _In_ PCDB  Cdb)

Definition at line 130 of file scsiex.h.

132{
133 /* Bytes 7:8 */
134 return (Cdb->CDB10.TransferBlocksMsb << 8) |
135 (Cdb->CDB10.TransferBlocksLsb << 0);
136}

Referenced by AtaReqScsiVerify().

◆ CdbGetTransferLength12()

FORCEINLINE ULONG CdbGetTransferLength12 ( _In_ PCDB  Cdb)

Definition at line 140 of file scsiex.h.

142{
143 /* Bytes 6:9 */
144 return (Cdb->CDB12.TransferLength[0] << 24) |
145 (Cdb->CDB12.TransferLength[1] << 16) |
146 (Cdb->CDB12.TransferLength[2] << 8) |
147 (Cdb->CDB12.TransferLength[3] << 0);
148}

Referenced by AtaReqScsiVerify().

◆ CdbGetTransferLength16()

FORCEINLINE ULONG CdbGetTransferLength16 ( _In_ PCDB  Cdb)

Definition at line 152 of file scsiex.h.

154{
155 /* Bytes 10:13 */
156 return (Cdb->CDB16.TransferLength[0] << 24) |
157 (Cdb->CDB16.TransferLength[1] << 16) |
158 (Cdb->CDB16.TransferLength[2] << 8) |
159 (Cdb->CDB16.TransferLength[3] << 0);
160}

Referenced by AtaReqScsiVerify().