alcyone/BOOT/ENVIRON/LIB/EFI/efilib.c

86 lines
1.8 KiB
C

/*++
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;
}
}