/** @file\r
Include file that supports UEFI.\r
\r
- This include file must contain things defined in the UEFI 2.4 specification.\r
- If a code construct is defined in the UEFI 2.4 specification it must be included\r
+ This include file must contain things defined in the UEFI 2.7 specification.\r
+ If a code construct is defined in the UEFI 2.7 specification it must be included\r
by this include file.\r
\r
-Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials are licensed and made available under \r
-the terms and conditions of the BSD License that accompanies this distribution. \r
-The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php. \r
- \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
///\r
AllocateAnyPages,\r
///\r
- /// Allocate any available range of pages whose uppermost address is less than \r
+ /// Allocate any available range of pages whose uppermost address is less than\r
/// or equal to a specified maximum address.\r
///\r
AllocateMaxAddress,\r
//\r
// Memory cacheability attributes\r
//\r
-#define EFI_MEMORY_UC 0x0000000000000001ULL\r
-#define EFI_MEMORY_WC 0x0000000000000002ULL\r
-#define EFI_MEMORY_WT 0x0000000000000004ULL\r
-#define EFI_MEMORY_WB 0x0000000000000008ULL\r
-#define EFI_MEMORY_UCE 0x0000000000000010ULL\r
+#define EFI_MEMORY_UC 0x0000000000000001ULL\r
+#define EFI_MEMORY_WC 0x0000000000000002ULL\r
+#define EFI_MEMORY_WT 0x0000000000000004ULL\r
+#define EFI_MEMORY_WB 0x0000000000000008ULL\r
+#define EFI_MEMORY_UCE 0x0000000000000010ULL\r
//\r
// Physical memory protection attributes\r
//\r
-#define EFI_MEMORY_WP 0x0000000000001000ULL\r
-#define EFI_MEMORY_RP 0x0000000000002000ULL\r
-#define EFI_MEMORY_XP 0x0000000000004000ULL\r
+// Note: UEFI spec 2.5 and following: use EFI_MEMORY_RO as write-protected physical memory\r
+// protection attribute. Also, EFI_MEMORY_WP means cacheability attribute.\r
//\r
-// Physical memory persistence attribute. \r
+#define EFI_MEMORY_WP 0x0000000000001000ULL\r
+#define EFI_MEMORY_RP 0x0000000000002000ULL\r
+#define EFI_MEMORY_XP 0x0000000000004000ULL\r
+#define EFI_MEMORY_RO 0x0000000000020000ULL\r
+//\r
+// Physical memory persistence attribute.\r
// The memory region supports byte-addressable non-volatility.\r
//\r
-#define EFI_MEMORY_NV 0x0000000000008000ULL\r
+#define EFI_MEMORY_NV 0x0000000000008000ULL\r
+//\r
+// The memory region provides higher reliability relative to other memory in the system.\r
+// If all memory has the same reliability, then this bit is not used.\r
+//\r
+#define EFI_MEMORY_MORE_RELIABLE 0x0000000000010000ULL\r
//\r
// Runtime memory attribute\r
//\r
-#define EFI_MEMORY_RUNTIME 0x8000000000000000ULL\r
+#define EFI_MEMORY_RUNTIME 0x8000000000000000ULL\r
\r
///\r
/// Memory descriptor version number.\r
///\r
typedef struct {\r
///\r
- /// Type of the memory region. See EFI_MEMORY_TYPE.\r
+ /// Type of the memory region.\r
+ /// Type EFI_MEMORY_TYPE is defined in the\r
+ /// AllocatePages() function description.\r
///\r
UINT32 Type;\r
///\r
- /// Physical address of the first byte of the memory region. Must aligned \r
- /// on a 4 KB boundary.\r
+ /// Physical address of the first byte in the memory region. PhysicalStart must be\r
+ /// aligned on a 4 KiB boundary, and must not be above 0xfffffffffffff000. Type\r
+ /// EFI_PHYSICAL_ADDRESS is defined in the AllocatePages() function description\r
///\r
EFI_PHYSICAL_ADDRESS PhysicalStart;\r
///\r
- /// Virtual address of the first byte of the memory region. Must aligned \r
- /// on a 4 KB boundary.\r
+ /// Virtual address of the first byte in the memory region.\r
+ /// VirtualStart must be aligned on a 4 KiB boundary,\r
+ /// and must not be above 0xfffffffffffff000.\r
///\r
EFI_VIRTUAL_ADDRESS VirtualStart;\r
///\r
- /// Number of 4KB pages in the memory region.\r
+ /// NumberOfPagesNumber of 4 KiB pages in the memory region.\r
+ /// NumberOfPages must not be 0, and must not be any value\r
+ /// that would represent a memory page with a start address,\r
+ /// either physical or virtual, above 0xfffffffffffff000.\r
///\r
UINT64 NumberOfPages;\r
///\r
/// Attributes of the memory region that describe the bit mask of capabilities\r
- /// for that memory region, and not necessarily the current settings for that \r
+ /// for that memory region, and not necessarily the current settings for that\r
/// memory region.\r
///\r
UINT64 Attribute;\r
\r
@param[in] Type The type of allocation to perform.\r
@param[in] MemoryType The type of memory to allocate.\r
+ MemoryType values in the range 0x70000000..0x7FFFFFFF\r
+ are reserved for OEM use. MemoryType values in the range\r
+ 0x80000000..0xFFFFFFFF are reserved for use by UEFI OS loaders\r
+ that are provided by operating system vendors.\r
@param[in] Pages The number of contiguous 4 KB pages to allocate.\r
@param[in, out] Memory The pointer to a physical address. On input, the way in which the address is\r
used depends on the value of Type.\r
@retval EFI_INVALID_PARAMETER 1) Type is not AllocateAnyPages or\r
AllocateMaxAddress or AllocateAddress.\r
2) MemoryType is in the range\r
+ EfiMaxMemoryType..0x6FFFFFFF.\r
3) Memory is NULL.\r
- 4) MemoryType was EfiPersistentMemory.\r
- EfiMaxMemoryType..0x7FFFFFFF.\r
+ 4) MemoryType is EfiPersistentMemory.\r
@retval EFI_OUT_OF_RESOURCES The pages could not be allocated.\r
@retval EFI_NOT_FOUND The requested pages could not be found.\r
\r
Allocates pool memory.\r
\r
@param[in] PoolType The type of pool to allocate.\r
+ MemoryType values in the range 0x70000000..0x7FFFFFFF\r
+ are reserved for OEM use. MemoryType values in the range\r
+ 0x80000000..0xFFFFFFFF are reserved for use by UEFI OS loaders\r
+ that are provided by operating system vendors.\r
@param[in] Size The number of bytes to allocate from the pool.\r
@param[out] Buffer A pointer to a pointer to the allocated buffer if the call succeeds;\r
undefined otherwise.\r
\r
@retval EFI_SUCCESS The requested number of bytes was allocated.\r
@retval EFI_OUT_OF_RESOURCES The pool requested could not be allocated.\r
- @retval EFI_INVALID_PARAMETER PoolType was invalid or Buffer is NULL.\r
- PoolType was EfiPersistentMemory.\r
+ @retval EFI_INVALID_PARAMETER Buffer is NULL.\r
+ PoolType is in the range EfiMaxMemoryType..0x6FFFFFFF.\r
+ PoolType is EfiPersistentMemory.\r
\r
**/\r
typedef\r
@retval EFI_NOT_FOUND 1) There are no EFI_DRIVER_BINDING_PROTOCOL instances\r
present in the system.\r
2) No drivers were connected to ControllerHandle.\r
- @retval EFI_SECURITY_VIOLATION \r
- The user has no permission to start UEFI device drivers on the device path \r
+ @retval EFI_SECURITY_VIOLATION\r
+ The user has no permission to start UEFI device drivers on the device path\r
associated with the ControllerHandle or specified by the RemainingDevicePath.\r
**/\r
typedef\r
attributes bitmask for the variable.\r
@param[in, out] DataSize On input, the size in bytes of the return Data buffer.\r
On output the size of data returned in Data.\r
- @param[out] Data The buffer to return the contents of the variable.\r
+ @param[out] Data The buffer to return the contents of the variable. May be NULL\r
+ with a zero DataSize in order to determine the size buffer needed.\r
\r
@retval EFI_SUCCESS The function completed successfully.\r
@retval EFI_NOT_FOUND The variable was not found.\r
IN EFI_GUID *VendorGuid,\r
OUT UINT32 *Attributes, OPTIONAL\r
IN OUT UINTN *DataSize,\r
- OUT VOID *Data\r
+ OUT VOID *Data OPTIONAL\r
);\r
\r
/**\r
Enumerates the current variable names.\r
\r
- @param[in, out] VariableNameSize The size of the VariableName buffer.\r
+ @param[in, out] VariableNameSize The size of the VariableName buffer. The size must be large\r
+ enough to fit input string supplied in VariableName buffer.\r
@param[in, out] VariableName On input, supplies the last VariableName that was returned\r
by GetNextVariableName(). On output, returns the Nullterminated\r
string of the current variable.\r
@retval EFI_SUCCESS The function completed successfully.\r
@retval EFI_NOT_FOUND The next variable was not found.\r
@retval EFI_BUFFER_TOO_SMALL The VariableNameSize is too small for the result.\r
+ VariableNameSize has been updated with the size needed to complete the request.\r
@retval EFI_INVALID_PARAMETER VariableNameSize is NULL.\r
@retval EFI_INVALID_PARAMETER VariableName is NULL.\r
@retval EFI_INVALID_PARAMETER VendorGuid is NULL.\r
+ @retval EFI_INVALID_PARAMETER The input values of VariableName and VendorGuid are not a name and\r
+ GUID of an existing variable.\r
+ @retval EFI_INVALID_PARAMETER Null-terminator is not found in the first VariableNameSize bytes of\r
+ the input VariableName buffer.\r
@retval EFI_DEVICE_ERROR The variable could not be retrieved due to a hardware error.\r
\r
**/\r
then EFI_INVALID_PARAMETER is returned.\r
@param[in] VendorGuid A unique identifier for the vendor.\r
@param[in] Attributes Attributes bitmask to set for the variable.\r
- @param[in] DataSize The size in bytes of the Data buffer. Unless the EFI_VARIABLE_APPEND_WRITE, \r
- EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS, or \r
- EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS attribute is set, a size of zero \r
- causes the variable to be deleted. When the EFI_VARIABLE_APPEND_WRITE attribute is \r
- set, then a SetVariable() call with a DataSize of zero will not cause any change to \r
- the variable value (the timestamp associated with the variable may be updated however \r
- even if no new data value is provided,see the description of the \r
- EFI_VARIABLE_AUTHENTICATION_2 descriptor below. In this case the DataSize will not \r
- be zero since the EFI_VARIABLE_AUTHENTICATION_2 descriptor will be populated). \r
+ @param[in] DataSize The size in bytes of the Data buffer. Unless the EFI_VARIABLE_APPEND_WRITE or\r
+ EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS attribute is set, a size of zero\r
+ causes the variable to be deleted. When the EFI_VARIABLE_APPEND_WRITE attribute is\r
+ set, then a SetVariable() call with a DataSize of zero will not cause any change to\r
+ the variable value (the timestamp associated with the variable may be updated however\r
+ even if no new data value is provided,see the description of the\r
+ EFI_VARIABLE_AUTHENTICATION_2 descriptor below. In this case the DataSize will not\r
+ be zero since the EFI_VARIABLE_AUTHENTICATION_2 descriptor will be populated).\r
@param[in] Data The contents for the variable.\r
\r
@retval EFI_SUCCESS The firmware has successfully stored the variable and its data as\r
@retval EFI_DEVICE_ERROR The variable could not be retrieved due to a hardware error.\r
@retval EFI_WRITE_PROTECTED The variable in question is read-only.\r
@retval EFI_WRITE_PROTECTED The variable in question cannot be deleted.\r
- @retval EFI_SECURITY_VIOLATION The variable could not be written due to EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS \r
- or EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACESS being set, but the AuthInfo \r
- does NOT pass the validation check carried out by the firmware.\r
- \r
+ @retval EFI_SECURITY_VIOLATION The variable could not be written due to EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACESS being set,\r
+ but the AuthInfo does NOT pass the validation check carried out by the firmware.\r
+\r
@retval EFI_NOT_FOUND The variable trying to be updated or deleted was not found.\r
\r
**/\r
@retval EFI_LOAD_ERROR Image was not loaded because the image format was corrupt or not\r
understood.\r
@retval EFI_DEVICE_ERROR Image was not loaded because the device returned a read error.\r
- @retval EFI_ACCESS_DENIED Image was not loaded because the platform policy prohibits the \r
+ @retval EFI_ACCESS_DENIED Image was not loaded because the platform policy prohibits the\r
image from being loaded. NULL is returned in *ImageHandle.\r
- @retval EFI_SECURITY_VIOLATION Image was loaded and an ImageHandle was created with a \r
- valid EFI_LOADED_IMAGE_PROTOCOL. However, the current \r
+ @retval EFI_SECURITY_VIOLATION Image was loaded and an ImageHandle was created with a\r
+ valid EFI_LOADED_IMAGE_PROTOCOL. However, the current\r
platform policy specifies that the image should not be started.\r
**/\r
typedef\r
/**\r
Terminates a loaded EFI image and returns control to boot services.\r
\r
- @param[in] ImageHandle Handle that identifies the image. This parameter is passed to the \r
+ @param[in] ImageHandle Handle that identifies the image. This parameter is passed to the\r
image on entry.\r
@param[in] ExitStatus The image's exit code.\r
@param[in] ExitDataSize The size, in bytes, of ExitData. Ignored if ExitStatus is EFI_SUCCESS.\r
@param[in] ExitData The pointer to a data buffer that includes a Null-terminated string,\r
- optionally followed by additional binary data. The string is a \r
- description that the caller may use to further indicate the reason \r
- for the image's exit. ExitData is only valid if ExitStatus \r
- is something other than EFI_SUCCESS. The ExitData buffer \r
+ optionally followed by additional binary data. The string is a\r
+ description that the caller may use to further indicate the reason\r
+ for the image's exit. ExitData is only valid if ExitStatus\r
+ is something other than EFI_SUCCESS. The ExitData buffer\r
must be allocated by calling AllocatePool().\r
\r
@retval EFI_SUCCESS The image specified by ImageHandle was unloaded.\r
\r
@param[in] ResetType The type of reset to perform.\r
@param[in] ResetStatus The status code for the reset.\r
- @param[in] DataSize The size, in bytes, of WatchdogData.\r
+ @param[in] DataSize The size, in bytes, of ResetData.\r
@param[in] ResetData For a ResetType of EfiResetCold, EfiResetWarm, or\r
EfiResetShutdown the data buffer starts with a Null-terminated\r
string, optionally followed by additional binary data.\r
-\r
+ The string is a description that the caller may use to further\r
+ indicate the reason for the system reset. ResetData is only\r
+ valid if ResetStatus is something other than EFI_SUCCESS\r
+ unless the ResetType is EfiResetPlatformSpecific\r
+ where a minimum amount of ResetData is always required.\r
+ For a ResetType of EfiResetPlatformSpecific the data buffer\r
+ also starts with a Null-terminated string that is followed\r
+ by an EFI_GUID that describes the specific type of reset to perform.\r
**/\r
typedef\r
VOID\r
///\r
ByRegisterNotify,\r
///\r
- /// Retrieve the set of handles from the handle database that support a \r
+ /// Retrieve the set of handles from the handle database that support a\r
/// specified protocol.\r
///\r
ByProtocol\r
@retval EFI_NOT_FOUND No protocol instances were found that match Protocol and\r
Registration.\r
@retval EFI_INVALID_PARAMETER Interface is NULL.\r
+ Protocol is NULL.\r
\r
**/\r
typedef\r
@retval EFI_INVALID_PARAMETER CapsuleCount is 0.\r
@retval EFI_DEVICE_ERROR The capsule update was started, but failed due to a device error.\r
@retval EFI_UNSUPPORTED The capsule type is not supported on this platform.\r
- @retval EFI_OUT_OF_RESOURCES When ExitBootServices() has been previously called this error indicates the capsule \r
- is compatible with this platform but is not capable of being submitted or processed \r
+ @retval EFI_OUT_OF_RESOURCES When ExitBootServices() has been previously called this error indicates the capsule\r
+ is compatible with this platform but is not capable of being submitted or processed\r
in runtime. The caller may resubmit the capsule prior to ExitBootServices().\r
- @retval EFI_OUT_OF_RESOURCES When ExitBootServices() has not been previously called then this error indicates \r
+ @retval EFI_OUT_OF_RESOURCES When ExitBootServices() has not been previously called then this error indicates\r
the capsule is compatible with this platform but there are insufficient resources to process.\r
\r
**/\r
@retval EFI_UNSUPPORTED The capsule type is not supported on this platform, and\r
MaximumCapsuleSize and ResetType are undefined.\r
@retval EFI_INVALID_PARAMETER MaximumCapsuleSize is NULL.\r
- @retval EFI_OUT_OF_RESOURCES When ExitBootServices() has been previously called this error indicates the capsule \r
- is compatible with this platform but is not capable of being submitted or processed \r
+ @retval EFI_OUT_OF_RESOURCES When ExitBootServices() has been previously called this error indicates the capsule\r
+ is compatible with this platform but is not capable of being submitted or processed\r
in runtime. The caller may resubmit the capsule prior to ExitBootServices().\r
- @retval EFI_OUT_OF_RESOURCES When ExitBootServices() has not been previously called then this error indicates \r
+ @retval EFI_OUT_OF_RESOURCES When ExitBootServices() has not been previously called then this error indicates\r
the capsule is compatible with this platform but there are insufficient resources to process.\r
\r
**/\r
#define EFI_OS_INDICATIONS_FILE_CAPSULE_DELIVERY_SUPPORTED 0x0000000000000004\r
#define EFI_OS_INDICATIONS_FMP_CAPSULE_SUPPORTED 0x0000000000000008\r
#define EFI_OS_INDICATIONS_CAPSULE_RESULT_VAR_SUPPORTED 0x0000000000000010\r
+#define EFI_OS_INDICATIONS_START_PLATFORM_RECOVERY 0x0000000000000040\r
\r
//\r
// EFI Runtime Services Table\r
//\r
#define EFI_SYSTEM_TABLE_SIGNATURE SIGNATURE_64 ('I','B','I',' ','S','Y','S','T')\r
+#define EFI_2_70_SYSTEM_TABLE_REVISION ((2 << 16) | (70))\r
+#define EFI_2_60_SYSTEM_TABLE_REVISION ((2 << 16) | (60))\r
#define EFI_2_50_SYSTEM_TABLE_REVISION ((2 << 16) | (50))\r
#define EFI_2_40_SYSTEM_TABLE_REVISION ((2 << 16) | (40))\r
#define EFI_2_31_SYSTEM_TABLE_REVISION ((2 << 16) | (31))\r
#define EFI_2_00_SYSTEM_TABLE_REVISION ((2 << 16) | (00))\r
#define EFI_1_10_SYSTEM_TABLE_REVISION ((1 << 16) | (10))\r
#define EFI_1_02_SYSTEM_TABLE_REVISION ((1 << 16) | (02))\r
-#define EFI_SYSTEM_TABLE_REVISION EFI_2_50_SYSTEM_TABLE_REVISION\r
+#define EFI_SYSTEM_TABLE_REVISION EFI_2_70_SYSTEM_TABLE_REVISION\r
#define EFI_SPECIFICATION_VERSION EFI_SYSTEM_TABLE_REVISION\r
\r
#define EFI_RUNTIME_SERVICES_SIGNATURE SIGNATURE_64 ('R','U','N','T','S','E','R','V')\r
IN EFI_SYSTEM_TABLE *SystemTable\r
);\r
\r
+//\r
+// EFI Load Option. This data structure describes format of UEFI boot option variables.\r
+//\r
+// NOTE: EFI Load Option is a byte packed buffer of variable length fields.\r
+// The first two fields have fixed length. They are declared as members of the\r
+// EFI_LOAD_OPTION structure. All the other fields are variable length fields.\r
+// They are listed in the comment block below for reference purposes.\r
+//\r
+#pragma pack(1)\r
+typedef struct _EFI_LOAD_OPTION {\r
+ ///\r
+ /// The attributes for this load option entry. All unused bits must be zero\r
+ /// and are reserved by the UEFI specification for future growth.\r
+ ///\r
+ UINT32 Attributes;\r
+ ///\r
+ /// Length in bytes of the FilePathList. OptionalData starts at offset\r
+ /// sizeof(UINT32) + sizeof(UINT16) + StrSize(Description) + FilePathListLength\r
+ /// of the EFI_LOAD_OPTION descriptor.\r
+ ///\r
+ UINT16 FilePathListLength;\r
+ ///\r
+ /// The user readable description for the load option.\r
+ /// This field ends with a Null character.\r
+ ///\r
+ // CHAR16 Description[];\r
+ ///\r
+ /// A packed array of UEFI device paths. The first element of the array is a\r
+ /// device path that describes the device and location of the Image for this\r
+ /// load option. The FilePathList[0] is specific to the device type. Other\r
+ /// device paths may optionally exist in the FilePathList, but their usage is\r
+ /// OSV specific. Each element in the array is variable length, and ends at\r
+ /// the device path end structure. Because the size of Description is\r
+ /// arbitrary, this data structure is not guaranteed to be aligned on a\r
+ /// natural boundary. This data structure may have to be copied to an aligned\r
+ /// natural boundary before it is used.\r
+ ///\r
+ // EFI_DEVICE_PATH_PROTOCOL FilePathList[];\r
+ ///\r
+ /// The remaining bytes in the load option descriptor are a binary data buffer\r
+ /// that is passed to the loaded image. If the field is zero bytes long, a\r
+ /// NULL pointer is passed to the loaded image. The number of bytes in\r
+ /// OptionalData can be computed by subtracting the starting offset of\r
+ /// OptionalData from total size in bytes of the EFI_LOAD_OPTION.\r
+ ///\r
+ // UINT8 OptionalData[];\r
+} EFI_LOAD_OPTION;\r
+#pragma pack()\r
+\r
//\r
// EFI Load Options Attributes\r
//\r
-#define LOAD_OPTION_ACTIVE 0x00000001\r
-#define LOAD_OPTION_FORCE_RECONNECT 0x00000002\r
-#define LOAD_OPTION_HIDDEN 0x00000008\r
-#define LOAD_OPTION_CATEGORY 0x00001F00\r
+#define LOAD_OPTION_ACTIVE 0x00000001\r
+#define LOAD_OPTION_FORCE_RECONNECT 0x00000002\r
+#define LOAD_OPTION_HIDDEN 0x00000008\r
+#define LOAD_OPTION_CATEGORY 0x00001F00\r
\r
-#define LOAD_OPTION_CATEGORY_BOOT 0x00000000\r
-#define LOAD_OPTION_CATEGORY_APP 0x00000100\r
+#define LOAD_OPTION_CATEGORY_BOOT 0x00000000\r
+#define LOAD_OPTION_CATEGORY_APP 0x00000100\r
\r
-#define EFI_BOOT_OPTION_SUPPORT_KEY 0x00000001\r
-#define EFI_BOOT_OPTION_SUPPORT_APP 0x00000002\r
-#define EFI_BOOT_OPTION_SUPPORT_COUNT 0x00000300\r
+#define EFI_BOOT_OPTION_SUPPORT_KEY 0x00000001\r
+#define EFI_BOOT_OPTION_SUPPORT_APP 0x00000002\r
+#define EFI_BOOT_OPTION_SUPPORT_SYSPREP 0x00000010\r
+#define EFI_BOOT_OPTION_SUPPORT_COUNT 0x00000300\r
\r
///\r
/// EFI Boot Key Data\r
\r
#if defined (MDE_CPU_IA32)\r
#define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_IA32\r
-#elif defined (MDE_CPU_IPF)\r
- #define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_IA64\r
#elif defined (MDE_CPU_X64)\r
#define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_X64\r
#elif defined (MDE_CPU_EBC)\r
#error Unknown Processor Type\r
#endif\r
\r
+//\r
+// The directory within the active EFI System Partition defined for delivery of capsule to firmware\r
+//\r
+#define EFI_CAPSULE_FILE_DIRECTORY L"\\EFI\\UpdateCapsule\\"\r
+\r
#include <Uefi/UefiPxe.h>\r
#include <Uefi/UefiGpt.h>\r
#include <Uefi/UefiInternalFormRepresentation.h>\r