17#include <Protocol/BlockIo.h>
18#include <Protocol/BlockIo2.h>
20#include <Protocol/ComponentName.h>
21#include <Protocol/DevicePath.h>
22#include <Protocol/DriverBinding.h>
23#include <Protocol/DiskIo.h>
24#include <Protocol/DiskIo2.h>
25#include <Protocol/PartitionInfo.h>
27#include <Library/DebugLib.h>
28#include <Library/UefiDriverEntryPoint.h>
29#include <Library/BaseLib.h>
30#include <Library/UefiLib.h>
31#include <Library/BaseMemoryLib.h>
32#include <Library/MemoryAllocationLib.h>
33#include <Library/UefiBootServicesTableLib.h>
34#include <Library/DevicePathLib.h>
37#include <IndustryStandard/Mbr.h>
38#include <IndustryStandard/ElTorito.h>
39#include <IndustryStandard/Udf.h>
44#define PARTITION_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('P', 'a', 'r', 't')
75#define PARTITION_DEVICE_FROM_BLOCK_IO_THIS(a) CR (a, PARTITION_PRIVATE_DATA, BlockIo, PARTITION_PRIVATE_DATA_SIGNATURE)
76#define PARTITION_DEVICE_FROM_BLOCK_IO2_THIS(a) CR (a, PARTITION_PRIVATE_DATA, BlockIo2, PARTITION_PRIVATE_DATA_SIGNATURE)
88#define UNPACK_INT32(a) (INT32)( (((UINT8 *) a)[0] << 0) | \
89 (((UINT8 *) a)[1] << 8) | \
90 (((UINT8 *) a)[2] << 16) | \
91 (((UINT8 *) a)[3] << 24) )
96#define UNPACK_UINT32(a) (UINT32)( (((UINT8 *) a)[0] << 0) | \
97 (((UINT8 *) a)[1] << 8) | \
98 (((UINT8 *) a)[2] << 16) | \
99 (((UINT8 *) a)[3] << 24) )
131 IN EFI_DRIVER_BINDING_PROTOCOL *This,
132 IN EFI_HANDLE ControllerHandle,
133 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
154 IN EFI_DRIVER_BINDING_PROTOCOL *This,
155 IN EFI_HANDLE ControllerHandle,
156 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
176 IN EFI_DRIVER_BINDING_PROTOCOL *This,
177 IN EFI_HANDLE ControllerHandle,
178 IN UINTN NumberOfChildren,
179 IN EFI_HANDLE *ChildHandleBuffer
228 IN EFI_COMPONENT_NAME_PROTOCOL *This,
230 OUT CHAR16 **DriverName
304 IN EFI_COMPONENT_NAME_PROTOCOL *This,
305 IN EFI_HANDLE ControllerHandle,
306 IN EFI_HANDLE ChildHandle OPTIONAL,
308 OUT CHAR16 **ControllerName
336 IN EFI_DRIVER_BINDING_PROTOCOL *This,
337 IN EFI_HANDLE ParentHandle,
338 IN EFI_DISK_IO_PROTOCOL *ParentDiskIo,
339 IN EFI_DISK_IO2_PROTOCOL *ParentDiskIo2,
340 IN EFI_BLOCK_IO_PROTOCOL *ParentBlockIo,
341 IN EFI_BLOCK_IO2_PROTOCOL *ParentBlockIo2,
342 IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,
343 IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,
344 IN EFI_PARTITION_INFO_PROTOCOL *PartitionInfo,
349 IN EFI_GUID *TypeGuid
363 IN EFI_HANDLE ControllerHandle
385 IN EFI_DRIVER_BINDING_PROTOCOL *This,
387 IN EFI_DISK_IO_PROTOCOL *DiskIo,
388 IN EFI_DISK_IO2_PROTOCOL *DiskIo2,
389 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,
390 IN EFI_BLOCK_IO2_PROTOCOL *BlockIo2,
391 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
413 IN EFI_DRIVER_BINDING_PROTOCOL *This,
415 IN EFI_DISK_IO_PROTOCOL *DiskIo,
416 IN EFI_DISK_IO2_PROTOCOL *DiskIo2,
417 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,
418 IN EFI_BLOCK_IO2_PROTOCOL *BlockIo2,
419 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
441 IN EFI_DRIVER_BINDING_PROTOCOL *This,
443 IN EFI_DISK_IO_PROTOCOL *DiskIo,
444 IN EFI_DISK_IO2_PROTOCOL *DiskIo2,
445 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,
446 IN EFI_BLOCK_IO2_PROTOCOL *BlockIo2,
447 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
468 IN EFI_DRIVER_BINDING_PROTOCOL *This,
470 IN EFI_DISK_IO_PROTOCOL *DiskIo,
471 IN EFI_DISK_IO2_PROTOCOL *DiskIo2,
472 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,
473 IN EFI_BLOCK_IO2_PROTOCOL *BlockIo2,
474 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
496 IN EFI_DRIVER_BINDING_PROTOCOL *This,
498 IN EFI_DISK_IO_PROTOCOL *DiskIo,
499 IN EFI_DISK_IO2_PROTOCOL *DiskIo2,
500 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,
501 IN EFI_BLOCK_IO2_PROTOCOL *BlockIo2,
502 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
508 IN EFI_DRIVER_BINDING_PROTOCOL *This,
510 IN EFI_DISK_IO_PROTOCOL *DiskIo,
511 IN EFI_DISK_IO2_PROTOCOL *DiskIo2,
512 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,
513 IN EFI_BLOCK_IO2_PROTOCOL *BlockIo2,
514 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
EFI_DEVICE_PATH_PROTOCOL End
APPLE_EVENT_HANDLE Handle
EFI_COMPONENT_NAME_PROTOCOL gPartitionComponentName
EFI_STATUS PartitionInstallAppleChildHandles(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Handle, IN EFI_DISK_IO_PROTOCOL *DiskIo, IN EFI_DISK_IO2_PROTOCOL *DiskIo2, IN EFI_BLOCK_IO_PROTOCOL *BlockIo, IN EFI_BLOCK_IO2_PROTOCOL *BlockIo2, IN EFI_DEVICE_PATH_PROTOCOL *DevicePath)
EFI_STATUS EFIAPI PartitionDriverBindingStop(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer)
EFI_STATUS EFIAPI PartitionComponentNameGetDriverName(IN EFI_COMPONENT_NAME_PROTOCOL *This, IN CHAR8 *Language, OUT CHAR16 **DriverName)
EFI_COMPONENT_NAME2_PROTOCOL gPartitionComponentName2
EFI_DRIVER_BINDING_PROTOCOL gPartitionDriverBinding
EFI_STATUS EFIAPI PartitionDriverBindingSupported(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath)
BOOLEAN HasChildren(IN EFI_HANDLE ControllerHandle)
EFI_STATUS EFIAPI PartitionDriverBindingStart(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath)
EFI_STATUS(* PARTITION_DETECT_ROUTINE)(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Handle, IN EFI_DISK_IO_PROTOCOL *DiskIo, IN EFI_DISK_IO2_PROTOCOL *DiskIo2, IN EFI_BLOCK_IO_PROTOCOL *BlockIo, IN EFI_BLOCK_IO2_PROTOCOL *BlockIo2, IN EFI_DEVICE_PATH_PROTOCOL *DevicePath)
EFI_STATUS PartitionInstallChildHandle(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ParentHandle, IN EFI_DISK_IO_PROTOCOL *ParentDiskIo, IN EFI_DISK_IO2_PROTOCOL *ParentDiskIo2, IN EFI_BLOCK_IO_PROTOCOL *ParentBlockIo, IN EFI_BLOCK_IO2_PROTOCOL *ParentBlockIo2, IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath, IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode, IN EFI_PARTITION_INFO_PROTOCOL *PartitionInfo, IN APPLE_PARTITION_INFO_PROTOCOL *ApplePartitionInfo, IN EFI_LBA Start, IN EFI_LBA End, IN UINT32 BlockSize, IN EFI_GUID *TypeGuid)
EFI_STATUS PartitionInstallMbrChildHandles(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Handle, IN EFI_DISK_IO_PROTOCOL *DiskIo, IN EFI_DISK_IO2_PROTOCOL *DiskIo2, IN EFI_BLOCK_IO_PROTOCOL *BlockIo, IN EFI_BLOCK_IO2_PROTOCOL *BlockIo2, IN EFI_DEVICE_PATH_PROTOCOL *DevicePath)
EFI_STATUS PartitionInstallUdfChildHandles(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Handle, IN EFI_DISK_IO_PROTOCOL *DiskIo, IN EFI_DISK_IO2_PROTOCOL *DiskIo2, IN EFI_BLOCK_IO_PROTOCOL *BlockIo, IN EFI_BLOCK_IO2_PROTOCOL *BlockIo2, IN EFI_DEVICE_PATH_PROTOCOL *DevicePath)
EFI_STATUS PartitionInstallGptChildHandles(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Handle, IN EFI_DISK_IO_PROTOCOL *DiskIo, IN EFI_DISK_IO2_PROTOCOL *DiskIo2, IN EFI_BLOCK_IO_PROTOCOL *BlockIo, IN EFI_BLOCK_IO2_PROTOCOL *BlockIo2, IN EFI_DEVICE_PATH_PROTOCOL *DevicePath)
EFI_STATUS EFIAPI PartitionComponentNameGetControllerName(IN EFI_COMPONENT_NAME_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_HANDLE ChildHandle OPTIONAL, IN CHAR8 *Language, OUT CHAR16 **ControllerName)
EFI_STATUS PartitionInstallElToritoChildHandles(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Handle, IN EFI_DISK_IO_PROTOCOL *DiskIo, IN EFI_DISK_IO2_PROTOCOL *DiskIo2, IN EFI_BLOCK_IO_PROTOCOL *BlockIo, IN EFI_BLOCK_IO2_PROTOCOL *BlockIo2, IN EFI_DEVICE_PATH_PROTOCOL *DevicePath)
EFI_BLOCK_IO2_TOKEN * BlockIo2Token
EFI_DISK_IO2_TOKEN DiskIo2Token
EFI_BLOCK_IO_MEDIA Media2
APPLE_PARTITION_INFO_PROTOCOL ApplePartitionInfo
EFI_BLOCK_IO_PROTOCOL * ParentBlockIo
EFI_BLOCK_IO_PROTOCOL BlockIo
EFI_DISK_IO2_PROTOCOL * DiskIo2
EFI_DISK_IO_PROTOCOL * DiskIo
EFI_PARTITION_INFO_PROTOCOL PartitionInfo
EFI_DEVICE_PATH_PROTOCOL * DevicePath
EFI_BLOCK_IO2_PROTOCOL BlockIo2
EFI_BLOCK_IO2_PROTOCOL * ParentBlockIo2