EFI_*_PASS_THRU_PROTOCOL

Pass Thru Protocol
- Provides services that allow ATA commands to be sent to ATA Devices attached to an ATA controller.
- Packet-based commands would be sent to ATAPI devices only through
  Extended SCSI Pass Thru Protocol.
- While the ATA_PASS_THRU interface would expose an interface to the underlying ATA devices on
  an ATA controller, EXT_SCSI_PASS_THRU is resopnsible for exposing a packet-based
  command interface for the ATAPI devices on the same ATA controller.

在 UEFI 规范中 Pass Thru Protocol 有三种
 > EFI_ATA_PASS_THRU_PROTOCOL
   Provides information about an ATA controller and the ability to send
   ATA Command Blocks to any ATA device attached to that ATA Controller.

 > EFI_SCSI_PASS_THRU_PROTOCOL
   Provides information about a SCSI channel and the ability to send SCSI
   Request Packets to any SCSI device attached to that SCSI channel.

 > EFI_EXT_SCSI_PASS_THRU_PROTOCOL
   Provides information about a SCSI channel and the ability to send SCSI
   Request Packets to any SCSI device attached to that SCSI channel.


在 UEFI 规范中分别定义了它们的 GUID:
 > gEfiAtaPassThruProtocolGuid =
   { 0x1d3de7f0, 0x807, 0x424f, {0xaa, 0x69, 0x11, 0xa5, 0x4e, 0x19, 0xa4, 0x6f }}

 > gEfiScsiPassThruProtocolGuid =
   { 0xA59E8FCF, 0xBDA0, 0x43BB, { 0x90, 0xB1, 0xD3, 0x73, 0x2E, 0xCA, 0xA8, 0x77 }}

 > gEfiExtScsiPassThruProtocolGuid =
   { 0x143b7632, 0xb81b, 0x4cb7, {0xab, 0xd3, 0xb6, 0x25, 0xa5, 0xb9, 0xbf, 0xfe }}