Implement BlRegisterProtocol() routine
This commit is contained in:
parent
35f36adfa6
commit
09ca6dace9
@ -74,6 +74,7 @@ typedef EFI_STATUS (*PBL_OPEN_VOLUME)(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, O
|
|||||||
typedef EFI_STATUS (*PBL_OPEN_XT_PROTOCOL)(OUT PVOID *ProtocolHandler, IN PEFI_GUID ProtocolGuid);
|
typedef EFI_STATUS (*PBL_OPEN_XT_PROTOCOL)(OUT PVOID *ProtocolHandler, IN PEFI_GUID ProtocolGuid);
|
||||||
typedef EFI_STATUS (*PBL_READ_FILE)(IN PEFI_FILE_HANDLE DirHandle, IN CONST PWCHAR FileName, OUT PVOID *FileData, OUT PSIZE_T FileSize);
|
typedef EFI_STATUS (*PBL_READ_FILE)(IN PEFI_FILE_HANDLE DirHandle, IN CONST PWCHAR FileName, OUT PVOID *FileData, OUT PSIZE_T FileSize);
|
||||||
typedef EFI_STATUS (*PBL_REGISTER_BOOT_PROTOCOL)(IN PWCHAR SystemType, IN PEFI_GUID BootProtocolGuid);
|
typedef EFI_STATUS (*PBL_REGISTER_BOOT_PROTOCOL)(IN PWCHAR SystemType, IN PEFI_GUID BootProtocolGuid);
|
||||||
|
typedef EFI_STATUS (*PBL_REGISTER_XT_PROTOCOL)(IN PEFI_GUID Guid, IN PVOID Interface);
|
||||||
typedef VOID (*PBL_REGISTER_XT_BOOT_MENU)(PVOID BootMenuRoutine);
|
typedef VOID (*PBL_REGISTER_XT_BOOT_MENU)(PVOID BootMenuRoutine);
|
||||||
typedef VOID (*PBL_SLEEP_EXECUTION)(IN ULONG_PTR Milliseconds);
|
typedef VOID (*PBL_SLEEP_EXECUTION)(IN ULONG_PTR Milliseconds);
|
||||||
typedef VOID (*PBL_TUI_DISPLAY_ERROR_DIALOG)(IN PWCHAR Caption, IN PWCHAR Message);
|
typedef VOID (*PBL_TUI_DISPLAY_ERROR_DIALOG)(IN PWCHAR Caption, IN PWCHAR Message);
|
||||||
@ -206,6 +207,7 @@ typedef struct _XTBL_LOADER_PROTOCOL
|
|||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
PBL_OPEN_XT_PROTOCOL Open;
|
PBL_OPEN_XT_PROTOCOL Open;
|
||||||
|
PBL_REGISTER_XT_PROTOCOL Register;
|
||||||
} Protocol;
|
} Protocol;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
|
@ -181,6 +181,11 @@ EFI_STATUS
|
|||||||
BlRegisterBootProtocol(IN PWCHAR SystemType,
|
BlRegisterBootProtocol(IN PWCHAR SystemType,
|
||||||
IN PEFI_GUID BootProtocolGuid);
|
IN PEFI_GUID BootProtocolGuid);
|
||||||
|
|
||||||
|
XTCDECL
|
||||||
|
EFI_STATUS
|
||||||
|
BlRegisterProtocol(IN PEFI_GUID Guid,
|
||||||
|
IN PVOID Interface);
|
||||||
|
|
||||||
XTCDECL
|
XTCDECL
|
||||||
VOID
|
VOID
|
||||||
BlResetConsoleInputBuffer();
|
BlResetConsoleInputBuffer();
|
||||||
|
@ -45,7 +45,6 @@ XtLdrModuleMain(IN EFI_HANDLE ImageHandle,
|
|||||||
IN PEFI_SYSTEM_TABLE SystemTable)
|
IN PEFI_SYSTEM_TABLE SystemTable)
|
||||||
{
|
{
|
||||||
EFI_GUID DummyGuid = XT_XTOS_BOOT_PROTOCOL_GUID;
|
EFI_GUID DummyGuid = XT_XTOS_BOOT_PROTOCOL_GUID;
|
||||||
EFI_HANDLE Handle = NULL;
|
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
|
|
||||||
/* Open the XTLDR protocol */
|
/* Open the XTLDR protocol */
|
||||||
@ -63,6 +62,5 @@ XtLdrModuleMain(IN EFI_HANDLE ImageHandle,
|
|||||||
XtLdrProto->Boot.RegisterProtocol(L"XTOS", &DummyGuid);
|
XtLdrProto->Boot.RegisterProtocol(L"XTOS", &DummyGuid);
|
||||||
|
|
||||||
/* Register DUMMY protocol as XTOS boot protocol */
|
/* Register DUMMY protocol as XTOS boot protocol */
|
||||||
return SystemTable->BootServices->InstallProtocolInterface(&Handle, &DummyGuid, EFI_NATIVE_INTERFACE,
|
return XtLdrProto->Protocol.Register(&DummyGuid, &DummyProtocol);
|
||||||
&DummyProtocol);
|
|
||||||
}
|
}
|
||||||
|
@ -530,6 +530,30 @@ BlRegisterBootProtocol(IN PWCHAR SystemType,
|
|||||||
return STATUS_EFI_SUCCESS;
|
return STATUS_EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Installs XTLDR protocol interface.
|
||||||
|
*
|
||||||
|
* @param Guid
|
||||||
|
* Specifies a unique protocol GUID.
|
||||||
|
*
|
||||||
|
* @param Interface
|
||||||
|
* Supplies a pointer to the protocol interface, or NULL if there is no structure associated.
|
||||||
|
*
|
||||||
|
* @return This routine returns a status code.
|
||||||
|
*
|
||||||
|
* @since XT 1.0
|
||||||
|
*/
|
||||||
|
XTCDECL
|
||||||
|
EFI_STATUS
|
||||||
|
BlRegisterProtocol(IN PEFI_GUID Guid,
|
||||||
|
IN PVOID Interface)
|
||||||
|
{
|
||||||
|
EFI_HANDLE Handle = NULL;
|
||||||
|
|
||||||
|
/* Install protocol interface */
|
||||||
|
return EfiSystemTable->BootServices->InstallProtocolInterface(&Handle, Guid, EFI_NATIVE_INTERFACE, Interface);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This routine registers XTLDR protocol for further usage by modules.
|
* This routine registers XTLDR protocol for further usage by modules.
|
||||||
*
|
*
|
||||||
@ -570,6 +594,7 @@ BlpRegisterXtLoaderProtocol()
|
|||||||
BlpLdrProtocol.Memory.FreePages = BlMemoryFreePages;
|
BlpLdrProtocol.Memory.FreePages = BlMemoryFreePages;
|
||||||
BlpLdrProtocol.Memory.FreePool = BlMemoryFreePool;
|
BlpLdrProtocol.Memory.FreePool = BlMemoryFreePool;
|
||||||
BlpLdrProtocol.Protocol.Open = BlOpenProtocol;
|
BlpLdrProtocol.Protocol.Open = BlOpenProtocol;
|
||||||
|
BlpLdrProtocol.Protocol.Register = BlRegisterProtocol;
|
||||||
BlpLdrProtocol.Tui.DisplayErrorDialog = BlDisplayErrorDialog;
|
BlpLdrProtocol.Tui.DisplayErrorDialog = BlDisplayErrorDialog;
|
||||||
BlpLdrProtocol.Tui.DisplayInfoDialog = BlDisplayInfoDialog;
|
BlpLdrProtocol.Tui.DisplayInfoDialog = BlDisplayInfoDialog;
|
||||||
BlpLdrProtocol.Tui.DisplayProgressDialog = BlDisplayProgressDialog;
|
BlpLdrProtocol.Tui.DisplayProgressDialog = BlDisplayProgressDialog;
|
||||||
|
Loading…
Reference in New Issue
Block a user