/** @file | |
EFI Driver Diagnostics Protocol | |
Copyright (c) 2006, Intel Corporation | |
All rights reserved. This program and the accompanying materials | |
are licensed and made available under the terms and conditions of the BSD License | |
which accompanies this distribution. The full text of the license may be found at | |
http://opensource.org/licenses/bsd-license.php | |
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
Module Name: DriverDiagnostics.h | |
**/ | |
#ifndef __EFI_DRIVER_DIAGNOSTICS_H__ | |
#define __EFI_DRIVER_DIAGNOSTICS_H__ | |
// | |
// Global ID for the Driver Diagnostics Protocol as defined in EFI 1.10. | |
// | |
#define EFI_DRIVER_DIAGNOSTICS_PROTOCOL_GUID \ | |
{ \ | |
0x0784924f, 0xe296, 0x11d4, {0x9a, 0x49, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \ | |
} | |
// | |
// Global ID for the Driver Diagnostics Protocol as defined in UEFI 2.0. | |
// | |
#define UEFI_DRIVER_DIAGNOSTICS_PROTOCOL_GUID \ | |
{ \ | |
0x4d330321, 0x025f, 0x4aac, {0x90, 0xd8, 0x5e, 0xd9, 0x00, 0x17, 0x3b, 0x63 } \ | |
} | |
typedef struct _EFI_DRIVER_DIAGNOSTICS_PROTOCOL EFI_DRIVER_DIAGNOSTICS_PROTOCOL; | |
typedef enum { | |
EfiDriverDiagnosticTypeStandard = 0, | |
EfiDriverDiagnosticTypeExtended = 1, | |
EfiDriverDiagnosticTypeManufacturing= 2, | |
EfiDriverDiagnosticTypeMaximum | |
} EFI_DRIVER_DIAGNOSTIC_TYPE; | |
/** | |
Runs diagnostics on a controller. | |
@param This A pointer to the EFI_DRIVER_DIAGNOSTICS_PROTOCOL instance. | |
@param ControllerHandle The handle of the controller to run diagnostics on. | |
@param ChildHandle The handle of the child controller to run diagnostics on | |
This is an optional parameter that may be NULL. It will | |
be NULL for device drivers. It will also be NULL for a | |
bus drivers that wish to run diagnostics on the bus | |
controller. It will not be NULL for a bus driver that | |
wishes to run diagnostics on one of its child controllers. | |
@param DiagnosticType Indicates type of diagnostics to perform on the controller | |
specified by ControllerHandle and ChildHandle. See | |
"Related Definitions" for the list of supported types. | |
@param Language A pointer to a three character ISO 639-2 language | |
identifier. This is the language in which the optional | |
error message should be returned in Buffer, and it must | |
match one of the languages specified in SupportedLanguages. | |
The number of languages supported by a driver is up to | |
the driver writer. | |
@param ErrorType A GUID that defines the format of the data returned in Buffer. | |
@param BufferSize The size, in bytes, of the data returned in Buffer. | |
@param Buffer A buffer that contains a Null-terminated Unicode string | |
plus some additional data whose format is defined by | |
ErrorType. Buffer is allocated by this function with | |
AllocatePool(), and it is the caller's responsibility | |
to free it with a call to FreePool(). | |
@retval EFI_SUCCESS The controller specified by ControllerHandle and | |
ChildHandle passed the diagnostic. | |
@retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE. | |
@retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid EFI_HANDLE. | |
@retval EFI_INVALID_PARAMETER Language is NULL. | |
@retval EFI_INVALID_PARAMETER ErrorType is NULL. | |
@retval EFI_INVALID_PARAMETER BufferType is NULL. | |
@retval EFI_INVALID_PARAMETER Buffer is NULL. | |
@retval EFI_UNSUPPORTED The driver specified by This does not support | |
running diagnostics for the controller specified | |
by ControllerHandle and ChildHandle. | |
@retval EFI_UNSUPPORTED The driver specified by This does not support the | |
type of diagnostic specified by DiagnosticType. | |
@retval EFI_UNSUPPORTED The driver specified by This does not support the | |
language specified by Language. | |
@retval EFI_OUT_OF_RESOURCES There are not enough resources available to complete | |
the diagnostics. | |
@retval EFI_OUT_OF_RESOURCES There are not enough resources available to return | |
the status information in ErrorType, BufferSize, | |
and Buffer. | |
@retval EFI_DEVICE_ERROR The controller specified by ControllerHandle and | |
ChildHandle did not pass the diagnostic. | |
**/ | |
typedef | |
EFI_STATUS | |
(EFIAPI *EFI_DRIVER_DIAGNOSTICS_RUN_DIAGNOSTICS) ( | |
IN EFI_DRIVER_DIAGNOSTICS_PROTOCOL *This, | |
IN EFI_HANDLE ControllerHandle, | |
IN EFI_HANDLE ChildHandle OPTIONAL, | |
IN EFI_DRIVER_DIAGNOSTIC_TYPE DiagnosticType, | |
IN CHAR8 *Language, | |
OUT EFI_GUID **ErrorType, | |
OUT UINTN *BufferSize, | |
OUT CHAR16 **Buffer | |
); | |
// | |
// | |
/** | |
Interface structure for the Driver Diagnostics Protocol. | |
@par Protocol Description: | |
Used to perform diagnostics on a controller that an EFI Driver is managing. | |
@param RunDiagnostics Runs diagnostics on a controller. | |
@param SupportedLanguages A Null-terminated ASCII string that contains one or more | |
ISO 639-2 language codes. This is the list of language | |
codes that this protocol supports. | |
**/ | |
struct _EFI_DRIVER_DIAGNOSTICS_PROTOCOL { | |
EFI_DRIVER_DIAGNOSTICS_RUN_DIAGNOSTICS RunDiagnostics; | |
CHAR8 *SupportedLanguages; | |
}; | |
extern EFI_GUID gEfiDriverDiagnosticsProtocolGuid; | |
extern EFI_GUID gUefiDriverDiagnosticsProtocolGuid; | |
#endif |