/*++ Copyright (c) 2024, Quinn Stephens. Provided under the BSD 3-Clause license. Module Name: efilib.c Abstract: Provides EFI utilities. --*/ #include "bootmgr.h" #include "efi.h" EFI_STATUS EfiGetEfiStatusCode ( IN NTSTATUS Status ) /*++ Routine Description: Converts an NT status code into an EFI status code. Arguments: Status - The NT status code to be converted. Return Value: The EFI status code. --*/ { switch (Status) { case STATUS_SUCCESS: return EFI_SUCCESS; case STATUS_DRIVER_UNABLE_TO_LOAD: return EFI_LOAD_ERROR; case STATUS_INVALID_PARAMETER: return EFI_INVALID_PARAMETER; case STATUS_NOT_SUPPORTED: return EFI_UNSUPPORTED; case STATUS_INVALID_BUFFER_SIZE: return EFI_BAD_BUFFER_SIZE; case STATUS_BUFFER_TOO_SMALL: return EFI_BUFFER_TOO_SMALL; case STATUS_IO_DEVICE_ERROR: return EFI_DEVICE_ERROR; case STATUS_MEDIA_WRITE_PROTECTED: return EFI_WRITE_PROTECTED; case STATUS_INSUFFICIENT_RESOURCES: return EFI_OUT_OF_RESOURCES; case STATUS_DISK_CORRUPT_ERROR: return EFI_VOLUME_CORRUPTED; case STATUS_DISK_FULL: return EFI_VOLUME_FULL; case STATUS_NO_MEDIA: return EFI_NO_MEDIA; case STATUS_MEDIA_CHANGED: return EFI_MEDIA_CHANGED; case STATUS_NOT_FOUND: return EFI_NOT_FOUND; case STATUS_ACCESS_DENIED: return EFI_ACCESS_DENIED; case STATUS_NO_MATCH: return EFI_NO_MAPPING; case STATUS_TIMEOUT: return EFI_TIMEOUT; case STATUS_DEVICE_NOT_READY: return EFI_NOT_STARTED; case STATUS_DEVICE_ALREADY_ATTACHED: return EFI_ALREADY_STARTED; case STATUS_REQUEST_ABORTED: return EFI_ABORTED; default: return EFI_NO_MAPPING; } }