diff --git a/BOOT/ENVIRON/LIB/EFI/efilib.c b/BOOT/ENVIRON/LIB/EFI/efilib.c index 756b403..539f5bd 100644 --- a/BOOT/ENVIRON/LIB/EFI/efilib.c +++ b/BOOT/ENVIRON/LIB/EFI/efilib.c @@ -56,6 +56,7 @@ Return Value: case STATUS_MEDIA_WRITE_PROTECTED: return EFI_WRITE_PROTECTED; case STATUS_INSUFFICIENT_RESOURCES: + case STATUS_INSUFFICIENT_NVRAM_RESOURCES: return EFI_OUT_OF_RESOURCES; case STATUS_DISK_CORRUPT_ERROR: return EFI_VOLUME_CORRUPTED; @@ -83,3 +84,75 @@ Return Value: return EFI_NO_MAPPING; } } + + +NTSTATUS +EfiGetNtStatusCode ( + IN EFI_STATUS Status + ) + +/*++ + +Routine Description: + + Converts an EFI status code into an NT status code. + +Arguments: + + Status - The EFI status code to be converted. + +Return Value: + + The NT status code. + +--*/ + +{ + switch (Status) { + case EFI_SUCCESS: + return STATUS_SUCCESS; + case EFI_LOAD_ERROR: + return STATUS_DRIVER_UNABLE_TO_LOAD; + case EFI_INVALID_PARAMETER: + return STATUS_INVALID_PARAMETER; + case EFI_UNSUPPORTED: + return STATUS_NOT_SUPPORTED; + case EFI_BAD_BUFFER_SIZE: + return STATUS_INVALID_BUFFER_SIZE; + case EFI_BUFFER_TOO_SMALL: + return STATUS_BUFFER_TOO_SMALL; + case EFI_DEVICE_ERROR: + return STATUS_IO_DEVICE_ERROR; + case EFI_WRITE_PROTECTED: + return STATUS_MEDIA_WRITE_PROTECTED; + case EFI_OUT_OF_RESOURCES: + return STATUS_INSUFFICIENT_NVRAM_RESOURCES; + case EFI_VOLUME_CORRUPTED: + return STATUS_DISK_CORRUPT_ERROR; + case EFI_VOLUME_FULL: + return STATUS_DISK_FULL; + case EFI_NO_MEDIA: + return STATUS_NO_MEDIA; + case EFI_MEDIA_CHANGED: + return STATUS_MEDIA_CHANGED; + case EFI_NOT_FOUND: + case EFI_NOT_READY: + return STATUS_NOT_FOUND; + case EFI_ACCESS_DENIED: + case EFI_SECURITY_VIOLATION: + return STATUS_ACCESS_DENIED; + case EFI_NO_MAPPING: + return STATUS_NO_MATCH; + case EFI_TIMEOUT: + case EFI_NO_RESPONSE: + return STATUS_TIMEOUT; + case EFI_NOT_STARTED: + return STATUS_DEVICE_NOT_READY; + case EFI_ALREADY_STARTED: + return STATUS_DEVICE_ALREADY_ATTACHED; + case EFI_ABORTED: + return STATUS_REQUEST_ABORTED; + default: + return STATUS_UNSUCCESSFUL; + } +} \ No newline at end of file