22#define EFI_SCSI_OP_LENGTH_SIX 0x6
23#define EFI_SCSI_OP_LENGTH_TEN 0xa
24#define EFI_SCSI_OP_LENGTH_TWELVE 0xc
25#define EFI_SCSI_OP_LENGTH_SIXTEEN 0x10
132 IN OUT VOID *SenseData OPTIONAL,
133 IN OUT UINT8 *SenseDataLength,
134 OUT UINT8 *HostAdapterStatus,
135 OUT UINT8 *TargetStatus
140 UINT8 Cdb[EFI_SCSI_OP_LENGTH_SIX];
142 ASSERT (SenseDataLength !=
NULL);
143 ASSERT (HostAdapterStatus !=
NULL);
144 ASSERT (TargetStatus !=
NULL);
145 ASSERT (ScsiIo !=
NULL);
148 ZeroMem (Cdb, EFI_SCSI_OP_LENGTH_SIX);
150 CommandPacket.
Timeout = Timeout;
156 CommandPacket.
Cdb = Cdb;
160 Cdb[0] = EFI_SCSI_OP_TEST_UNIT_READY;
161 CommandPacket.
CdbLength = (UINT8)EFI_SCSI_OP_LENGTH_SIX;
164 Status = ScsiIo->ExecuteScsiCommand (ScsiIo, &CommandPacket,
NULL);
267 IN OUT VOID *SenseData OPTIONAL,
268 IN OUT UINT8 *SenseDataLength,
269 OUT UINT8 *HostAdapterStatus,
270 OUT UINT8 *TargetStatus,
271 IN OUT VOID *InquiryDataBuffer OPTIONAL,
272 IN OUT UINT32 *InquiryDataLength,
273 IN BOOLEAN EnableVitalProductData,
279 UINT8 Cdb[EFI_SCSI_OP_LENGTH_SIX];
281 ASSERT (SenseDataLength !=
NULL);
282 ASSERT (HostAdapterStatus !=
NULL);
283 ASSERT (TargetStatus !=
NULL);
284 ASSERT (InquiryDataLength !=
NULL);
285 ASSERT (ScsiIo !=
NULL);
288 ZeroMem (Cdb, EFI_SCSI_OP_LENGTH_SIX);
290 CommandPacket.
Timeout = Timeout;
295 CommandPacket.
Cdb = Cdb;
297 Cdb[0] = EFI_SCSI_OP_INQUIRY;
298 if (EnableVitalProductData) {
303 if (*InquiryDataLength > 0xff) {
304 *InquiryDataLength = 0xff;
307 Cdb[4] = (UINT8)(*InquiryDataLength);
308 CommandPacket.
CdbLength = (UINT8)EFI_SCSI_OP_LENGTH_SIX;
311 Status = ScsiIo->ExecuteScsiCommand (ScsiIo, &CommandPacket,
NULL);
413 IN OUT VOID *SenseData OPTIONAL,
414 IN OUT UINT8 *SenseDataLength,
415 OUT UINT8 *HostAdapterStatus,
416 OUT UINT8 *TargetStatus,
417 IN OUT VOID *InquiryDataBuffer OPTIONAL,
418 IN OUT UINT32 *InquiryDataLength,
419 IN BOOLEAN EnableVitalProductData
431 EnableVitalProductData,
530 IN OUT VOID *SenseData OPTIONAL,
531 IN OUT UINT8 *SenseDataLength,
532 OUT UINT8 *HostAdapterStatus,
533 OUT UINT8 *TargetStatus,
534 IN OUT VOID *DataBuffer OPTIONAL,
535 IN OUT UINT32 *DataLength,
536 IN UINT8 DBDField OPTIONAL,
537 IN UINT8 PageControl,
543 UINT8 Cdb[EFI_SCSI_OP_LENGTH_TEN];
545 ASSERT (SenseDataLength !=
NULL);
546 ASSERT (HostAdapterStatus !=
NULL);
547 ASSERT (TargetStatus !=
NULL);
548 ASSERT (DataLength !=
NULL);
549 ASSERT (ScsiIo !=
NULL);
552 ZeroMem (Cdb, EFI_SCSI_OP_LENGTH_TEN);
554 CommandPacket.
Timeout = Timeout;
558 CommandPacket.
Cdb = Cdb;
562 Cdb[0] = EFI_SCSI_OP_MODE_SEN10;
566 Cdb[1] = (UINT8)((DBDField << 3) & 0x08);
570 Cdb[2] = (UINT8)(((PageControl << 6) & 0xc0) | (PageCode & 0x3f));
571 Cdb[7] = (UINT8)(*DataLength >> 8);
572 Cdb[8] = (UINT8)(*DataLength);
574 CommandPacket.
CdbLength = EFI_SCSI_OP_LENGTH_TEN;
578 Status = ScsiIo->ExecuteScsiCommand (ScsiIo, &CommandPacket,
NULL);
625 IN OUT VOID *SenseData OPTIONAL,
626 IN OUT UINT8 *SenseDataLength,
627 OUT UINT8 *HostAdapterStatus,
628 OUT UINT8 *TargetStatus
633 UINT8 Cdb[EFI_SCSI_OP_LENGTH_SIX];
635 ASSERT (SenseDataLength !=
NULL);
636 ASSERT (HostAdapterStatus !=
NULL);
637 ASSERT (TargetStatus !=
NULL);
638 ASSERT (ScsiIo !=
NULL);
641 ZeroMem (Cdb, EFI_SCSI_OP_LENGTH_SIX);
643 CommandPacket.
Timeout = Timeout;
647 CommandPacket.
Cdb = Cdb;
651 Cdb[0] = EFI_SCSI_OP_REQUEST_SENSE;
652 Cdb[4] = (UINT8)(*SenseDataLength);
654 CommandPacket.
CdbLength = (UINT8)EFI_SCSI_OP_LENGTH_SIX;
658 Status = ScsiIo->ExecuteScsiCommand (ScsiIo, &CommandPacket,
NULL);
716 IN OUT VOID *SenseData OPTIONAL,
717 IN OUT UINT8 *SenseDataLength,
718 OUT UINT8 *HostAdapterStatus,
719 OUT UINT8 *TargetStatus,
720 IN OUT VOID *DataBuffer OPTIONAL,
721 IN OUT UINT32 *DataLength,
727 UINT8 Cdb[EFI_SCSI_OP_LENGTH_TEN];
729 ASSERT (SenseDataLength !=
NULL);
730 ASSERT (HostAdapterStatus !=
NULL);
731 ASSERT (TargetStatus !=
NULL);
732 ASSERT (DataLength !=
NULL);
733 ASSERT (ScsiIo !=
NULL);
736 ZeroMem (Cdb, EFI_SCSI_OP_LENGTH_TEN);
738 CommandPacket.
Timeout = Timeout;
742 CommandPacket.
Cdb = Cdb;
746 Cdb[0] = EFI_SCSI_OP_READ_CAPACITY;
756 CommandPacket.
CdbLength = EFI_SCSI_OP_LENGTH_TEN;
760 Status = ScsiIo->ExecuteScsiCommand (ScsiIo, &CommandPacket,
NULL);
819 IN OUT VOID *SenseData OPTIONAL,
820 IN OUT UINT8 *SenseDataLength,
821 OUT UINT8 *HostAdapterStatus,
822 OUT UINT8 *TargetStatus,
823 IN OUT VOID *DataBuffer OPTIONAL,
824 IN OUT UINT32 *DataLength,
832 ASSERT (SenseDataLength !=
NULL);
833 ASSERT (HostAdapterStatus !=
NULL);
834 ASSERT (TargetStatus !=
NULL);
835 ASSERT (DataLength !=
NULL);
836 ASSERT (ScsiIo !=
NULL);
841 CommandPacket.
Timeout = Timeout;
845 CommandPacket.
Cdb = Cdb;
849 Cdb[0] = EFI_SCSI_OP_READ_CAPACITY16;
865 Status = ScsiIo->ExecuteScsiCommand (ScsiIo, &CommandPacket,
NULL);
925 IN OUT VOID *SenseData OPTIONAL,
926 IN OUT UINT8 *SenseDataLength,
927 OUT UINT8 *HostAdapterStatus,
928 OUT UINT8 *TargetStatus,
929 IN OUT VOID *DataBuffer OPTIONAL,
930 IN OUT UINT32 *DataLength,
937 UINT8 Cdb[EFI_SCSI_OP_LENGTH_TEN];
939 ASSERT (SenseDataLength !=
NULL);
940 ASSERT (HostAdapterStatus !=
NULL);
941 ASSERT (TargetStatus !=
NULL);
942 ASSERT (DataLength !=
NULL);
943 ASSERT (ScsiIo !=
NULL);
946 ZeroMem (Cdb, EFI_SCSI_OP_LENGTH_TEN);
948 CommandPacket.
Timeout = Timeout;
952 CommandPacket.
Cdb = Cdb;
956 Cdb[0] = EFI_SCSI_OP_READ10;
960 CommandPacket.
CdbLength = EFI_SCSI_OP_LENGTH_TEN;
964 Status = ScsiIo->ExecuteScsiCommand (ScsiIo, &CommandPacket,
NULL);
1024 IN OUT VOID *SenseData OPTIONAL,
1025 IN OUT UINT8 *SenseDataLength,
1026 OUT UINT8 *HostAdapterStatus,
1027 OUT UINT8 *TargetStatus,
1028 IN OUT VOID *DataBuffer OPTIONAL,
1029 IN OUT UINT32 *DataLength,
1031 IN UINT32 SectorSize
1036 UINT8 Cdb[EFI_SCSI_OP_LENGTH_TEN];
1038 ASSERT (SenseDataLength !=
NULL);
1039 ASSERT (HostAdapterStatus !=
NULL);
1040 ASSERT (TargetStatus !=
NULL);
1041 ASSERT (DataLength !=
NULL);
1042 ASSERT (ScsiIo !=
NULL);
1045 ZeroMem (Cdb, EFI_SCSI_OP_LENGTH_TEN);
1047 CommandPacket.
Timeout = Timeout;
1051 CommandPacket.
Cdb = Cdb;
1055 Cdb[0] = EFI_SCSI_OP_WRITE10;
1060 CommandPacket.
CdbLength = EFI_SCSI_OP_LENGTH_TEN;
1064 Status = ScsiIo->ExecuteScsiCommand (ScsiIo, &CommandPacket,
NULL);
1124 IN OUT VOID *SenseData OPTIONAL,
1125 IN OUT UINT8 *SenseDataLength,
1126 OUT UINT8 *HostAdapterStatus,
1127 OUT UINT8 *TargetStatus,
1128 IN OUT VOID *DataBuffer OPTIONAL,
1129 IN OUT UINT32 *DataLength,
1131 IN UINT32 SectorSize
1136 UINT8 Cdb[EFI_SCSI_OP_LENGTH_SIXTEEN];
1138 ASSERT (SenseDataLength !=
NULL);
1139 ASSERT (HostAdapterStatus !=
NULL);
1140 ASSERT (TargetStatus !=
NULL);
1141 ASSERT (DataLength !=
NULL);
1142 ASSERT (ScsiIo !=
NULL);
1145 ZeroMem (Cdb, EFI_SCSI_OP_LENGTH_SIXTEEN);
1147 CommandPacket.
Timeout = Timeout;
1151 CommandPacket.
Cdb = Cdb;
1155 Cdb[0] = EFI_SCSI_OP_READ16;
1159 CommandPacket.
CdbLength = EFI_SCSI_OP_LENGTH_SIXTEEN;
1163 Status = ScsiIo->ExecuteScsiCommand (ScsiIo, &CommandPacket,
NULL);
1223 IN OUT VOID *SenseData OPTIONAL,
1224 IN OUT UINT8 *SenseDataLength,
1225 OUT UINT8 *HostAdapterStatus,
1226 OUT UINT8 *TargetStatus,
1227 IN OUT VOID *DataBuffer OPTIONAL,
1228 IN OUT UINT32 *DataLength,
1230 IN UINT32 SectorSize
1235 UINT8 Cdb[EFI_SCSI_OP_LENGTH_SIXTEEN];
1237 ASSERT (SenseDataLength !=
NULL);
1238 ASSERT (HostAdapterStatus !=
NULL);
1239 ASSERT (TargetStatus !=
NULL);
1240 ASSERT (DataLength !=
NULL);
1241 ASSERT (ScsiIo !=
NULL);
1244 ZeroMem (Cdb, EFI_SCSI_OP_LENGTH_SIXTEEN);
1246 CommandPacket.
Timeout = Timeout;
1250 CommandPacket.
Cdb = Cdb;
1254 Cdb[0] = EFI_SCSI_OP_WRITE16;
1259 CommandPacket.
CdbLength = EFI_SCSI_OP_LENGTH_SIXTEEN;
1263 Status = ScsiIo->ExecuteScsiCommand (ScsiIo, &CommandPacket,
NULL);
1326 IN OUT VOID *SenseData OPTIONAL,
1327 IN OUT UINT8 *SenseDataLength,
1328 OUT UINT8 *HostAdapterStatus,
1329 OUT UINT8 *TargetStatus,
1330 IN UINT8 SecurityProtocol,
1331 IN UINT16 SecurityProtocolSpecific,
1334 IN OUT VOID *DataBuffer OPTIONAL,
1340 UINT8 Cdb[EFI_SCSI_OP_LENGTH_TWELVE];
1342 ASSERT (SenseDataLength !=
NULL);
1343 ASSERT (HostAdapterStatus !=
NULL);
1344 ASSERT (TargetStatus !=
NULL);
1345 ASSERT (ScsiIo !=
NULL);
1346 ASSERT (TransferLength !=
NULL);
1347 ASSERT (DataLength <= MAX_UINT32);
1350 ZeroMem (Cdb, EFI_SCSI_OP_LENGTH_TWELVE);
1352 CommandPacket.
Timeout = Timeout;
1356 CommandPacket.
Cdb = Cdb;
1360 Cdb[0] = EFI_SCSI_OP_SECURITY_PROTOCOL_IN;
1361 Cdb[1] = SecurityProtocol;
1365 if (DataLength % 512 != 0) {
1366 return EFI_INVALID_PARAMETER;
1375 CommandPacket.
CdbLength = EFI_SCSI_OP_LENGTH_TWELVE;
1379 Status = ScsiIo->ExecuteScsiCommand (ScsiIo, &CommandPacket,
NULL);
1439 IN OUT VOID *SenseData OPTIONAL,
1440 IN OUT UINT8 *SenseDataLength,
1441 OUT UINT8 *HostAdapterStatus,
1442 OUT UINT8 *TargetStatus,
1443 IN UINT8 SecurityProtocol,
1444 IN UINT16 SecurityProtocolSpecific,
1447 IN OUT VOID *DataBuffer OPTIONAL
1452 UINT8 Cdb[EFI_SCSI_OP_LENGTH_TWELVE];
1454 ASSERT (SenseDataLength !=
NULL);
1455 ASSERT (HostAdapterStatus !=
NULL);
1456 ASSERT (TargetStatus !=
NULL);
1457 ASSERT (ScsiIo !=
NULL);
1458 ASSERT (DataLength <= MAX_UINT32);
1461 ZeroMem (Cdb, EFI_SCSI_OP_LENGTH_TWELVE);
1463 CommandPacket.
Timeout = Timeout;
1467 CommandPacket.
Cdb = Cdb;
1471 Cdb[0] = EFI_SCSI_OP_SECURITY_PROTOCOL_OUT;
1472 Cdb[1] = SecurityProtocol;
1476 if (DataLength % 512 != 0) {
1477 return EFI_INVALID_PARAMETER;
1486 CommandPacket.
CdbLength = EFI_SCSI_OP_LENGTH_TWELVE;
1490 Status = ScsiIo->ExecuteScsiCommand (ScsiIo, &CommandPacket,
NULL);
1534 if (CommandPacket->
Cdb !=
NULL) {
1540 gBS->CloseEvent (Event);
1541 gBS->SignalEvent (CallerEvent);
1622 IN OUT VOID *SenseData OPTIONAL,
1623 IN OUT UINT8 *SenseDataLength,
1624 OUT UINT8 *HostAdapterStatus,
1625 OUT UINT8 *TargetStatus,
1626 IN OUT VOID *DataBuffer OPTIONAL,
1627 IN OUT UINT32 *DataLength,
1629 IN UINT32 SectorSize,
1639 if (Event ==
NULL) {
1654 ASSERT (SenseDataLength !=
NULL);
1655 ASSERT (HostAdapterStatus !=
NULL);
1656 ASSERT (TargetStatus !=
NULL);
1657 ASSERT (DataLength !=
NULL);
1658 ASSERT (ScsiIo !=
NULL);
1661 if (Context ==
NULL) {
1662 return EFI_OUT_OF_RESOURCES;
1667 Status = EFI_OUT_OF_RESOURCES;
1677 CommandPacket->
Timeout = Timeout;
1681 CommandPacket->
Cdb = Cdb;
1685 Cdb[0] = EFI_SCSI_OP_READ10;
1689 CommandPacket->
CdbLength = EFI_SCSI_OP_LENGTH_TEN;
1696 Status =
gBS->CreateEvent (
1703 if (EFI_ERROR (Status)) {
1707 Status = ScsiIo->ExecuteScsiCommand (ScsiIo, CommandPacket, SelfEvent);
1708 if (EFI_ERROR (Status)) {
1713 gBS->CloseEvent (SelfEvent);
1720 if (Context !=
NULL) {
1805 IN OUT VOID *SenseData OPTIONAL,
1806 IN OUT UINT8 *SenseDataLength,
1807 OUT UINT8 *HostAdapterStatus,
1808 OUT UINT8 *TargetStatus,
1809 IN OUT VOID *DataBuffer OPTIONAL,
1810 IN OUT UINT32 *DataLength,
1812 IN UINT32 SectorSize,
1822 if (Event ==
NULL) {
1837 ASSERT (SenseDataLength !=
NULL);
1838 ASSERT (HostAdapterStatus !=
NULL);
1839 ASSERT (TargetStatus !=
NULL);
1840 ASSERT (DataLength !=
NULL);
1841 ASSERT (ScsiIo !=
NULL);
1844 if (Context ==
NULL) {
1845 return EFI_OUT_OF_RESOURCES;
1850 Status = EFI_OUT_OF_RESOURCES;
1860 CommandPacket->
Timeout = Timeout;
1864 CommandPacket->
Cdb = Cdb;
1868 Cdb[0] = EFI_SCSI_OP_WRITE10;
1872 CommandPacket->
CdbLength = EFI_SCSI_OP_LENGTH_TEN;
1879 Status =
gBS->CreateEvent (
1886 if (EFI_ERROR (Status)) {
1890 Status = ScsiIo->ExecuteScsiCommand (ScsiIo, CommandPacket, SelfEvent);
1891 if (EFI_ERROR (Status)) {
1896 gBS->CloseEvent (SelfEvent);
1903 if (Context !=
NULL) {
1988 IN OUT VOID *SenseData OPTIONAL,
1989 IN OUT UINT8 *SenseDataLength,
1990 OUT UINT8 *HostAdapterStatus,
1991 OUT UINT8 *TargetStatus,
1992 IN OUT VOID *DataBuffer OPTIONAL,
1993 IN OUT UINT32 *DataLength,
1995 IN UINT32 SectorSize,
2005 if (Event ==
NULL) {
2020 ASSERT (SenseDataLength !=
NULL);
2021 ASSERT (HostAdapterStatus !=
NULL);
2022 ASSERT (TargetStatus !=
NULL);
2023 ASSERT (DataLength !=
NULL);
2024 ASSERT (ScsiIo !=
NULL);
2027 if (Context ==
NULL) {
2028 return EFI_OUT_OF_RESOURCES;
2033 Status = EFI_OUT_OF_RESOURCES;
2043 CommandPacket->
Timeout = Timeout;
2047 CommandPacket->
Cdb = Cdb;
2051 Cdb[0] = EFI_SCSI_OP_READ16;
2055 CommandPacket->
CdbLength = EFI_SCSI_OP_LENGTH_SIXTEEN;
2062 Status =
gBS->CreateEvent (
2069 if (EFI_ERROR (Status)) {
2073 Status = ScsiIo->ExecuteScsiCommand (ScsiIo, CommandPacket, SelfEvent);
2074 if (EFI_ERROR (Status)) {
2079 gBS->CloseEvent (SelfEvent);
2086 if (Context !=
NULL) {
2171 IN OUT VOID *SenseData OPTIONAL,
2172 IN OUT UINT8 *SenseDataLength,
2173 OUT UINT8 *HostAdapterStatus,
2174 OUT UINT8 *TargetStatus,
2175 IN OUT VOID *DataBuffer OPTIONAL,
2176 IN OUT UINT32 *DataLength,
2178 IN UINT32 SectorSize,
2188 if (Event ==
NULL) {
2203 ASSERT (SenseDataLength !=
NULL);
2204 ASSERT (HostAdapterStatus !=
NULL);
2205 ASSERT (TargetStatus !=
NULL);
2206 ASSERT (DataLength !=
NULL);
2207 ASSERT (ScsiIo !=
NULL);
2210 if (Context ==
NULL) {
2211 return EFI_OUT_OF_RESOURCES;
2216 Status = EFI_OUT_OF_RESOURCES;
2226 CommandPacket->
Timeout = Timeout;
2230 CommandPacket->
Cdb = Cdb;
2234 Cdb[0] = EFI_SCSI_OP_WRITE16;
2238 CommandPacket->
CdbLength = EFI_SCSI_OP_LENGTH_SIXTEEN;
2245 Status =
gBS->CreateEvent (
2252 if (EFI_ERROR (Status)) {
2256 Status = ScsiIo->ExecuteScsiCommand (ScsiIo, CommandPacket, SelfEvent);
2257 if (EFI_ERROR (Status)) {
2262 gBS->CloseEvent (SelfEvent);
2269 if (Context !=
NULL) {
UINT16 EFIAPI SwapBytes16(IN UINT16 Value)
UINT32 EFIAPI SwapBytes32(IN UINT32 Value)
UINT32 EFIAPI WriteUnaligned32(OUT UINT32 *Buffer, IN UINT32 Value)
UINT16 EFIAPI WriteUnaligned16(OUT UINT16 *Buffer, IN UINT16 Value)
UINT64 EFIAPI SwapBytes64(IN UINT64 Value)
UINT64 EFIAPI WriteUnaligned64(OUT UINT64 *Buffer, IN UINT64 Value)
VOID *EFIAPI ZeroMem(OUT VOID *Buffer, IN UINTN Length)
VOID *EFIAPI AllocateZeroPool(IN UINTN AllocationSize)
VOID EFIAPI FreePool(IN VOID *Buffer)
#define EFI_SCSI_BLOCK_FUA
Force Unit Access.
EFI_STATUS EFIAPI ScsiWrite10CommandEx(IN EFI_SCSI_IO_PROTOCOL *ScsiIo, IN UINT64 Timeout, IN OUT VOID *SenseData OPTIONAL, IN OUT UINT8 *SenseDataLength, OUT UINT8 *HostAdapterStatus, OUT UINT8 *TargetStatus, IN OUT VOID *DataBuffer OPTIONAL, IN OUT UINT32 *DataLength, IN UINT32 StartLba, IN UINT32 SectorSize, IN EFI_EVENT Event OPTIONAL)
EFI_STATUS EFIAPI ScsiSecurityProtocolInCommand(IN EFI_SCSI_IO_PROTOCOL *ScsiIo, IN UINT64 Timeout, IN OUT VOID *SenseData OPTIONAL, IN OUT UINT8 *SenseDataLength, OUT UINT8 *HostAdapterStatus, OUT UINT8 *TargetStatus, IN UINT8 SecurityProtocol, IN UINT16 SecurityProtocolSpecific, IN BOOLEAN Inc512, IN UINTN DataLength, IN OUT VOID *DataBuffer OPTIONAL, OUT UINTN *TransferLength)
EFI_STATUS EFIAPI ScsiRead10CommandEx(IN EFI_SCSI_IO_PROTOCOL *ScsiIo, IN UINT64 Timeout, IN OUT VOID *SenseData OPTIONAL, IN OUT UINT8 *SenseDataLength, OUT UINT8 *HostAdapterStatus, OUT UINT8 *TargetStatus, IN OUT VOID *DataBuffer OPTIONAL, IN OUT UINT32 *DataLength, IN UINT32 StartLba, IN UINT32 SectorSize, IN EFI_EVENT Event OPTIONAL)
EFI_STATUS EFIAPI ScsiRead10Command(IN EFI_SCSI_IO_PROTOCOL *ScsiIo, IN UINT64 Timeout, IN OUT VOID *SenseData OPTIONAL, IN OUT UINT8 *SenseDataLength, OUT UINT8 *HostAdapterStatus, OUT UINT8 *TargetStatus, IN OUT VOID *DataBuffer OPTIONAL, IN OUT UINT32 *DataLength, IN UINT32 StartLba, IN UINT32 SectorSize)
EFI_STATUS EFIAPI ScsiModeSense10Command(IN EFI_SCSI_IO_PROTOCOL *ScsiIo, IN UINT64 Timeout, IN OUT VOID *SenseData OPTIONAL, IN OUT UINT8 *SenseDataLength, OUT UINT8 *HostAdapterStatus, OUT UINT8 *TargetStatus, IN OUT VOID *DataBuffer OPTIONAL, IN OUT UINT32 *DataLength, IN UINT8 DBDField OPTIONAL, IN UINT8 PageControl, IN UINT8 PageCode)
EFI_STATUS EFIAPI ScsiTestUnitReadyCommand(IN EFI_SCSI_IO_PROTOCOL *ScsiIo, IN UINT64 Timeout, IN OUT VOID *SenseData OPTIONAL, IN OUT UINT8 *SenseDataLength, OUT UINT8 *HostAdapterStatus, OUT UINT8 *TargetStatus)
EFI_STATUS EFIAPI ScsiWrite16Command(IN EFI_SCSI_IO_PROTOCOL *ScsiIo, IN UINT64 Timeout, IN OUT VOID *SenseData OPTIONAL, IN OUT UINT8 *SenseDataLength, OUT UINT8 *HostAdapterStatus, OUT UINT8 *TargetStatus, IN OUT VOID *DataBuffer OPTIONAL, IN OUT UINT32 *DataLength, IN UINT64 StartLba, IN UINT32 SectorSize)
VOID EFIAPI ScsiLibNotify(IN EFI_EVENT Event, IN VOID *Context)
EFI_STATUS EFIAPI ScsiRequestSenseCommand(IN EFI_SCSI_IO_PROTOCOL *ScsiIo, IN UINT64 Timeout, IN OUT VOID *SenseData OPTIONAL, IN OUT UINT8 *SenseDataLength, OUT UINT8 *HostAdapterStatus, OUT UINT8 *TargetStatus)
EFI_STATUS EFIAPI ScsiInquiryCommandEx(IN EFI_SCSI_IO_PROTOCOL *ScsiIo, IN UINT64 Timeout, IN OUT VOID *SenseData OPTIONAL, IN OUT UINT8 *SenseDataLength, OUT UINT8 *HostAdapterStatus, OUT UINT8 *TargetStatus, IN OUT VOID *InquiryDataBuffer OPTIONAL, IN OUT UINT32 *InquiryDataLength, IN BOOLEAN EnableVitalProductData, IN UINT8 PageCode)
EFI_STATUS EFIAPI ScsiWrite16CommandEx(IN EFI_SCSI_IO_PROTOCOL *ScsiIo, IN UINT64 Timeout, IN OUT VOID *SenseData OPTIONAL, IN OUT UINT8 *SenseDataLength, OUT UINT8 *HostAdapterStatus, OUT UINT8 *TargetStatus, IN OUT VOID *DataBuffer OPTIONAL, IN OUT UINT32 *DataLength, IN UINT64 StartLba, IN UINT32 SectorSize, IN EFI_EVENT Event OPTIONAL)
EFI_STATUS EFIAPI ScsiSecurityProtocolOutCommand(IN EFI_SCSI_IO_PROTOCOL *ScsiIo, IN UINT64 Timeout, IN OUT VOID *SenseData OPTIONAL, IN OUT UINT8 *SenseDataLength, OUT UINT8 *HostAdapterStatus, OUT UINT8 *TargetStatus, IN UINT8 SecurityProtocol, IN UINT16 SecurityProtocolSpecific, IN BOOLEAN Inc512, IN UINTN DataLength, IN OUT VOID *DataBuffer OPTIONAL)
EFI_STATUS EFIAPI ScsiRead16CommandEx(IN EFI_SCSI_IO_PROTOCOL *ScsiIo, IN UINT64 Timeout, IN OUT VOID *SenseData OPTIONAL, IN OUT UINT8 *SenseDataLength, OUT UINT8 *HostAdapterStatus, OUT UINT8 *TargetStatus, IN OUT VOID *DataBuffer OPTIONAL, IN OUT UINT32 *DataLength, IN UINT64 StartLba, IN UINT32 SectorSize, IN EFI_EVENT Event OPTIONAL)
EFI_STATUS EFIAPI ScsiInquiryCommand(IN EFI_SCSI_IO_PROTOCOL *ScsiIo, IN UINT64 Timeout, IN OUT VOID *SenseData OPTIONAL, IN OUT UINT8 *SenseDataLength, OUT UINT8 *HostAdapterStatus, OUT UINT8 *TargetStatus, IN OUT VOID *InquiryDataBuffer OPTIONAL, IN OUT UINT32 *InquiryDataLength, IN BOOLEAN EnableVitalProductData)
EFI_STATUS EFIAPI ScsiReadCapacity16Command(IN EFI_SCSI_IO_PROTOCOL *ScsiIo, IN UINT64 Timeout, IN OUT VOID *SenseData OPTIONAL, IN OUT UINT8 *SenseDataLength, OUT UINT8 *HostAdapterStatus, OUT UINT8 *TargetStatus, IN OUT VOID *DataBuffer OPTIONAL, IN OUT UINT32 *DataLength, IN BOOLEAN Pmi)
EFI_STATUS EFIAPI ScsiRead16Command(IN EFI_SCSI_IO_PROTOCOL *ScsiIo, IN UINT64 Timeout, IN OUT VOID *SenseData OPTIONAL, IN OUT UINT8 *SenseDataLength, OUT UINT8 *HostAdapterStatus, OUT UINT8 *TargetStatus, IN OUT VOID *DataBuffer OPTIONAL, IN OUT UINT32 *DataLength, IN UINT64 StartLba, IN UINT32 SectorSize)
EFI_STATUS EFIAPI ScsiWrite10Command(IN EFI_SCSI_IO_PROTOCOL *ScsiIo, IN UINT64 Timeout, IN OUT VOID *SenseData OPTIONAL, IN OUT UINT8 *SenseDataLength, OUT UINT8 *HostAdapterStatus, OUT UINT8 *TargetStatus, IN OUT VOID *DataBuffer OPTIONAL, IN OUT UINT32 *DataLength, IN UINT32 StartLba, IN UINT32 SectorSize)
EFI_STATUS EFIAPI ScsiReadCapacityCommand(IN EFI_SCSI_IO_PROTOCOL *ScsiIo, IN UINT64 Timeout, IN OUT VOID *SenseData OPTIONAL, IN OUT UINT8 *SenseDataLength, OUT UINT8 *HostAdapterStatus, OUT UINT8 *TargetStatus, IN OUT VOID *DataBuffer OPTIONAL, IN OUT UINT32 *DataLength, IN BOOLEAN Pmi)
EFI_SCSI_IO_SCSI_REQUEST_PACKET CommandPacket
UINT8 * HostAdapterStatus