#include <Protocol/DevicePath.h>\r
#include <Protocol/DriverBinding.h>\r
#include <Protocol/DiskIo.h>\r
+#include <Protocol/DiskIo2.h>\r
#include <Library/DebugLib.h>\r
#include <Library/UefiDriverEntryPoint.h>\r
#include <Library/BaseLib.h>\r
EFI_BLOCK_IO_MEDIA Media2;//For BlockIO2\r
\r
EFI_DISK_IO_PROTOCOL *DiskIo;\r
+ EFI_DISK_IO2_PROTOCOL *DiskIo2;\r
EFI_BLOCK_IO_PROTOCOL *ParentBlockIo;\r
EFI_BLOCK_IO2_PROTOCOL *ParentBlockIo2;\r
UINT64 Start;\r
\r
} PARTITION_PRIVATE_DATA;\r
\r
+typedef struct {\r
+ EFI_DISK_IO2_TOKEN DiskIo2Token;\r
+ EFI_BLOCK_IO2_TOKEN *BlockIo2Token;\r
+} PARTITION_ACCESS_TASK;\r
+\r
#define PARTITION_DEVICE_FROM_BLOCK_IO_THIS(a) CR (a, PARTITION_PRIVATE_DATA, BlockIo, PARTITION_PRIVATE_DATA_SIGNATURE)\r
#define PARTITION_DEVICE_FROM_BLOCK_IO2_THIS(a) CR (a, PARTITION_PRIVATE_DATA, BlockIo2, PARTITION_PRIVATE_DATA_SIGNATURE)\r
\r
@param[in] This Protocol instance pointer.\r
@param[in] ParentHandle Parent Handle for new child.\r
@param[in] ParentDiskIo Parent DiskIo interface.\r
+ @param[in] ParentDiskIo2 Parent DiskIo2 interface.\r
@param[in] ParentBlockIo Parent BlockIo interface.\r
@param[in] ParentBlockIo2 Parent BlockIo2 interface.\r
@param[in] ParentDevicePath Parent Device Path.\r
IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
IN EFI_HANDLE ParentHandle,\r
IN EFI_DISK_IO_PROTOCOL *ParentDiskIo,\r
+ IN EFI_DISK_IO2_PROTOCOL *ParentDiskIo2,\r
IN EFI_BLOCK_IO_PROTOCOL *ParentBlockIo,\r
IN EFI_BLOCK_IO2_PROTOCOL *ParentBlockIo2,\r
IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,\r
@param[in] This Calling context.\r
@param[in] Handle Parent Handle.\r
@param[in] DiskIo Parent DiskIo interface.\r
+ @param[in] DiskIo2 Parent DiskIo2 interface.\r
@param[in] BlockIo Parent BlockIo interface.\r
@param[in] BlockIo2 Parent BlockIo2 interface.\r
@param[in] DevicePath Parent Device Path.\r
IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
IN EFI_HANDLE Handle,\r
IN EFI_DISK_IO_PROTOCOL *DiskIo,\r
+ IN EFI_DISK_IO2_PROTOCOL *DiskIo2,\r
IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
IN EFI_BLOCK_IO2_PROTOCOL *BlockIo2,\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
@param[in] This Calling context.\r
@param[in] Handle Parent Handle.\r
@param[in] DiskIo Parent DiskIo interface.\r
+ @param[in] DiskIo2 Parent DiskIo2 interface.\r
@param[in] BlockIo Parent BlockIo interface.\r
@param[in] BlockIo2 Parent BlockIo2 interface.\r
@param[in] DevicePath Parent Device Path\r
IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
IN EFI_HANDLE Handle,\r
IN EFI_DISK_IO_PROTOCOL *DiskIo,\r
+ IN EFI_DISK_IO2_PROTOCOL *DiskIo2,\r
IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
IN EFI_BLOCK_IO2_PROTOCOL *BlockIo2,\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
@param[in] This Calling context.\r
@param[in] Handle Parent Handle.\r
@param[in] DiskIo Parent DiskIo interface.\r
+ @param[in] DiskIo2 Parent DiskIo2 interface.\r
@param[in] BlockIo Parent BlockIo interface.\r
@param[in] BlockIo2 Parent BlockIo2 interface.\r
@param[in] DevicePath Parent Device Path.\r
IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
IN EFI_HANDLE Handle,\r
IN EFI_DISK_IO_PROTOCOL *DiskIo,\r
+ IN EFI_DISK_IO2_PROTOCOL *DiskIo2,\r
IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
IN EFI_BLOCK_IO2_PROTOCOL *BlockIo2,\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
IN EFI_HANDLE Handle,\r
IN EFI_DISK_IO_PROTOCOL *DiskIo,\r
+ IN EFI_DISK_IO2_PROTOCOL *DiskIo2,\r
IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
IN EFI_BLOCK_IO2_PROTOCOL *BlockIo2,\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r