14#include <Library/BaseMemoryLib.h>
15#include <Library/DebugLib.h>
16#include <Library/DevicePathLib.h>
18#include <Protocol/DevicePath.h>
19#include <Protocol/LoadedImage.h>
28EFI_SYSTEM_TABLE *
gST = NULL;
29EFI_BOOT_SERVICES *
gBS = NULL;
42 IN EFI_HANDLE ControllerHandle,
43 IN EFI_HANDLE *DriverImageHandle OPTIONAL,
44 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL,
51 if (ControllerHandle == NULL) {
52 return EFI_INVALID_PARAMETER;
64 Status =
gBS->HandleProtocol (
69 if (EFI_ERROR (Status)) {
88 IN EFI_GUID *Protocol,
89 OUT VOID **Interface OPTIONAL,
90 IN EFI_HANDLE AgentHandle,
91 IN EFI_HANDLE ControllerHandle,
97 EFI_LOADED_IMAGE_PROTOCOL *LoadedImage;
113 if ( !EFI_ERROR (Status)
115 && (Interface != NULL))
117 LoadedImage = *Interface;
119 if ((LoadedImage->FilePath != NULL) && !IsDevicePathValid (LoadedImage->FilePath, 0)) {
120 LoadedImage->FilePath = NULL;
128 if ((Interface == NULL) && (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL)) {
129 return EFI_INVALID_PARAMETER;
137 if (Interface != NULL) {
152 IN EFI_LOCATE_SEARCH_TYPE SearchType,
153 IN EFI_GUID *Protocol OPTIONAL,
154 IN VOID *SearchKey OPTIONAL,
155 IN OUT UINTN *NoHandles,
170 if ((Status == EFI_NOT_FOUND) && (SearchType == ByProtocol)) {
176 Status =
gBS->AllocatePool (
181 if (!EFI_ERROR (Status)) {
187 return EFI_NOT_FOUND;
199 IN EFI_GUID *Protocol,
200 IN VOID *Registration OPTIONAL,
207 if ((Protocol == NULL) || (Interface == NULL)) {
208 return EFI_INVALID_PARAMETER;
235 if (EFI_ERROR (Status)) {
251 IN EFI_GUID *ProtocolGuid,
252 IN VOID *ProtocolInstance,
257 return EFI_OUT_OF_RESOURCES;
272 IN EFI_HANDLE ImageHandle,
273 IN EFI_SYSTEM_TABLE *SystemTable
281 ASSERT (ImageHandle != NULL);
282 ASSERT (SystemTable != NULL);
283 ASSERT (SystemTable->BootServices != NULL);
300 Status = SystemTable->BootServices->AllocatePool (
302 SystemTable->BootServices->Hdr.HeaderSize,
305 if (EFI_ERROR (Status)) {
314 SystemTable->BootServices,
315 SystemTable->BootServices->Hdr.HeaderSize
330 SystemTable->BootServices->CalculateCrc32 (
342 IN EFI_HANDLE ImageHandle,
343 IN EFI_SYSTEM_TABLE *SystemTable
349 SystemTable->BootServices->FreePool (
gBS);
#define ARRAY_SIZE(Array)
STATIC EFI_CONNECT_CONTROLLER mConnectController
EFI_STATUS EFIAPI OcBootServicesTableLibConstructor(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
STATIC EFI_OPEN_PROTOCOL mOpenProtocol
STATIC EFI_STATUS EFIAPI OcConnectController(IN EFI_HANDLE ControllerHandle, IN EFI_HANDLE *DriverImageHandle OPTIONAL, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL, IN BOOLEAN Recursive)
EFI_STATUS EFIAPI OcBootServicesTableLibDestructor(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
STATIC EFI_LOCATE_HANDLE_BUFFER mLocateHandleBuffer
STATIC OC_REGISTERED_PROTOCOL mRegisteredProtocols[16]
STATIC EFI_LOCATE_PROTOCOL mLocateProtocol
STATIC EFI_STATUS EFIAPI OcOpenProtocol(IN EFI_HANDLE Handle, IN EFI_GUID *Protocol, OUT VOID **Interface OPTIONAL, IN EFI_HANDLE AgentHandle, IN EFI_HANDLE ControllerHandle, IN UINT32 Attributes)
STATIC EFI_STATUS EFIAPI OcLocateHandleBuffer(IN EFI_LOCATE_SEARCH_TYPE SearchType, IN EFI_GUID *Protocol OPTIONAL, IN VOID *SearchKey OPTIONAL, IN OUT UINTN *NoHandles, OUT EFI_HANDLE **Buffer)
EFI_STATUS OcRegisterBootServicesProtocol(IN EFI_GUID *ProtocolGuid, IN VOID *ProtocolInstance, IN BOOLEAN Override)
struct OC_REGISTERED_PROTOCOL_ OC_REGISTERED_PROTOCOL
STATIC UINTN mRegisteredProtocolCount
STATIC EFI_STATUS EFIAPI OcLocateProtocol(IN EFI_GUID *Protocol, IN VOID *Registration OPTIONAL, OUT VOID **Interface)
OC_TYPING_BUFFER_ENTRY Buffer[OC_TYPING_BUFFER_SIZE]
APPLE_EVENT_HANDLE Handle
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
BOOLEAN EFIAPI CompareGuid(IN CONST GUID *Guid1, IN CONST GUID *Guid2)
EFI_GUID gEfiLoadedImageProtocolGuid
EFI_GUID gEfiDevicePathProtocolGuid