]> git.proxmox.com Git - mirror_edk2.git/commitdiff
1. Add the fix for the following Bugs:
authorcwu11 <cwu11@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 3 Nov 2006 02:47:43 +0000 (02:47 +0000)
committercwu11 <cwu11@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 3 Nov 2006 02:47:43 +0000 (02:47 +0000)
i) BMM_FAKE_NV_DATA definition inconsistent in bm.vfr and BootMain.h
        (EdkNt32Pkg\Dxe\PlatformBdsDxe\Generic\BootMaint\BootMain.h)
ii) Change some files’ EOL(end of line) format to DOS. Some file use even mixed style EOL.
   (EdkModulePkg\Universal\DevicePath\Dxe\DevicePath.c, DevicepathFromText.c, DevicePathUtilities.c;
EdkModulePkg\Universal\Disk\DiskIo\Dxe\diskIo.c; MdePkg\Library\UefiLib\UefiNotTiano.c)
iii)    Change some illegal characters in many files, the problem is mainly connected with people using Chinese Input method to input symbols such as ' " - ?, etc. Multiple files are influenced.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1890 6f19259b-4bc3-4df7-8a09-765794883524

116 files changed:
EdkModulePkg/Core/Dxe/DxeMain.h
EdkModulePkg/Core/Dxe/Hand/handle.c
EdkModulePkg/Core/Dxe/Image/Image.c
EdkModulePkg/Core/Pei/Memory/MemoryServices.c
EdkModulePkg/Include/Library/OemHookStatusCodeLib.h
EdkModulePkg/Library/EdkDxeDebugLibReportStatusCode/DebugLib.c
EdkModulePkg/Library/EdkOemHookStatusCodeLibNull/OemHookStatusCodeLibNull.c
EdkModulePkg/Library/EdkUefiDebugLibConOut/DebugLib.c
EdkModulePkg/Library/EdkUefiDebugLibStdErr/DebugLib.c
EdkModulePkg/Library/EdkUefiRuntimeLib/Common/RuntimeService.c
EdkModulePkg/Library/EdkUefiRuntimeLib/Ipf/RuntimeService.c
EdkModulePkg/Universal/DevicePath/Dxe/DevicePath.c
EdkModulePkg/Universal/DevicePath/Dxe/DevicePathFromText.c
EdkModulePkg/Universal/DevicePath/Dxe/DevicePathUtilities.c
EdkModulePkg/Universal/Disk/DiskIo/Dxe/diskio.c
EdkModulePkg/Universal/StatusCode/Dxe/Common/DxeStatusCodeCommon.c
EdkModulePkg/Universal/StatusCode/Dxe/DataHubStatusCodeWorker.c
EdkModulePkg/Universal/StatusCode/Dxe/DxeStatusCode.h
EdkModulePkg/Universal/StatusCode/Dxe/Ipf/DxeStatusCodeIpf.c
EdkModulePkg/Universal/StatusCode/Dxe/RtMemoryStatusCodeWorker.c
EdkModulePkg/Universal/StatusCode/Dxe/SerialStatusCodeWorker.c
EdkModulePkg/Universal/StatusCode/Pei/MemoryStausCodeWorker.c
EdkModulePkg/Universal/StatusCode/Pei/PeiStatusCode.c
EdkModulePkg/Universal/StatusCode/Pei/PeiStatusCode.h
EdkModulePkg/Universal/StatusCode/Pei/SerialStatusCodeWorker.c
EdkModulePkg/Universal/UserInterface/HiiDataBase/Dxe/Forms.c
EdkNt32Pkg/Dxe/PlatformBds/Generic/BootMaint/BootMaint.h
EdkNt32Pkg/Library/Nt32OemHookStatusCodeLib/Nt32OemHookStatusCodeLib.c
MdePkg/Include/Library/BaseMemoryLib.h
MdePkg/Include/Library/MemoryAllocationLib.h
MdePkg/Include/Library/UefiDecompressLib.h
MdePkg/Include/Library/UefiLib.h
MdePkg/Include/Library/UefiRuntimeLib.h
MdePkg/Include/Peim/PeiCis.h
MdePkg/Include/Ppi/BlockIo.h
MdePkg/Include/Ppi/Pcd.h
MdePkg/Include/Ppi/ReadOnlyVariable.h
MdePkg/Include/Ppi/Security.h
MdePkg/Include/Protocol/Arp.h
MdePkg/Include/Protocol/Bis.h
MdePkg/Include/Protocol/DebugSupport.h
MdePkg/Include/Protocol/FormBrowser.h
MdePkg/Include/Protocol/FormCallback.h
MdePkg/Include/Protocol/Hash.h
MdePkg/Include/Protocol/Hii.h
MdePkg/Include/Protocol/IdeControllerInit.h
MdePkg/Include/Protocol/LegacyBiosPlatform.h
MdePkg/Include/Protocol/LegacyRegion.h
MdePkg/Include/Protocol/Mtftp4.h
MdePkg/Include/Protocol/Pcd.h
MdePkg/Include/Protocol/PciIo.h
MdePkg/Include/Protocol/PciPlatform.h
MdePkg/Include/Protocol/PciRootBridgeIo.h
MdePkg/Include/Protocol/PxeBaseCode.h
MdePkg/Include/Protocol/SmmSxDispatch.h
MdePkg/Include/Protocol/TapeIo.h
MdePkg/Include/Protocol/Tcp4.h
MdePkg/Include/Protocol/Usb2HostController.h
MdePkg/Include/Protocol/UsbHostController.h
MdePkg/Include/Protocol/UsbIo.h
MdePkg/Include/Uefi/UefiSpec.h
MdePkg/Library/BaseDebugLibNull/DebugLib.c
MdePkg/Library/BaseMemoryLib/MemLibGuid.c
MdePkg/Library/BaseMemoryLib/ScanMem16Wrapper.c
MdePkg/Library/BaseMemoryLib/ScanMem32Wrapper.c
MdePkg/Library/BaseMemoryLib/ScanMem64Wrapper.c
MdePkg/Library/BaseMemoryLib/ScanMem8Wrapper.c
MdePkg/Library/BaseMemoryLib/SetMemWrapper.c
MdePkg/Library/BaseMemoryLib/ZeroMemWrapper.c
MdePkg/Library/BaseMemoryLibMmx/MemLibGuid.c
MdePkg/Library/BaseMemoryLibMmx/ScanMem16Wrapper.c
MdePkg/Library/BaseMemoryLibMmx/ScanMem32Wrapper.c
MdePkg/Library/BaseMemoryLibMmx/ScanMem64Wrapper.c
MdePkg/Library/BaseMemoryLibMmx/ScanMem8Wrapper.c
MdePkg/Library/BaseMemoryLibMmx/SetMemWrapper.c
MdePkg/Library/BaseMemoryLibMmx/ZeroMemWrapper.c
MdePkg/Library/BaseMemoryLibRepStr/MemLibGuid.c
MdePkg/Library/BaseMemoryLibRepStr/ScanMem16Wrapper.c
MdePkg/Library/BaseMemoryLibRepStr/ScanMem32Wrapper.c
MdePkg/Library/BaseMemoryLibRepStr/ScanMem64Wrapper.c
MdePkg/Library/BaseMemoryLibRepStr/ScanMem8Wrapper.c
MdePkg/Library/BaseMemoryLibRepStr/SetMemWrapper.c
MdePkg/Library/BaseMemoryLibRepStr/ZeroMemWrapper.c
MdePkg/Library/BaseMemoryLibSse2/MemLibGuid.c
MdePkg/Library/BaseMemoryLibSse2/ScanMem16Wrapper.c
MdePkg/Library/BaseMemoryLibSse2/ScanMem32Wrapper.c
MdePkg/Library/BaseMemoryLibSse2/ScanMem64Wrapper.c
MdePkg/Library/BaseMemoryLibSse2/ScanMem8Wrapper.c
MdePkg/Library/BaseMemoryLibSse2/SetMemWrapper.c
MdePkg/Library/BaseMemoryLibSse2/ZeroMemWrapper.c
MdePkg/Library/BaseUefiDecompressLib/BaseUefiDecompressLib.c
MdePkg/Library/DxeCoreHobLib/HobLib.c
MdePkg/Library/DxeHobLib/HobLib.c
MdePkg/Library/DxeMemoryAllocationLib/MemoryAllocationLib.c
MdePkg/Library/DxeMemoryLib/MemLibGuid.c
MdePkg/Library/DxeMemoryLib/ScanMem16Wrapper.c
MdePkg/Library/DxeMemoryLib/ScanMem32Wrapper.c
MdePkg/Library/DxeMemoryLib/ScanMem64Wrapper.c
MdePkg/Library/DxeMemoryLib/ScanMem8Wrapper.c
MdePkg/Library/DxeMemoryLib/SetMemWrapper.c
MdePkg/Library/DxeMemoryLib/ZeroMemWrapper.c
MdePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
MdePkg/Library/PeiHobLib/HobLib.c
MdePkg/Library/PeiMemoryAllocationLib/MemoryAllocationLib.c
MdePkg/Library/PeiMemoryLib/MemLibGuid.c
MdePkg/Library/PeiMemoryLib/ScanMem16Wrapper.c
MdePkg/Library/PeiMemoryLib/ScanMem32Wrapper.c
MdePkg/Library/PeiMemoryLib/ScanMem64Wrapper.c
MdePkg/Library/PeiMemoryLib/ScanMem8Wrapper.c
MdePkg/Library/PeiMemoryLib/SetMemWrapper.c
MdePkg/Library/PeiMemoryLib/ZeroMemWrapper.c
MdePkg/Library/UefiDebugLibConOut/DebugLib.c
MdePkg/Library/UefiDebugLibStdErr/DebugLib.c
MdePkg/Library/UefiLib/UefiLib.c
MdePkg/Library/UefiLib/UefiNotTiano.c
Tools/CCode/Source/Include/Protocol/Hii.h

index 9a9ba683e7931cf6d4aaf19d2f610903090068b0..4ff23f3b0be8df6a2d2126d113451e1df9630ff7 100644 (file)
@@ -1669,7 +1669,7 @@ Arguments:
   ExitData        - Pointer to a pointer to a data buffer that includes a Null-terminated\r
                     Unicode string, optionally followed by additional binary data. The string\r
                     is a description that the caller may use to further indicate the reason for\r
   ExitData        - Pointer to a pointer to a data buffer that includes a Null-terminated\r
                     Unicode string, optionally followed by additional binary data. The string\r
                     is a description that the caller may use to further indicate the reason for\r
-                    the image¡¯s exit.\r
+                    the image's exit.\r
 \r
 Returns:\r
 \r
 \r
 Returns:\r
 \r
@@ -1701,13 +1701,13 @@ Arguments:
 \r
   ImageHandle       - Handle that identifies the image. This parameter is passed to the image \r
                       on entry.\r
 \r
   ImageHandle       - Handle that identifies the image. This parameter is passed to the image \r
                       on entry.\r
-  Status            - The image¡¯s exit code.\r
+  Status            - The image's exit code.\r
   ExitDataSize      - The size, in bytes, of ExitData. Ignored if ExitStatus is\r
                       EFI_SUCCESS.\r
   ExitData          - Pointer to a data buffer that includes a Null-terminated Unicode string,\r
                       optionally followed by additional binary data. The string is a \r
                       description that the caller may use to further indicate the reason for\r
   ExitDataSize      - The size, in bytes, of ExitData. Ignored if ExitStatus is\r
                       EFI_SUCCESS.\r
   ExitData          - Pointer to a data buffer that includes a Null-terminated Unicode string,\r
                       optionally followed by additional binary data. The string is a \r
                       description that the caller may use to further indicate the reason for\r
-                      the image¡¯s exit.\r
+                      the image's exit.\r
 \r
 Returns:\r
 \r
 \r
 Returns:\r
 \r
@@ -1740,8 +1740,8 @@ Arguments:
 \r
   Type                - The type of event to create and its mode and attributes\r
   NotifyTpl           - The task priority level of event notifications\r
 \r
   Type                - The type of event to create and its mode and attributes\r
   NotifyTpl           - The task priority level of event notifications\r
-  NotifyFunction      - Pointer to the event\92s notification function\r
-  NotifyContext       - Pointer to the notification function\92s context; corresponds to\r
+  NotifyFunction      - Pointer to the event's notification function\r
+  NotifyContext       - Pointer to the notification function's context; corresponds to\r
                         parameter "Context" in the notification function\r
   pEvent              - Pointer to the newly created event if the call succeeds; undefined otherwise\r
 \r
                         parameter "Context" in the notification function\r
   pEvent              - Pointer to the newly created event if the call succeeds; undefined otherwise\r
 \r
index 2edfdeb78b8ab8d2828d66e7f34ba763b436fb71..f958bff63ffa06be8c502173d9524c9cb708c1e3 100644 (file)
@@ -1325,7 +1325,7 @@ Arguments:
 \r
   UserHandle       -  The handle for the protocol interface that was previously opened\r
                       with OpenProtocol(), and is now being closed.\r
 \r
   UserHandle       -  The handle for the protocol interface that was previously opened\r
                       with OpenProtocol(), and is now being closed.\r
-  Protocol         -  The published unique identifier of the protocol. It is the caller¡¯s\r
+  Protocol         -  The published unique identifier of the protocol. It is the caller's\r
                       responsibility to pass in a valid GUID.\r
   AgentHandle      -  The handle of the agent that is closing the protocol interface.\r
   ControllerHandle -  If the agent that opened a protocol is a driver that follows the\r
                       responsibility to pass in a valid GUID.\r
   AgentHandle      -  The handle of the agent that is closing the protocol interface.\r
   ControllerHandle -  If the agent that opened a protocol is a driver that follows the\r
index d77f4c4fca23c5af4ab7b14cd66fd07bddac1c0c..9b9720d8975b1f5e698c8065f68fcf9a2a90dfc6 100644 (file)
@@ -905,7 +905,7 @@ Arguments:
   ExitData        - Pointer to a pointer to a data buffer that includes a Null-terminated\r
                     Unicode string, optionally followed by additional binary data. The string\r
                     is a description that the caller may use to further indicate the reason for\r
   ExitData        - Pointer to a pointer to a data buffer that includes a Null-terminated\r
                     Unicode string, optionally followed by additional binary data. The string\r
                     is a description that the caller may use to further indicate the reason for\r
-                    the image¡¯s exit.\r
+                    the image's exit.\r
 \r
 Returns:\r
 \r
 \r
 Returns:\r
 \r
@@ -1209,13 +1209,13 @@ Arguments:
 \r
   ImageHandle       - Handle that identifies the image. This parameter is passed to the image\r
                       on entry.\r
 \r
   ImageHandle       - Handle that identifies the image. This parameter is passed to the image\r
                       on entry.\r
-  Status            - The image¡¯s exit code.\r
+  Status            - The image's exit code.\r
   ExitDataSize      - The size, in bytes, of ExitData. Ignored if ExitStatus is\r
                       EFI_SUCCESS.\r
   ExitData          - Pointer to a data buffer that includes a Null-terminated Unicode string,\r
                       optionally followed by additional binary data. The string is a\r
                       description that the caller may use to further indicate the reason for\r
   ExitDataSize      - The size, in bytes, of ExitData. Ignored if ExitStatus is\r
                       EFI_SUCCESS.\r
   ExitData          - Pointer to a data buffer that includes a Null-terminated Unicode string,\r
                       optionally followed by additional binary data. The string is a\r
                       description that the caller may use to further indicate the reason for\r
-                      the image¡¯s exit.\r
+                      the image's exit.\r
 \r
 Returns:\r
 \r
 \r
 Returns:\r
 \r
index d49b7427b4817cd50c0ffbabd0588f10985f4189..62cd59edf006781902fddbac8288a97d6ee2eb04 100644 (file)
@@ -302,7 +302,7 @@ Returns:
   EFI_HOB_MEMORY_POOL      *Hob;\r
 \r
  //\r
   EFI_HOB_MEMORY_POOL      *Hob;\r
 \r
  //\r
- // If some ¡°post-memory¡± PEIM wishes to allocate larger pool,\r
+ // If some "post-memory" PEIM wishes to allocate larger pool,\r
  // it should use AllocatePages service instead.\r
  //\r
  ASSERT (Size < 0x10000 - sizeof (EFI_HOB_MEMORY_POOL));\r
  // it should use AllocatePages service instead.\r
  //\r
  ASSERT (Size < 0x10000 - sizeof (EFI_HOB_MEMORY_POOL));\r
index 3de7551ceb92141554a7f04407f5ce48dbb8419e..533df317ff7cef1729012f0181e58edec1a41de9 100644 (file)
@@ -35,13 +35,13 @@ OemHookStatusCodeInitialize (
 /**\r
   Report status code to OEM device.\r
  \r
 /**\r
   Report status code to OEM device.\r
  \r
-  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions¡± below.\r
+  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions" below.\r
  \r
   @param  Value         Describes the current status of a hardware or software entity.  \r
                         This included information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity. \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time. \r
  \r
   @param  Value         Describes the current status of a hardware or software entity.  \r
                         This included information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity. \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time. \r
-                        Type EFI_STATUS_CODE_VALUE is defined in ¡°Related Definitions¡± below.  \r
+                        Type EFI_STATUS_CODE_VALUE is defined in "Related Definitions" below.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
  \r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
  \r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
index fed9ba4d66335f6764523a6030b6fff2155cc796..482e12e79e445c800360fd901bee07990f01fa4c 100644 (file)
@@ -225,7 +225,7 @@ DebugAssert (
 \r
   If Buffer is NULL, then ASSERT().\r
 \r
 \r
   If Buffer is NULL, then ASSERT().\r
 \r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param   Buffer  Pointer to the target buffer to fill with PcdDebugClearMemoryValue.\r
   @param   Length  Number of bytes in Buffer to fill with zeros PcdDebugClearMemoryValue. \r
 \r
   @param   Buffer  Pointer to the target buffer to fill with PcdDebugClearMemoryValue.\r
   @param   Length  Number of bytes in Buffer to fill with zeros PcdDebugClearMemoryValue. \r
index 98c98cc9d025fd186f701fc3deb5ce0ddfd3226f..7816931e96136e84352f1df6e468934c3845c26f 100644 (file)
@@ -33,13 +33,13 @@ OemHookStatusCodeInitialize (
 /**\r
   Report status code to OEM device.\r
  \r
 /**\r
   Report status code to OEM device.\r
  \r
-  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions¡± below.\r
+  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions" below.\r
  \r
   @param  Value         Describes the current status of a hardware or software entity.  \r
                         This included information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity. \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time. \r
  \r
   @param  Value         Describes the current status of a hardware or software entity.  \r
                         This included information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity. \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time. \r
-                        Type EFI_STATUS_CODE_VALUE is defined in ¡°Related Definitions¡± below.  \r
+                        Type EFI_STATUS_CODE_VALUE is defined in "Related Definitions" below.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
  \r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
  \r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
index 5f5f2c56ca1b1dfa8454abeb49136d8097ccfe2c..43d904a67722dcb95ec559d1a68acbb46ece7773 100644 (file)
@@ -189,7 +189,7 @@ DebugAssert (
 \r
   If Buffer is NULL, then ASSERT().\r
 \r
 \r
   If Buffer is NULL, then ASSERT().\r
 \r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param   Buffer  Pointer to the target buffer to fill with PcdDebugClearMemoryValue.\r
   @param   Length  Number of bytes in Buffer to fill with zeros PcdDebugClearMemoryValue. \r
 \r
   @param   Buffer  Pointer to the target buffer to fill with PcdDebugClearMemoryValue.\r
   @param   Length  Number of bytes in Buffer to fill with zeros PcdDebugClearMemoryValue. \r
index 20167012848d0dbd2b0e397c8c2b5b4cc0a9d074..9ba70df0d650ce98cd396b805313c423a85fdec5 100644 (file)
@@ -189,7 +189,7 @@ DebugAssert (
 \r
   If Buffer is NULL, then ASSERT().\r
 \r
 \r
   If Buffer is NULL, then ASSERT().\r
 \r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param   Buffer  Pointer to the target buffer to fill with PcdDebugClearMemoryValue.\r
   @param   Length  Number of bytes in Buffer to fill with zeros PcdDebugClearMemoryValue. \r
 \r
   @param   Buffer  Pointer to the target buffer to fill with PcdDebugClearMemoryValue.\r
   @param   Length  Number of bytes in Buffer to fill with zeros PcdDebugClearMemoryValue. \r
index 42a872cd5aff42bfb9c9da332b53b8a735cf3682..013c3f159fe3b725bb19d1a239f0d2efb9fac32a 100644 (file)
@@ -68,7 +68,7 @@ Routine Description:
 Arguments:\r
 \r
   Time          - A pointer to storage to receive a snapshot of the current time.\r
 Arguments:\r
 \r
   Time          - A pointer to storage to receive a snapshot of the current time.\r
-  Capabilities  - An optional pointer to a buffer to receive the real time clock device¡¯s\r
+  Capabilities  - An optional pointer to a buffer to receive the real time clock device's\r
                   capabilities.\r
 \r
 Returns:\r
                   capabilities.\r
 \r
 Returns:\r
@@ -180,7 +180,7 @@ Routine Description:
 Arguments:\r
 \r
   VariableName  - A Null-terminated Unicode string that is the name of the\r
 Arguments:\r
 \r
   VariableName  - A Null-terminated Unicode string that is the name of the\r
-                  vendor¡¯s variable.\r
+                  vendor's variable.\r
   VendorGuid    - A unique identifier for the vendor.\r
   Attributes    - If not NULL, a pointer to the memory location to return the\r
                   attributes bitmask for the variable.\r
   VendorGuid    - A unique identifier for the vendor.\r
   Attributes    - If not NULL, a pointer to the memory location to return the\r
                   attributes bitmask for the variable.\r
@@ -248,7 +248,7 @@ Routine Description:
 Arguments:\r
 \r
   VariableName  - A Null-terminated Unicode string that is the name of the\r
 Arguments:\r
 \r
   VariableName  - A Null-terminated Unicode string that is the name of the\r
-                  vendor¡¯s variable.\r
+                  vendor's variable.\r
   VendorGuid    - A unique identifier for the vendor.\r
   Attributes    - Attributes bitmask to set for the variable.\r
   DataSize      - The size in bytes of the Data buffer.\r
   VendorGuid    - A unique identifier for the vendor.\r
   Attributes    - Attributes bitmask to set for the variable.\r
   DataSize      - The size in bytes of the Data buffer.\r
@@ -272,7 +272,7 @@ EfiGetNextHighMonotonicCount (
 \r
 Routine Description:\r
 \r
 \r
 Routine Description:\r
 \r
-  Returns the next high 32 bits of the platform¡¯s monotonic counter.\r
+  Returns the next high 32 bits of the platform's monotonic counter.\r
 \r
 Arguments:\r
 \r
 \r
 Arguments:\r
 \r
index 13fa9d7e0a70d87e214f43be35c1bbc54dc5c16a..159a53fc0eb8390c63b8ec5c4b8123b31d3438dd 100644 (file)
@@ -81,7 +81,7 @@ Routine Description:
 Arguments:\r
 \r
   Time          - A pointer to storage to receive a snapshot of the current time.\r
 Arguments:\r
 \r
   Time          - A pointer to storage to receive a snapshot of the current time.\r
-  Capabilities  - An optional pointer to a buffer to receive the real time clock device¡¯s\r
+  Capabilities  - An optional pointer to a buffer to receive the real time clock device's\r
                   capabilities.\r
 \r
 Returns:\r
                   capabilities.\r
 \r
 Returns:\r
@@ -209,7 +209,7 @@ Routine Description:
 Arguments:\r
 \r
   VariableName  - A Null-terminated Unicode string that is the name of the\r
 Arguments:\r
 \r
   VariableName  - A Null-terminated Unicode string that is the name of the\r
-                  vendor¡¯s variable.\r
+                  vendor's variable.\r
   VendorGuid    - A unique identifier for the vendor.\r
   Attributes    - If not NULL, a pointer to the memory location to return the\r
                   attributes bitmask for the variable.\r
   VendorGuid    - A unique identifier for the vendor.\r
   Attributes    - If not NULL, a pointer to the memory location to return the\r
                   attributes bitmask for the variable.\r
@@ -305,7 +305,7 @@ Routine Description:
 Arguments:\r
 \r
   VariableName  - A Null-terminated Unicode string that is the name of the\r
 Arguments:\r
 \r
   VariableName  - A Null-terminated Unicode string that is the name of the\r
-                  vendor¡¯s variable.\r
+                  vendor's variable.\r
   VendorGuid    - A unique identifier for the vendor.\r
   Attributes    - Attributes bitmask to set for the variable.\r
   DataSize      - The size in bytes of the Data buffer.\r
   VendorGuid    - A unique identifier for the vendor.\r
   Attributes    - Attributes bitmask to set for the variable.\r
   DataSize      - The size in bytes of the Data buffer.\r
@@ -343,7 +343,7 @@ EfiGetNextHighMonotonicCount (
 \r
 Routine Description:\r
 \r
 \r
 Routine Description:\r
 \r
-  Returns the next high 32 bits of the platform¡¯s monotonic counter.\r
+  Returns the next high 32 bits of the platform's monotonic counter.\r
 \r
 Arguments:\r
 \r
 \r
 Arguments:\r
 \r
index 6117a3245e4862bb5a59fd632bcbd6cb36691215..8aff74d64e6391796ab59954495106809ac401b1 100644 (file)
@@ -1,43 +1,43 @@
-/*++
-
-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:
-
-  DevicePathDriver.c
-
-Abstract:
-
-  Device Path Driver to produce DevPathUtilities Protocol, DevPathFromText Protocol
-  and DevPathToText Protocol.
-
---*/
-
-#include "DevicePath.h"
-
-EFI_HANDLE  mDevicePathHandle = NULL;
-
+/*++\r
+\r
+Copyright (c) 2006, Intel Corporation                                                         \r
+All rights reserved. This program and the accompanying materials                          \r
+are licensed and made available under the terms and conditions of the BSD License         \r
+which accompanies this distribution.  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
+\r
+Module Name:\r
+\r
+  DevicePathDriver.c\r
+\r
+Abstract:\r
+\r
+  Device Path Driver to produce DevPathUtilities Protocol, DevPathFromText Protocol\r
+  and DevPathToText Protocol.\r
+\r
+--*/\r
+\r
+#include "DevicePath.h"\r
+\r
+EFI_HANDLE  mDevicePathHandle = NULL;\r
+\r
 GLOBAL_REMOVE_IF_UNREFERENCED const EFI_DEVICE_PATH_UTILITIES_PROTOCOL mDevicePathUtilities = {\r
 GLOBAL_REMOVE_IF_UNREFERENCED const EFI_DEVICE_PATH_UTILITIES_PROTOCOL mDevicePathUtilities = {\r
-  GetDevicePathSizeProtocolInterface,
-  DuplicateDevicePathProtocolInterface,
-  AppendDevicePathProtocolInterface,
-  AppendDeviceNodeProtocolInterface,
-  AppendDevicePathInstanceProtocolInterface,
-  GetNextDevicePathInstanceProtocolInterface,
-  IsDevicePathMultiInstanceProtocolInterface,
-  CreateDeviceNodeProtocolInterface
+  GetDevicePathSizeProtocolInterface,\r
+  DuplicateDevicePathProtocolInterface,\r
+  AppendDevicePathProtocolInterface,\r
+  AppendDeviceNodeProtocolInterface,\r
+  AppendDevicePathInstanceProtocolInterface,\r
+  GetNextDevicePathInstanceProtocolInterface,\r
+  IsDevicePathMultiInstanceProtocolInterface,\r
+  CreateDeviceNodeProtocolInterface\r
 };\r
 \r
 GLOBAL_REMOVE_IF_UNREFERENCED const EFI_DEVICE_PATH_TO_TEXT_PROTOCOL   mDevicePathToText = {\r
 };\r
 \r
 GLOBAL_REMOVE_IF_UNREFERENCED const EFI_DEVICE_PATH_TO_TEXT_PROTOCOL   mDevicePathToText = {\r
-  ConvertDeviceNodeToText,
-  ConvertDevicePathToText
+  ConvertDeviceNodeToText,\r
+  ConvertDevicePathToText\r
 };\r
 \r
 GLOBAL_REMOVE_IF_UNREFERENCED const EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL mDevicePathFromText = {\r
 };\r
 \r
 GLOBAL_REMOVE_IF_UNREFERENCED const EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL mDevicePathFromText = {\r
@@ -45,65 +45,65 @@ GLOBAL_REMOVE_IF_UNREFERENCED const EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL mDevicePa
   ConvertTextToDevicePath  \r
 };\r
 \r
   ConvertTextToDevicePath  \r
 };\r
 \r
-GLOBAL_REMOVE_IF_UNREFERENCED const EFI_GUID mEfiDevicePathMessagingUartFlowControlGuid = DEVICE_PATH_MESSAGING_UART_FLOW_CONTROL;
-GLOBAL_REMOVE_IF_UNREFERENCED const EFI_GUID mEfiDevicePathMessagingSASGuid             = DEVICE_PATH_MESSAGING_SAS;
-
-EFI_STATUS
-EFIAPI
-DevicePathEntryPoint (
-  IN EFI_HANDLE           ImageHandle,
-  IN EFI_SYSTEM_TABLE     *SystemTable
-  )
-/*++
-
-  Routine Description:
-    Entry point for EFI drivers.
-
-  Arguments:
-   ImageHandle - EFI_HANDLE
-   SystemTable - EFI_SYSTEM_TABLE
-
-  Returns:
-    EFI_SUCCESS
-    others
-
---*/
-{
-  EFI_STATUS  Status;
-  Status = EFI_UNSUPPORTED;
+GLOBAL_REMOVE_IF_UNREFERENCED const EFI_GUID mEfiDevicePathMessagingUartFlowControlGuid = DEVICE_PATH_MESSAGING_UART_FLOW_CONTROL;\r
+GLOBAL_REMOVE_IF_UNREFERENCED const EFI_GUID mEfiDevicePathMessagingSASGuid             = DEVICE_PATH_MESSAGING_SAS;\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+DevicePathEntryPoint (\r
+  IN EFI_HANDLE           ImageHandle,\r
+  IN EFI_SYSTEM_TABLE     *SystemTable\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Entry point for EFI drivers.\r
+\r
+  Arguments:\r
+   ImageHandle - EFI_HANDLE\r
+   SystemTable - EFI_SYSTEM_TABLE\r
+\r
+  Returns:\r
+    EFI_SUCCESS\r
+    others\r
+\r
+--*/\r
+{\r
+  EFI_STATUS  Status;\r
\r
+  Status = EFI_UNSUPPORTED;\r
   if (FeaturePcdGet (PcdDevicePathSupportDevicePathToText)) {\r
     if (FeaturePcdGet (PcdDevicePathSupportDevicePathFromText)) {\r
   if (FeaturePcdGet (PcdDevicePathSupportDevicePathToText)) {\r
     if (FeaturePcdGet (PcdDevicePathSupportDevicePathFromText)) {\r
-      Status = gBS->InstallMultipleProtocolInterfaces (
-                      &mDevicePathHandle,
-                      &gEfiDevicePathUtilitiesProtocolGuid, &mDevicePathUtilities,
-                      &gEfiDevicePathToTextProtocolGuid,    &mDevicePathToText,
-                      &gEfiDevicePathFromTextProtocolGuid,  &mDevicePathFromText,
-                      NULL
-                      );
+      Status = gBS->InstallMultipleProtocolInterfaces (\r
+                      &mDevicePathHandle,\r
+                      &gEfiDevicePathUtilitiesProtocolGuid, &mDevicePathUtilities,\r
+                      &gEfiDevicePathToTextProtocolGuid,    &mDevicePathToText,\r
+                      &gEfiDevicePathFromTextProtocolGuid,  &mDevicePathFromText,\r
+                      NULL\r
+                      );\r
     } else {\r
     } else {\r
-      Status = gBS->InstallMultipleProtocolInterfaces (
-                      &mDevicePathHandle,
-                      &gEfiDevicePathUtilitiesProtocolGuid, &mDevicePathUtilities,
-                      &gEfiDevicePathToTextProtocolGuid,    &mDevicePathToText,
-                      NULL
-                      );
+      Status = gBS->InstallMultipleProtocolInterfaces (\r
+                      &mDevicePathHandle,\r
+                      &gEfiDevicePathUtilitiesProtocolGuid, &mDevicePathUtilities,\r
+                      &gEfiDevicePathToTextProtocolGuid,    &mDevicePathToText,\r
+                      NULL\r
+                      );\r
     }\r
   } else {\r
     if (FeaturePcdGet (PcdDevicePathSupportDevicePathFromText)) {\r
     }\r
   } else {\r
     if (FeaturePcdGet (PcdDevicePathSupportDevicePathFromText)) {\r
-      Status = gBS->InstallMultipleProtocolInterfaces (
-                      &mDevicePathHandle,
-                      &gEfiDevicePathUtilitiesProtocolGuid, &mDevicePathUtilities,
-                      &gEfiDevicePathFromTextProtocolGuid,  &mDevicePathFromText,
-                      NULL
-                      );
+      Status = gBS->InstallMultipleProtocolInterfaces (\r
+                      &mDevicePathHandle,\r
+                      &gEfiDevicePathUtilitiesProtocolGuid, &mDevicePathUtilities,\r
+                      &gEfiDevicePathFromTextProtocolGuid,  &mDevicePathFromText,\r
+                      NULL\r
+                      );\r
     } else {\r
     } else {\r
-      Status = gBS->InstallMultipleProtocolInterfaces (
-                      &mDevicePathHandle,
-                      &gEfiDevicePathUtilitiesProtocolGuid, &mDevicePathUtilities,
-                      NULL
-                      );
+      Status = gBS->InstallMultipleProtocolInterfaces (\r
+                      &mDevicePathHandle,\r
+                      &gEfiDevicePathUtilitiesProtocolGuid, &mDevicePathUtilities,\r
+                      NULL\r
+                      );\r
     }\r
   }\r
     }\r
   }\r
-  return Status;
-}
+  return Status;\r
+}\r
index cd49359c7622327e106d7142cd668eb4bb4ba92a..d9dcd44352d534404b8b6f8e7ff8c1928574acbe 100644 (file)
-/*++
-
-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:
-
-  DevicePathFromText.c
-
-Abstract:
-
-  DevicePathFromText protocol as defined in the UEFI 2.0 specification.
-
---*/
-
-#include "DevicePath.h"
-
-CHAR16 *
-StrDuplicate (
-  IN CONST CHAR16  *Src
-  )
-/*++
-
-  Routine Description:
-    Duplicate a string
-
-  Arguments:
-    Src - Source string
-
-  Returns:
-    Duplicated string
-
---*/
-{
-  UINTN   Length;
-  CHAR16  *ReturnStr;
-
-  Length = StrLen ((CHAR16 *) Src);
-
-  ReturnStr = AllocateCopyPool ((Length + 1) * sizeof (CHAR16), (VOID *) Src);
-
-  return ReturnStr;
-}
-
-CHAR16 *
-GetParamByNodeName (
-  IN CHAR16 *Str,
-  IN CHAR16 *NodeName
-  )
-/*++
-
-  Routine Description:
-    Get parameter in a pair of parentheses follow the given node name.
-    For example, given the "Pci(0,1)" and NodeName "Pci", it returns "0,1".
-
-  Arguments:
-    Str      - Device Path Text
-    NodeName - Name of the node
-
-  Returns:
-    Parameter text for the node
-
---*/
-{
-  CHAR16  *ParamStr;
-  CHAR16  *StrPointer;
-  UINTN   NodeNameLength;
-  UINTN   ParameterLength;
-
-  //
-  // Check whether the node name matchs
-  //
-  NodeNameLength = StrLen (NodeName);
-  if (CompareMem (Str, NodeName, NodeNameLength * sizeof (CHAR16)) != 0) {
-    return NULL;
-  }
-
-  ParamStr = Str + NodeNameLength;
-  if (!IS_LEFT_PARENTH (*ParamStr)) {
-    return NULL;
-  }
-
-  //
-  // Skip the found '(' and find first occurrence of ')'
-  //
-  ParamStr++;
-  ParameterLength = 0;
-  StrPointer = ParamStr;
-  while (!IS_NULL (*StrPointer)) {
-    if (IS_RIGHT_PARENTH (*StrPointer)) {
-      break;
-    }
-    StrPointer++;
-    ParameterLength++;
-  }
-  if (IS_NULL (*StrPointer)) {
-    //
-    // ')' not found
-    //
-    return NULL;
-  }
-
-  ParamStr = AllocateCopyPool ((ParameterLength + 1) * sizeof (CHAR16), ParamStr);
-  if (ParamStr == NULL) {
-    return NULL;
-  }
-  //
-  // Terminate the parameter string
-  //
-  ParamStr[ParameterLength] = L'\0';
-
-  return ParamStr;
-}
-
-CHAR16 *
-SplitStr (
-  IN OUT CHAR16 **List,
-  IN     CHAR16 Separator
-  )
-/*++
-
-  Routine Description:
-    Get current sub-string from a string list, before return
-    the list header is moved to next sub-string. The sub-string is separated
-    by the specified character. For example, the separator is ',', the string
-    list is "2,0,3", it returns "2", the remain list move to "2,3"
-
-  Arguments:
-    List       - A string list separated by the specified separator
-    Separator  - The separator character
-
-  Returns:
-    pointer    - The current sub-string
-
---*/
-{
-  CHAR16  *Str;
-  CHAR16  *ReturnStr;
-
-  Str = *List;
-  ReturnStr = Str;
-
-  if (IS_NULL (*Str)) {
-    return ReturnStr;
-  }
-
-  //
-  // Find first occurrence of the separator
-  //
-  while (!IS_NULL (*Str)) {
-    if (*Str == Separator) {
-      break;
-    }
-    Str++;
-  }
-
-  if (*Str == Separator) {
-    //
-    // Find a sub-string, terminate it
-    //
-    *Str = L'\0';
-    Str++;
-  }
-
-  //
-  // Move to next sub-string
-  //
-  *List = Str;
-
-  return ReturnStr;
-}
-
-CHAR16 *
-GetNextParamStr (
-  IN OUT CHAR16 **List
-  )
-{
-  //
-  // The separator is comma
-  //
-  return SplitStr (List, L',');
-}
-
-CHAR16 *
-GetNextDeviceNodeStr (
-  IN OUT CHAR16   **DevicePath,
-  OUT    BOOLEAN  *IsInstanceEnd
-  )
-/*++
-
-  Routine Description:
-    Get one device node from entire device path text.
-
-  Arguments:
-    Str           - The entire device path text string
-    IsInstanceEnd - This node is the end of a device path instance
-
-  Returns:
-    a pointer     - A device node text
-    NULL          - No more device node available
-
---*/
-{
-  CHAR16  *Str;
-  CHAR16  *ReturnStr;
-  UINTN   ParenthesesStack;
-
-  Str = *DevicePath;
-  if (IS_NULL (*Str)) {
-    return NULL;
-  }
-
-  //
-  // Skip the leading '/', '(', ')' and ','
-  //
-  while (!IS_NULL (*Str)) {
-    if (!IS_SLASH (*Str) &&
-        !IS_COMMA (*Str) &&
-        !IS_LEFT_PARENTH (*Str) &&
-        !IS_RIGHT_PARENTH (*Str)) {
-      break;
-    }
-    Str++;
-  }
-
-  ReturnStr = Str;
-
-  //
-  // Scan for the separator of this device node, '/' or ','
-  //
-  ParenthesesStack = 0;
-  while (!IS_NULL (*Str)) {
-    if ((IS_COMMA (*Str) || IS_SLASH (*Str)) && (ParenthesesStack == 0)) {
-      break;
-    }
-
-    if (IS_LEFT_PARENTH (*Str)) {
-      ParenthesesStack++;
-    } else if (IS_RIGHT_PARENTH (*Str)) {
-      ParenthesesStack--;
-    }
-
-    Str++;
-  }
-
-  if (ParenthesesStack != 0) {
-    //
-    // The '(' doesn't pair with ')', invalid device path text
-    //
-    return NULL;
-  }
-
-  if (IS_COMMA (*Str)) {
-    *IsInstanceEnd = TRUE;
-    *Str = L'\0';
-    Str++;
-  } else {
-    *IsInstanceEnd = FALSE;
-    if (!IS_NULL (*Str)) {
-      *Str = L'\0';
-      Str++;
-    }
-  }
-
-  *DevicePath = Str;
-
-  return ReturnStr;
-}
-
-BOOLEAN
-IsHexDigit (
-  OUT UINT8      *Digit,
-  IN  CHAR16      Char
-  )
-/*++
-
-  Routine Description:
-    Determines if a Unicode character is a hexadecimal digit.
-    The test is case insensitive.
-
-  Arguments:
-    Digit - Pointer to byte that receives the value of the hex character.
-    Char  - Unicode character to test.
-
-  Returns:
-    TRUE  - If the character is a hexadecimal digit.
-    FALSE - Otherwise.
-
---*/
-{
-  if ((Char >= L'0') && (Char <= L'9')) {
-    *Digit = (UINT8) (Char - L'0');
-    return TRUE;
-  }
-
-  if ((Char >= L'A') && (Char <= L'F')) {
-    *Digit = (UINT8) (Char - L'A' + 0x0A);
-    return TRUE;
-  }
-
-  if ((Char >= L'a') && (Char <= L'f')) {
-    *Digit = (UINT8) (Char - L'a' + 0x0A);
-    return TRUE;
-  }
-
-  return FALSE;
-}
-
-CHAR16
-NibbleToHexChar (
-  IN UINT8      Nibble
-  )
-/*++
-
-  Routine Description:
-    Converts the low nibble of a byte  to hex unicode character.
-
-  Arguments:
-    Nibble - lower nibble of a byte.
-
-  Returns:
-    Hex unicode character.
-
---*/
-{
-  Nibble &= 0x0F;
-  if (Nibble <= 0x9) {
-    return (CHAR16)(Nibble + L'0');
-  }
-
-  return (CHAR16)(Nibble - 0xA + L'A');
-}
-
-EFI_STATUS
-HexStringToBuf (
-  IN OUT UINT8                     *Buf,   
-  IN OUT UINTN                     *Len,
-  IN     CHAR16                    *Str,
-  OUT    UINTN                     *ConvertedStrLen  OPTIONAL
-  )
-/*++
-
-  Routine Description:
-    Converts Unicode string to binary buffer.
-    The conversion may be partial.
-    The first character in the string that is not hex digit stops the conversion.
-    At a minimum, any blob of data could be represented as a hex string.
-
-  Arguments:
-    Buf    - Pointer to buffer that receives the data.
-    Len    - Length in bytes of the buffer to hold converted data.
-                If routine return with EFI_SUCCESS, containing length of converted data.
-                If routine return with EFI_BUFFER_TOO_SMALL, containg length of buffer desired.
-    Str    - String to be converted from.
-    ConvertedStrLen - Length of the Hex String consumed.
-
-  Returns:
-    EFI_SUCCESS: Routine Success.
-    EFI_BUFFER_TOO_SMALL: The buffer is too small to hold converted data.
-    EFI_
-
---*/
-{
-  UINTN       HexCnt;
-  UINTN       Idx;
-  UINTN       BufferLength;
-  UINT8       Digit;
-  UINT8       Byte;
-
-  //
-  // Find out how many hex characters the string has.
-  //
-  for (Idx = 0, HexCnt = 0; IsHexDigit (&Digit, Str[Idx]); Idx++, HexCnt++);
-
-  if (HexCnt == 0) {
-    *Len = 0;
-    return EFI_SUCCESS;
-  }
-  //
-  // Two Unicode characters make up 1 buffer byte. Round up.
-  //
-  BufferLength = (HexCnt + 1) / 2; 
-
-  //
-  // Test if  buffer is passed enough.
-  //
-  if (BufferLength > (*Len)) {
-    *Len = BufferLength;
-    return EFI_BUFFER_TOO_SMALL;
-  }
-
-  *Len = BufferLength;
-
-  for (Idx = 0; Idx < HexCnt; Idx++) {
-
-    IsHexDigit (&Digit, Str[HexCnt - 1 - Idx]);
-
-    //
-    // For odd charaters, write the lower nibble for each buffer byte,
-    // and for even characters, the upper nibble.
-    //
-    if ((Idx & 1) == 0) {
-      Byte = Digit;
-    } else {
-      Byte = Buf[Idx / 2];
-      Byte &= 0x0F;
-      Byte |= Digit << 4;
-    }
-
-    Buf[Idx / 2] = Byte;
-  }
-
-  if (ConvertedStrLen != NULL) {
-    *ConvertedStrLen = HexCnt;
-  }
-
-  return EFI_SUCCESS;
-}
-
-EFI_STATUS
-BufToHexString (
-  IN OUT CHAR16                    *Str,
-  IN OUT UINTN                     *HexStringBufferLength,
-  IN     UINT8                     *Buf,
-  IN     UINTN                     Len
-  )
-/*++
-
-  Routine Description:
-    Converts binary buffer to Unicode string.
-    At a minimum, any blob of data could be represented as a hex string.
-
-  Arguments:
-    Str - Pointer to the string.
-    HexStringBufferLength - Length in bytes of buffer to hold the hex string. Includes tailing '\0' character.
-                                        If routine return with EFI_SUCCESS, containing length of hex string buffer.
-                                        If routine return with EFI_BUFFER_TOO_SMALL, containg length of hex string buffer desired.
-    Buf - Buffer to be converted from.
-    Len - Length in bytes of the buffer to be converted.
-
-  Returns:
-    EFI_SUCCESS: Routine success.
-    EFI_BUFFER_TOO_SMALL: The hex string buffer is too small.
-
---*/
-{
-  UINTN       Idx;
-  UINT8       Byte;
-  UINTN       StrLen;
-
-  //
-  // Make sure string is either passed or allocate enough.
-  // It takes 2 Unicode characters (4 bytes) to represent 1 byte of the binary buffer.
-  // Plus the Unicode termination character.
-  //
-  StrLen = Len * 2;
-  if (StrLen > ((*HexStringBufferLength) - 1)) {
-    *HexStringBufferLength = StrLen + 1;
-    return EFI_BUFFER_TOO_SMALL;
-  }
-
-  *HexStringBufferLength = StrLen + 1;
-  //
-  // Ends the string.
-  //
-  Str[StrLen] = L'\0'; 
-
-  for (Idx = 0; Idx < Len; Idx++) {
-
-    Byte = Buf[Idx];
-    Str[StrLen - 1 - Idx * 2] = NibbleToHexChar (Byte);
-    Str[StrLen - 2 - Idx * 2] = NibbleToHexChar ((UINT8)(Byte >> 4));
-  }
-
-  return EFI_SUCCESS;
-}
-
-CHAR16 *
-TrimHexStr (
-  IN CHAR16  *Str
-  )
-/*++
-
-  Routine Description:
-    Skip the leading white space and '0x' or '0X' of a hex string
-
-  Arguments:
-    Str  -  The hex string
-
-  Returns:
-
---*/
-{
-  //
-  // skip preceeding white space
-  //
-  while (*Str && *Str == ' ') {
-    Str += 1;
-  }
-  //
-  // skip preceeding zeros
-  //
-  while (*Str && *Str == '0') {
-    Str += 1;
-  }
-  //
-  // skip preceeding white space
-  //
-  if (*Str && (*Str == 'x' || *Str == 'X')) {
-    Str += 1;
-  }
-
-  return Str;
-}
-
-UINTN
-Xtoi (
-  IN CHAR16  *Str
-  )
-/*++
-
-Routine Description:
-
-  Convert hex string to uint
-
-Arguments:
-
-  Str  -  The string
-  
-Returns:
-
---*/
-{
-  UINTN   Rvalue;
-  UINTN   Length;
-
-  ASSERT (Str != NULL);
-
-  //
-  // convert hex digits
-  //
-  Rvalue = 0;
-  Length = sizeof (UINTN);
-  HexStringToBuf ((UINT8 *) &Rvalue, &Length, TrimHexStr (Str), NULL);
-
-  return Rvalue;
-}
-
-VOID
-Xtoi64 (
-  IN CHAR16  *Str,
-  IN UINT64  *Data
-  )
-/*++
-
-Routine Description:
-
-  Convert hex string to 64 bit data.
-
-Arguments:
-
-  Str  -  The string
-  
-Returns:
-
---*/
-{
-  UINTN  Length;
-
-  *Data  = 0;
-  Length = sizeof (UINT64);
-  HexStringToBuf ((UINT8 *) Data, &Length, TrimHexStr (Str), NULL);
-}
-
-UINTN
-Atoi (
-  IN CHAR16  *str
-  )
-/*++
-
-Routine Description:
-
-  Convert decimal string to uint
-
-Arguments:
-
-  Str  -  The string
-  
-Returns:
-
---*/
-{
-  UINTN   Rvalue;
-  CHAR16  Char;
-  UINTN   High;
-  UINTN   Low;
-
-  ASSERT (str != NULL);
-
-  High = (UINTN) -1 / 10;
-  Low  = (UINTN) -1 % 10;
-  //
-  // skip preceeding white space
-  //
-  while (*str && *str == ' ') {
-    str += 1;
-  }
-  //
-  // convert digits
-  //
-  Rvalue = 0;
-  Char = *(str++);
-  while (Char) {
-    if (Char >= '0' && Char <= '9') {
-      if ((Rvalue > High || Rvalue == High) && (Char - '0' > (INTN) Low)) {
-        return (UINTN) -1;
-      }
-
-      Rvalue = (Rvalue * 10) + Char - '0';
-    } else {
-      break;
-    }
-
-    Char = *(str++);
-  }
-
-  return Rvalue;
-}
-
-EFI_STATUS 
-StrToBuf (
-  OUT UINT8    *Buf,
-  IN  UINTN    BufferLength,
-  IN  CHAR16   *Str
-  )
-{
-  UINTN       Index;
-  UINTN       StrLength;
-  UINT8       Digit;
-  UINT8       Byte;
-
-  //
-  // Two hex char make up one byte
-  //
-  StrLength = BufferLength * sizeof (CHAR16);
-
-  for(Index = 0; Index < StrLength; Index++, Str++) {
-
-    IsHexDigit (&Digit, *Str);
-
-    //
-    // For odd charaters, write the upper nibble for each buffer byte,
-    // and for even characters, the lower nibble.
-    //
-    if ((Index & 1) == 0) {
-      Byte = Digit << 4;
-    } else {
-      Byte = Buf[Index / 2];
-      Byte &= 0xF0;
-      Byte |= Digit;
-    }
-
-    Buf[Index / 2] = Byte;
-  }
-
-  return EFI_SUCCESS;
-}
-
-EFI_STATUS
-StrToGuid (
-  IN  CHAR16   *Str,
-  OUT EFI_GUID *Guid
-  )
-{
-  UINTN       BufferLength;
-  UINTN       ConvertedStrLen;
-  EFI_STATUS  Status;
-
-  BufferLength = sizeof (Guid->Data1);
-  Status = HexStringToBuf ((UINT8 *) &Guid->Data1, &BufferLength, Str, &ConvertedStrLen);
-  if (EFI_ERROR (Status)) {
-    return Status;
-  }
-  Str += ConvertedStrLen;
-  if (IS_HYPHEN (*Str)) {
-    Str++;   
-  } else {
-    return EFI_UNSUPPORTED;
-  }
-
-  BufferLength = sizeof (Guid->Data2);
-  Status = HexStringToBuf ((UINT8 *) &Guid->Data2, &BufferLength, Str, &ConvertedStrLen);
-  if (EFI_ERROR (Status)) {
-    return Status;
-  }
-  Str += ConvertedStrLen;
-  if (IS_HYPHEN (*Str)) {
-    Str++;
-  } else {
-    return EFI_UNSUPPORTED;
-  }
-
-  BufferLength = sizeof (Guid->Data3);
-  Status = HexStringToBuf ((UINT8 *) &Guid->Data3, &BufferLength, Str, &ConvertedStrLen);
-  if (EFI_ERROR (Status)) {
-    return Status;
-  }
-  Str += ConvertedStrLen;
-  if (IS_HYPHEN (*Str)) {
-    Str++;
-  } else {
-    return EFI_UNSUPPORTED;
-  }
-
-  StrToBuf (&Guid->Data4[0], 2, Str);
-  //
-  // Skip 2 byte hex chars
-  //
-  Str += 2 * 2;
-
-  if (IS_HYPHEN (*Str)) {
-    Str++;
-  } else {
-    return EFI_UNSUPPORTED;
-  }
-  StrToBuf (&Guid->Data4[2], 6, Str);
-
-  return EFI_SUCCESS;
-}
-
-VOID
-StrToIPv4Addr (
-  IN OUT CHAR16           **Str,
-  OUT    EFI_IPv4_ADDRESS *IPv4Addr
-  )
-{
-  UINTN  Index;
-
-  for (Index = 0; Index < 4; Index++) {
-    IPv4Addr->Addr[Index] = (UINT8) Atoi (SplitStr (Str, L'.'));
-  }
-}
-
-VOID
-StrToIPv6Addr (
-  IN OUT CHAR16           **Str,
-  OUT    EFI_IPv6_ADDRESS *IPv6Addr
-  )
-{
-  UINTN  Index;
-  UINT16 Data;
-
-  for (Index = 0; Index < 8; Index++) {
-    Data = (UINT16) Xtoi (SplitStr (Str, L':'));
-    IPv6Addr->Addr[Index * 2] = (UINT8) (Data >> 8);
-    IPv6Addr->Addr[Index * 2 + 1] = (UINT8) (Data & 0xff);
-  }
-}
-
-VOID
-StrToAscii (
-  IN     CHAR16 *Str,
-  IN OUT CHAR8  **AsciiStr
-  )
-{
-  CHAR8 *Dest;
-
-  Dest = *AsciiStr;
-  while (!IS_NULL (*Str)) {
-    *(Dest++) = (CHAR8) *(Str++);
-  }
-  *Dest = 0;
-
-  //
-  // Return the string next to it
-  //
-  *AsciiStr = Dest + 1;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextPci (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  CHAR16          *FunctionStr;
-  CHAR16          *DeviceStr;
-  PCI_DEVICE_PATH *Pci;
-
-  FunctionStr = GetNextParamStr (&TextDeviceNode);
-  DeviceStr   = GetNextParamStr (&TextDeviceNode);
-  Pci         = (PCI_DEVICE_PATH *) CreateDeviceNode (
-                                      HARDWARE_DEVICE_PATH,
-                                      HW_PCI_DP,
-                                      sizeof (PCI_DEVICE_PATH)
-                                      );
-
-  Pci->Function = (UINT8) Xtoi (FunctionStr);
-  Pci->Device   = (UINT8) Xtoi (DeviceStr);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) Pci;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextPcCard (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  CHAR16              *FunctionNumberStr;
-  PCCARD_DEVICE_PATH  *Pccard;
-
-  FunctionNumberStr = GetNextParamStr (&TextDeviceNode);
-  Pccard            = (PCCARD_DEVICE_PATH *) CreateDeviceNode (
-                                               HARDWARE_DEVICE_PATH,
-                                               HW_PCCARD_DP,
-                                               sizeof (PCCARD_DEVICE_PATH)
-                                               );
-
-  Pccard->FunctionNumber  = (UINT8) Xtoi (FunctionNumberStr);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) Pccard;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextMemoryMapped (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  CHAR16              *StartingAddressStr;
-  CHAR16              *EndingAddressStr;
-  MEMMAP_DEVICE_PATH  *MemMap;
-
-  StartingAddressStr = GetNextParamStr (&TextDeviceNode);
-  EndingAddressStr   = GetNextParamStr (&TextDeviceNode);
-  MemMap             = (MEMMAP_DEVICE_PATH *) CreateDeviceNode (
-                                               HARDWARE_DEVICE_PATH,
-                                               HW_MEMMAP_DP,
-                                               sizeof (MEMMAP_DEVICE_PATH)
-                                               );
-
-  MemMap->MemoryType  = 0;
-
-  Xtoi64 (StartingAddressStr, &MemMap->StartingAddress);
-  Xtoi64 (EndingAddressStr, &MemMap->EndingAddress);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) MemMap;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-ConvertFromTextVendor (
-  IN CHAR16 *TextDeviceNode,
-  IN UINT8  Type,
-  IN UINT8  SubType
-  )
-{
-  CHAR16              *GuidStr;
-  CHAR16              *DataStr;
-  UINTN               Length;
-  VENDOR_DEVICE_PATH  *Vendor;
-
-  GuidStr = GetNextParamStr (&TextDeviceNode);
-
-  DataStr = GetNextParamStr (&TextDeviceNode);
-  Length  = StrLen (DataStr);
-  //
-  // Two hex characters make up 1 buffer byte
-  //
-  Length  = (Length + 1) / 2;
-
-  Vendor  = (VENDOR_DEVICE_PATH *) CreateDeviceNode (
-                                     Type,
-                                     SubType,
-                                     sizeof (VENDOR_DEVICE_PATH) + (UINT16) Length
-                                     );
-
-  StrToGuid (GuidStr, &Vendor->Guid);
-  StrToBuf (((UINT8 *) Vendor) + sizeof (VENDOR_DEVICE_PATH), Length, DataStr);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) Vendor;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextVenHw (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  return ConvertFromTextVendor (
-           TextDeviceNode,
-           HARDWARE_DEVICE_PATH,
-           HW_VENDOR_DP
-           );
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextCtrl (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  CHAR16                  *ControllerStr;
-  CONTROLLER_DEVICE_PATH  *Controller;
-
-  ControllerStr = GetNextParamStr (&TextDeviceNode);
-  Controller    = (CONTROLLER_DEVICE_PATH *) CreateDeviceNode (
-                                               HARDWARE_DEVICE_PATH,
-                                               HW_CONTROLLER_DP,
-                                               sizeof (CONTROLLER_DEVICE_PATH)
-                                               );
-  Controller->ControllerNumber = (UINT32) Xtoi (ControllerStr);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) Controller;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextAcpi (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  CHAR16                *HIDStr;
-  CHAR16                *UIDStr;
-  ACPI_HID_DEVICE_PATH  *Acpi;
-
-  HIDStr = GetNextParamStr (&TextDeviceNode);
-  UIDStr = GetNextParamStr (&TextDeviceNode);
-  Acpi   = (ACPI_HID_DEVICE_PATH *) CreateDeviceNode (
-                                      ACPI_DEVICE_PATH,
-                                      ACPI_DP,
-                                      sizeof (ACPI_HID_DEVICE_PATH)
-                                      );
-
-  if ((HIDStr[0] == L'P') && (HIDStr[1] == L'N') && (HIDStr[2] == L'P')) {
-    HIDStr += 3;
-  }
-
-  Acpi->HID = EISA_PNP_ID (Xtoi (HIDStr));
-  Acpi->UID = (UINT32) Xtoi (UIDStr);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) Acpi;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-ConvertFromTextAcpi (
-  IN CHAR16 *TextDeviceNode,
-  IN UINT32  Hid
-  )
-{
-  CHAR16                *UIDStr;
-  ACPI_HID_DEVICE_PATH  *Acpi;
-
-  UIDStr = GetNextParamStr (&TextDeviceNode);
-  Acpi   = (ACPI_HID_DEVICE_PATH *) CreateDeviceNode (
-                                      ACPI_DEVICE_PATH,
-                                      ACPI_DP,
-                                      sizeof (ACPI_HID_DEVICE_PATH)
-                                      );
-
-  Acpi->HID = Hid;
-  Acpi->UID = (UINT32) Xtoi (UIDStr);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) Acpi;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextPciRoot (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  return ConvertFromTextAcpi (TextDeviceNode, 0x0a0341d0);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextFloppy (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  return ConvertFromTextAcpi (TextDeviceNode, 0x060441d0);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextKeyboard (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  return ConvertFromTextAcpi (TextDeviceNode, 0x030141d0);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextSerial (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  return ConvertFromTextAcpi (TextDeviceNode, 0x050141d0);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextParallelPort (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  return ConvertFromTextAcpi (TextDeviceNode, 0x040141d0);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextAcpiEx (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  CHAR16                                  *HIDStr;
-  CHAR16                                  *CIDStr;
-  CHAR16                                  *UIDStr;
-  CHAR16                                  *HIDSTRStr;
-  CHAR16                                  *CIDSTRStr;
-  CHAR16                                  *UIDSTRStr;
-  CHAR8                                   *AsciiStr;
-  UINT16                                  Length;
-  ACPI_EXTENDED_HID_DEVICE_PATH_WITH_STR  *AcpiExt;
-
-  HIDStr    = GetNextParamStr (&TextDeviceNode);
-  CIDStr    = GetNextParamStr (&TextDeviceNode);
-  UIDStr    = GetNextParamStr (&TextDeviceNode);
-  HIDSTRStr = GetNextParamStr (&TextDeviceNode);
-  CIDSTRStr = GetNextParamStr (&TextDeviceNode);
-  UIDSTRStr = GetNextParamStr (&TextDeviceNode);
-  Length    = sizeof (ACPI_EXTENDED_HID_DEVICE_PATH) + 
-                  (UINT16) StrLen (HIDSTRStr) + 1 +
-                  (UINT16) StrLen (UIDSTRStr) + 1 +
-                  (UINT16) StrLen (CIDSTRStr) + 1;
-  AcpiExt = (ACPI_EXTENDED_HID_DEVICE_PATH_WITH_STR *) CreateDeviceNode (
-                                                         ACPI_DEVICE_PATH,
-                                                         ACPI_EXTENDED_DP,
-                                                         Length
-                                                         );
-
-  if ((HIDStr[0] == L'P') && (HIDStr[1] == L'N') && (HIDStr[2] == L'P')) {
-    HIDStr += 3;
-    AcpiExt->HID = EISA_PNP_ID (Xtoi (HIDStr));
-  } else {
-    AcpiExt->HID = (UINT32) Xtoi (HIDStr);
-  }
-
-  AcpiExt->UID  = (UINT32) Xtoi (UIDStr);
-  AcpiExt->CID  = (UINT32) Xtoi (CIDStr);
-
-  AsciiStr = AcpiExt->HidUidCidStr;
-  StrToAscii (HIDSTRStr, &AsciiStr);
-  StrToAscii (UIDSTRStr, &AsciiStr);
-  StrToAscii (CIDSTRStr, &AsciiStr);
-  
-  return (EFI_DEVICE_PATH_PROTOCOL *) AcpiExt;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextAcpiExp (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  CHAR16                                  *HIDStr;
-  CHAR16                                  *CIDStr;
-  CHAR16                                  *UIDSTRStr;
-  CHAR8                                   *AsciiStr;
-  UINT16                                  Length;
-  ACPI_EXTENDED_HID_DEVICE_PATH_WITH_STR  *AcpiExt;
-
-  HIDStr    = GetNextParamStr (&TextDeviceNode);
-  CIDStr    = GetNextParamStr (&TextDeviceNode);
-  UIDSTRStr = GetNextParamStr (&TextDeviceNode);
-  Length    = sizeof (ACPI_EXTENDED_HID_DEVICE_PATH) + (UINT16) StrLen (UIDSTRStr) + 3;
-  AcpiExt   = (ACPI_EXTENDED_HID_DEVICE_PATH_WITH_STR *) CreateDeviceNode (
-                                                           ACPI_DEVICE_PATH,
-                                                           ACPI_EXTENDED_DP,
-                                                           Length
-                                                           );
-
-  if ((HIDStr[0] == L'P') && (HIDStr[1] == L'N') && (HIDStr[2] == L'P')) {
-    HIDStr += 3;
-    AcpiExt->HID = EISA_PNP_ID (Xtoi (HIDStr));
-  } else {
-    AcpiExt->HID = (UINT32) Xtoi (HIDStr);
-  }
-
-  AcpiExt->UID = 0;
-  AcpiExt->CID = (UINT32) Xtoi (CIDStr);
-
-  AsciiStr = AcpiExt->HidUidCidStr;
-  //
-  // HID string is NULL
-  //
-  *AsciiStr = 0;
-  //
-  // Convert UID string
-  //
-  AsciiStr++;
-  StrToAscii (UIDSTRStr, &AsciiStr);
-  //
-  // CID string is NULL
-  //
-  *AsciiStr = 0;
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) AcpiExt;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextAta (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  CHAR16            *PrimarySecondaryStr;
-  CHAR16            *SlaveMasterStr;
-  CHAR16            *LunStr;
-  ATAPI_DEVICE_PATH *Atapi;
-
-  Atapi = (ATAPI_DEVICE_PATH *) CreateDeviceNode (
-                                  MESSAGING_DEVICE_PATH,
-                                  MSG_ATAPI_DP,
-                                  sizeof (ATAPI_DEVICE_PATH)
-                                  );
-
-  PrimarySecondaryStr     = GetNextParamStr (&TextDeviceNode);
-  SlaveMasterStr          = GetNextParamStr (&TextDeviceNode);
-  LunStr                  = GetNextParamStr (&TextDeviceNode);
-
-  Atapi->PrimarySecondary = (StrCmp (PrimarySecondaryStr, L"Primary") == 0) ? (UINT8) 0 : (UINT8) 1;
-  Atapi->SlaveMaster      = (StrCmp (SlaveMasterStr, L"Master") == 0) ? (UINT8) 0 : (UINT8) 1;
-  Atapi->Lun              = (UINT16) Xtoi (LunStr);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) Atapi;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextScsi (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  CHAR16            *PunStr;
-  CHAR16            *LunStr;
-  SCSI_DEVICE_PATH  *Scsi;
-
-  PunStr = GetNextParamStr (&TextDeviceNode);
-  LunStr = GetNextParamStr (&TextDeviceNode);
-  Scsi   = (SCSI_DEVICE_PATH *) CreateDeviceNode (
-                                   MESSAGING_DEVICE_PATH,
-                                   MSG_SCSI_DP,
-                                   sizeof (SCSI_DEVICE_PATH)
-                                   );
-
-  Scsi->Pun = (UINT16) Xtoi (PunStr);
-  Scsi->Lun = (UINT16) Xtoi (LunStr);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) Scsi;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextFibre (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  CHAR16                    *WWNStr;
-  CHAR16                    *LunStr;
-  FIBRECHANNEL_DEVICE_PATH  *Fibre;
-
-  WWNStr = GetNextParamStr (&TextDeviceNode);
-  LunStr = GetNextParamStr (&TextDeviceNode);
-  Fibre  = (FIBRECHANNEL_DEVICE_PATH *) CreateDeviceNode (
-                                          MESSAGING_DEVICE_PATH,
-                                          MSG_FIBRECHANNEL_DP,
-                                          sizeof (FIBRECHANNEL_DEVICE_PATH)
-                                          );
-
-  Fibre->Reserved = 0;
-  Xtoi64 (WWNStr, &Fibre->WWN);
-  Xtoi64 (LunStr, &Fibre->Lun);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) Fibre;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromText1394 (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  CHAR16            *GuidStr;
-  F1394_DEVICE_PATH *F1394;
-
-  GuidStr = GetNextParamStr (&TextDeviceNode);
-  F1394  = (F1394_DEVICE_PATH *) CreateDeviceNode (
-                                   MESSAGING_DEVICE_PATH,
-                                   MSG_1394_DP,
-                                   sizeof (F1394_DEVICE_PATH)
-                                   );
-
-  F1394->Reserved = 0;
-  Xtoi64 (GuidStr, &F1394->Guid);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) F1394;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextUsb (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  CHAR16          *PortStr;
-  CHAR16          *InterfaceStr;
-  USB_DEVICE_PATH *Usb;
-
-  PortStr               = GetNextParamStr (&TextDeviceNode);
-  InterfaceStr          = GetNextParamStr (&TextDeviceNode);
-  Usb                   = (USB_DEVICE_PATH *) CreateDeviceNode (
-                                                MESSAGING_DEVICE_PATH,
-                                                MSG_USB_DP,
-                                                sizeof (USB_DEVICE_PATH)
-                                                );
-
-  Usb->ParentPortNumber = (UINT8) Xtoi (PortStr);
-  Usb->InterfaceNumber  = (UINT8) Xtoi (InterfaceStr);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) Usb;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextI2O (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  CHAR16          *TIDStr;
-  I2O_DEVICE_PATH *I2O;
-
-  TIDStr    = GetNextParamStr (&TextDeviceNode);
-  I2O       = (I2O_DEVICE_PATH *) CreateDeviceNode (
-                                    MESSAGING_DEVICE_PATH,
-                                    MSG_I2O_DP,
-                                    sizeof (I2O_DEVICE_PATH)
-                                    );
-
-  I2O->Tid  = (UINT32) Xtoi (TIDStr);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) I2O;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextInfiniband (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  CHAR16                  *FlagsStr;
-  CHAR16                  *GuidStr;
-  CHAR16                  *SidStr;
-  CHAR16                  *TidStr;
-  CHAR16                  *DidStr;
-  EFI_GUID                PortGid;
-  INFINIBAND_DEVICE_PATH  *InfiniBand;
-
-  FlagsStr   = GetNextParamStr (&TextDeviceNode);
-  GuidStr    = GetNextParamStr (&TextDeviceNode);
-  SidStr     = GetNextParamStr (&TextDeviceNode);
-  TidStr     = GetNextParamStr (&TextDeviceNode);
-  DidStr     = GetNextParamStr (&TextDeviceNode);
-  InfiniBand = (INFINIBAND_DEVICE_PATH *) CreateDeviceNode (
-                                            MESSAGING_DEVICE_PATH,
-                                            MSG_INFINIBAND_DP,
-                                            sizeof (INFINIBAND_DEVICE_PATH)
-                                            );
-
-  InfiniBand->ResourceFlags = (UINT32) Xtoi (FlagsStr);
-  StrToGuid (GuidStr, &PortGid);
-  CopyMem (InfiniBand->PortGid, &PortGid, sizeof (EFI_GUID));
-  Xtoi64 (SidStr, &InfiniBand->ServiceId);
-  Xtoi64 (TidStr, &InfiniBand->TargetPortId);
-  Xtoi64 (DidStr, &InfiniBand->DeviceId);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) InfiniBand;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextVenMsg (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  return ConvertFromTextVendor (
-            TextDeviceNode,
-            MESSAGING_DEVICE_PATH,
-            MSG_VENDOR_DP
-            );
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextVenPcAnsi (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  VENDOR_DEVICE_PATH  *Vendor;
-
-  Vendor = (VENDOR_DEVICE_PATH *) CreateDeviceNode (
-                                    MESSAGING_DEVICE_PATH,
-                                    MSG_VENDOR_DP,
-                                    sizeof (VENDOR_DEVICE_PATH));
-  CopyGuid (&Vendor->Guid, &gEfiPcAnsiGuid);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) Vendor;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextVenVt100 (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  VENDOR_DEVICE_PATH  *Vendor;
-
-  Vendor = (VENDOR_DEVICE_PATH *) CreateDeviceNode (
-                                    MESSAGING_DEVICE_PATH,
-                                    MSG_VENDOR_DP,
-                                    sizeof (VENDOR_DEVICE_PATH));
-  CopyGuid (&Vendor->Guid, &gEfiVT100Guid);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) Vendor;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextVenVt100Plus (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  VENDOR_DEVICE_PATH  *Vendor;
-
-  Vendor = (VENDOR_DEVICE_PATH *) CreateDeviceNode (
-                                    MESSAGING_DEVICE_PATH,
-                                    MSG_VENDOR_DP,
-                                    sizeof (VENDOR_DEVICE_PATH));
-  CopyGuid (&Vendor->Guid, &gEfiVT100PlusGuid);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) Vendor;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextVenUtf8 (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  VENDOR_DEVICE_PATH  *Vendor;
-
-  Vendor = (VENDOR_DEVICE_PATH *) CreateDeviceNode (
-                                    MESSAGING_DEVICE_PATH,
-                                    MSG_VENDOR_DP,
-                                    sizeof (VENDOR_DEVICE_PATH));
-  CopyGuid (&Vendor->Guid, &gEfiVTUTF8Guid);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) Vendor;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextUartFlowCtrl (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  CHAR16                        *ValueStr;
-  UART_FLOW_CONTROL_DEVICE_PATH *UartFlowControl;
-
-  ValueStr        = GetNextParamStr (&TextDeviceNode);
-  UartFlowControl = (UART_FLOW_CONTROL_DEVICE_PATH *) CreateDeviceNode (
-                                                        MESSAGING_DEVICE_PATH,
-                                                        MSG_VENDOR_DP,
-                                                        sizeof (UART_FLOW_CONTROL_DEVICE_PATH)
-                                                        );
-
-  CopyGuid (&UartFlowControl->Guid, &mEfiDevicePathMessagingUartFlowControlGuid);
-  if (StrCmp (ValueStr, L"XonXoff") == 0) {
-    UartFlowControl->FlowControlMap = 2;
-  } else if (StrCmp (ValueStr, L"Hardware") == 0) {
-    UartFlowControl->FlowControlMap = 1;
-  } else {
-    UartFlowControl->FlowControlMap = 0;
-  }
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) UartFlowControl;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextSAS (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  CHAR16          *AddressStr;
-  CHAR16          *LunStr;
-  CHAR16          *RTPStr;
-  CHAR16          *SASSATAStr;
-  CHAR16          *LocationStr;
-  CHAR16          *ConnectStr;
-  CHAR16          *DriveBayStr;
-  CHAR16          *ReservedStr;
-  UINT16          Info;
-  SAS_DEVICE_PATH *Sas;
-
-  AddressStr  = GetNextParamStr (&TextDeviceNode);
-  LunStr      = GetNextParamStr (&TextDeviceNode);
-  RTPStr      = GetNextParamStr (&TextDeviceNode);
-  SASSATAStr  = GetNextParamStr (&TextDeviceNode);
-  LocationStr = GetNextParamStr (&TextDeviceNode);
-  ConnectStr  = GetNextParamStr (&TextDeviceNode);
-  DriveBayStr = GetNextParamStr (&TextDeviceNode);
-  ReservedStr = GetNextParamStr (&TextDeviceNode);
-  Info        = 0x0000;
-  Sas         = (SAS_DEVICE_PATH *) CreateDeviceNode (
-                                       MESSAGING_DEVICE_PATH,
-                                       MSG_VENDOR_DP,
-                                       sizeof (SAS_DEVICE_PATH)
-                                       );
-
-  CopyGuid (&Sas->Guid, &mEfiDevicePathMessagingSASGuid);
-  Xtoi64 (AddressStr, &Sas->SasAddress);
-  Xtoi64 (LunStr, &Sas->Lun);
-  Sas->RelativeTargetPort = (UINT16) Xtoi (RTPStr);
-  if (StrCmp (SASSATAStr, L"NoTopology") == 0)
-    ;
-  else {
-    if (StrCmp (DriveBayStr, L"0") == 0) {
-      Info |= 0x0001;
-    } else {
-      Info |= 0x0002;
-      Info |= (Xtoi (DriveBayStr) << 8);
-    }
-
-    if (StrCmp (SASSATAStr, L"SATA") == 0) {
-      Info |= 0x0010;
-    }
-
-    if (StrCmp (LocationStr, L"External") == 0) {
-      Info |= 0x0020;
-    }
-
-    if (StrCmp (ConnectStr, L"Expanded") == 0) {
-      Info |= 0x0040;
-    }
-  }
-
-  Sas->DeviceTopology = Info;
-  Sas->Reserved       = (UINT32) Xtoi (ReservedStr);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) Sas;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextDebugPort (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  VENDOR_DEFINED_MESSAGING_DEVICE_PATH  *Vend;
-
-  Vend = (VENDOR_DEFINED_MESSAGING_DEVICE_PATH *) CreateDeviceNode (
-                                                    MESSAGING_DEVICE_PATH,
-                                                    MSG_VENDOR_DP,
-                                                    sizeof (VENDOR_DEFINED_MESSAGING_DEVICE_PATH)
-                                                    );
-
-  CopyGuid (&Vend->Guid, &gEfiDebugPortProtocolGuid);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) Vend;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextMAC (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  CHAR16                *AddressStr;
-  CHAR16                *IfTypeStr;
-  UINTN                 Length;
-  MAC_ADDR_DEVICE_PATH  *MAC;
-
-  AddressStr    = GetNextParamStr (&TextDeviceNode);
-  IfTypeStr     = GetNextParamStr (&TextDeviceNode);
-  MAC           = (MAC_ADDR_DEVICE_PATH *) CreateDeviceNode (
-                                              MESSAGING_DEVICE_PATH,
-                                              MSG_MAC_ADDR_DP,
-                                              sizeof (MAC_ADDR_DEVICE_PATH)
-                                              );
-
-  MAC->IfType   = (UINT8) Xtoi (IfTypeStr);
-
-  Length = sizeof (EFI_MAC_ADDRESS);
-  StrToBuf (&MAC->MacAddress.Addr[0], Length, AddressStr);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) MAC;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextIPv4 (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  CHAR16            *RemoteIPStr;
-  CHAR16            *ProtocolStr;
-  CHAR16            *TypeStr;
-  CHAR16            *LocalIPStr;
-  IPv4_DEVICE_PATH  *IPv4;
-
-  RemoteIPStr           = GetNextParamStr (&TextDeviceNode);
-  ProtocolStr           = GetNextParamStr (&TextDeviceNode);
-  TypeStr               = GetNextParamStr (&TextDeviceNode);
-  LocalIPStr            = GetNextParamStr (&TextDeviceNode);
-  IPv4                  = (IPv4_DEVICE_PATH *) CreateDeviceNode (
-                                                 MESSAGING_DEVICE_PATH,
-                                                 MSG_IPv4_DP,
-                                                 sizeof (IPv4_DEVICE_PATH)
-                                                 );
-
-  StrToIPv4Addr (&RemoteIPStr, &IPv4->RemoteIpAddress);
-  IPv4->Protocol = (StrCmp (ProtocolStr, L"UDP") == 0) ? (UINT16) 0 : (UINT16) 1;
-  if (StrCmp (TypeStr, L"Static") == 0) {
-    IPv4->StaticIpAddress = TRUE;
-  } else {
-    IPv4->StaticIpAddress = FALSE;
-  }
-
-  StrToIPv4Addr (&LocalIPStr, &IPv4->LocalIpAddress);
-
-  IPv4->LocalPort      = 0;
-  IPv4->RemotePort     = 0;
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) IPv4;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextIPv6 (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  CHAR16            *RemoteIPStr;
-  CHAR16            *ProtocolStr;
-  CHAR16            *TypeStr;
-  CHAR16            *LocalIPStr;
-  IPv6_DEVICE_PATH  *IPv6;
-
-  RemoteIPStr           = GetNextParamStr (&TextDeviceNode);
-  ProtocolStr           = GetNextParamStr (&TextDeviceNode);
-  TypeStr               = GetNextParamStr (&TextDeviceNode);
-  LocalIPStr            = GetNextParamStr (&TextDeviceNode);
-  IPv6                  = (IPv6_DEVICE_PATH *) CreateDeviceNode (
-                                                 MESSAGING_DEVICE_PATH,
-                                                 MSG_IPv6_DP,
-                                                 sizeof (IPv6_DEVICE_PATH)
-                                                 );
-
-  StrToIPv6Addr (&RemoteIPStr, &IPv6->RemoteIpAddress);
-  IPv6->Protocol        = (StrCmp (ProtocolStr, L"UDP") == 0) ? (UINT16) 0 : (UINT16) 1;
-  if (StrCmp (TypeStr, L"Static") == 0) {
-    IPv6->StaticIpAddress = TRUE;
-  } else {
-    IPv6->StaticIpAddress = FALSE;
-  }
-
-  StrToIPv6Addr (&LocalIPStr, &IPv6->LocalIpAddress);
-
-  IPv6->LocalPort       = 0;
-  IPv6->RemotePort      = 0;
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) IPv6;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextUart (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  CHAR16            *BaudStr;
-  CHAR16            *DataBitsStr;
-  CHAR16            *ParityStr;
-  CHAR16            *StopBitsStr;
-  UART_DEVICE_PATH  *Uart;
-
-  BaudStr         = GetNextParamStr (&TextDeviceNode);
-  DataBitsStr     = GetNextParamStr (&TextDeviceNode);
-  ParityStr       = GetNextParamStr (&TextDeviceNode);
-  StopBitsStr     = GetNextParamStr (&TextDeviceNode);
-  Uart            = (UART_DEVICE_PATH *) CreateDeviceNode (
-                                           MESSAGING_DEVICE_PATH,
-                                           MSG_UART_DP,
-                                           sizeof (UART_DEVICE_PATH)
-                                           );
-
-  Uart->BaudRate  = (StrCmp (BaudStr, L"DEFAULT") == 0) ? 115200 : Atoi (BaudStr);
-  Uart->DataBits  = (StrCmp (DataBitsStr, L"DEFAULT") == 0) ? (UINT8) 8 : (UINT8) Atoi (DataBitsStr);
-  switch (*ParityStr) {
-  case L'D':
-    Uart->Parity = 0;
-    break;
-
-  case L'N':
-    Uart->Parity = 1;
-    break;
-
-  case L'E':
-    Uart->Parity = 2;
-    break;
-
-  case L'O':
-    Uart->Parity = 3;
-    break;
-
-  case L'M':
-    Uart->Parity = 4;
-    break;
-
-  case L'S':
-    Uart->Parity = 5;
-
-  default:
-    Uart->Parity = 0xff;
-  }
-
-  if (StrCmp (StopBitsStr, L"D") == 0) {
-    Uart->StopBits = (UINT8) 0;
-  } else if (StrCmp (StopBitsStr, L"1") == 0) {
-    Uart->StopBits = (UINT8) 1;
-  } else if (StrCmp (StopBitsStr, L"1.5") == 0) {
-    Uart->StopBits = (UINT8) 2;
-  } else if (StrCmp (StopBitsStr, L"2") == 0) {
-    Uart->StopBits = (UINT8) 3;
-  } else {
-    Uart->StopBits = 0xff;
-  }
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) Uart;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-ConvertFromTextUsbClass (
-  IN CHAR16         *TextDeviceNode,
-  IN USB_CLASS_TEXT *UsbClassText
-  )
-{
-  CHAR16                *VIDStr;
-  CHAR16                *PIDStr;
-  CHAR16                *ClassStr;
-  CHAR16                *SubClassStr;
-  CHAR16                *ProtocolStr;
-  USB_CLASS_DEVICE_PATH *UsbClass;
-
-  UsbClass    = (USB_CLASS_DEVICE_PATH *) CreateDeviceNode (
-                                            MESSAGING_DEVICE_PATH,
-                                            MSG_USB_CLASS_DP,
-                                            sizeof (USB_CLASS_DEVICE_PATH)
-                                            );
-
-  VIDStr      = GetNextParamStr (&TextDeviceNode);
-  PIDStr      = GetNextParamStr (&TextDeviceNode);
-  if (UsbClassText->ClassExist) {
-    ClassStr = GetNextParamStr (&TextDeviceNode);
-    UsbClass->DeviceClass = (UINT8) Xtoi (ClassStr);
-  } else {
-    UsbClass->DeviceClass = UsbClassText->Class;
-  }
-  if (UsbClassText->SubClassExist) {
-    SubClassStr = GetNextParamStr (&TextDeviceNode);
-    UsbClass->DeviceSubClass = (UINT8) Xtoi (SubClassStr);
-  } else {
-    UsbClass->DeviceSubClass = UsbClassText->SubClass;
-  }  
-
-  ProtocolStr = GetNextParamStr (&TextDeviceNode);
-
-  UsbClass->VendorId        = (UINT16) Xtoi (VIDStr);
-  UsbClass->ProductId       = (UINT16) Xtoi (PIDStr);
-  UsbClass->DeviceProtocol  = (UINT8) Xtoi (ProtocolStr);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) UsbClass;
-}
-
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextUsbClass (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  USB_CLASS_TEXT  UsbClassText;
-
-  UsbClassText.ClassExist    = TRUE;
-  UsbClassText.SubClassExist = TRUE;
-
-  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextUsbAudio (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  USB_CLASS_TEXT  UsbClassText;
-
-  UsbClassText.ClassExist    = FALSE;
-  UsbClassText.Class         = USB_CLASS_AUDIO;
-  UsbClassText.SubClassExist = TRUE;
-
-  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextUsbCDCControl (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  USB_CLASS_TEXT  UsbClassText;
-
-  UsbClassText.ClassExist    = FALSE;
-  UsbClassText.Class         = USB_CLASS_CDCCONTROL;
-  UsbClassText.SubClassExist = TRUE;
-
-  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextUsbHID (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  USB_CLASS_TEXT  UsbClassText;
-
-  UsbClassText.ClassExist    = FALSE;
-  UsbClassText.Class         = USB_CLASS_HID;
-  UsbClassText.SubClassExist = TRUE;
-
-  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextUsbImage (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  USB_CLASS_TEXT  UsbClassText;
-
-  UsbClassText.ClassExist    = FALSE;
-  UsbClassText.Class         = USB_CLASS_IMAGE;
-  UsbClassText.SubClassExist = TRUE;
-
-  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextUsbPrinter (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  USB_CLASS_TEXT  UsbClassText;
-
-  UsbClassText.ClassExist    = FALSE;
-  UsbClassText.Class         = USB_CLASS_PRINTER;
-  UsbClassText.SubClassExist = TRUE;
-
-  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextUsbMassStorage (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  USB_CLASS_TEXT  UsbClassText;
-
-  UsbClassText.ClassExist    = FALSE;
-  UsbClassText.Class         = USB_CLASS_MASS_STORAGE;
-  UsbClassText.SubClassExist = TRUE;
-
-  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextUsbHub (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  USB_CLASS_TEXT  UsbClassText;
-
-  UsbClassText.ClassExist    = FALSE;
-  UsbClassText.Class         = USB_CLASS_HUB;
-  UsbClassText.SubClassExist = TRUE;
-
-  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextUsbCDCData (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  USB_CLASS_TEXT  UsbClassText;
-
-  UsbClassText.ClassExist    = FALSE;
-  UsbClassText.Class         = USB_CLASS_CDCDATA;
-  UsbClassText.SubClassExist = TRUE;
-
-  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextUsbSmartCard (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  USB_CLASS_TEXT  UsbClassText;
-
-  UsbClassText.ClassExist    = FALSE;
-  UsbClassText.Class         = USB_CLASS_SMART_CARD;
-  UsbClassText.SubClassExist = TRUE;
-
-  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextUsbVideo (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  USB_CLASS_TEXT  UsbClassText;
-
-  UsbClassText.ClassExist    = FALSE;
-  UsbClassText.Class         = USB_CLASS_VIDEO;
-  UsbClassText.SubClassExist = TRUE;
-
-  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextUsbDiagnostic (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  USB_CLASS_TEXT  UsbClassText;
-
-  UsbClassText.ClassExist    = FALSE;
-  UsbClassText.Class         = USB_CLASS_DIAGNOSTIC;
-  UsbClassText.SubClassExist = TRUE;
-
-  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextUsbWireless (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  USB_CLASS_TEXT  UsbClassText;
-
-  UsbClassText.ClassExist    = FALSE;
-  UsbClassText.Class         = USB_CLASS_WIRELESS;
-  UsbClassText.SubClassExist = TRUE;
-
-  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextUsbDeviceFirmwareUpdate (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  USB_CLASS_TEXT  UsbClassText;
-
-  UsbClassText.ClassExist    = FALSE;
-  UsbClassText.Class         = USB_CLASS_RESERVE;
-  UsbClassText.SubClassExist = FALSE;
-  UsbClassText.SubClass      = USB_SUBCLASS_FW_UPDATE;
-
-  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextUsbIrdaBridge (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  USB_CLASS_TEXT  UsbClassText;
-
-  UsbClassText.ClassExist    = FALSE;
-  UsbClassText.Class         = USB_CLASS_RESERVE;
-  UsbClassText.SubClassExist = FALSE;
-  UsbClassText.SubClass      = USB_SUBCLASS_IRDA_BRIDGE;
-
-  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextUsbTestAndMeasurement (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  USB_CLASS_TEXT  UsbClassText;
-
-  UsbClassText.ClassExist    = FALSE;
-  UsbClassText.Class         = USB_CLASS_RESERVE;
-  UsbClassText.SubClassExist = FALSE;
-  UsbClassText.SubClass      = USB_SUBCLASS_TEST;
-
-  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextUsbWwid (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  CHAR16                *VIDStr;
-  CHAR16                *PIDStr;
-  CHAR16                *InterfaceNumStr;
-  USB_WWID_DEVICE_PATH  *UsbWwid;
-
-  VIDStr                    = GetNextParamStr (&TextDeviceNode);
-  PIDStr                    = GetNextParamStr (&TextDeviceNode);
-  InterfaceNumStr           = GetNextParamStr (&TextDeviceNode);
-  UsbWwid                   = (USB_WWID_DEVICE_PATH *) CreateDeviceNode (
-                                                         MESSAGING_DEVICE_PATH,
-                                                         MSG_USB_WWID_DP,
-                                                         sizeof (USB_WWID_DEVICE_PATH)
-                                                         );
-
-  UsbWwid->VendorId         = (UINT16) Xtoi (VIDStr);
-  UsbWwid->ProductId        = (UINT16) Xtoi (PIDStr);
-  UsbWwid->InterfaceNumber  = (UINT16) Xtoi (InterfaceNumStr);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) UsbWwid;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextUnit (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  CHAR16                          *LunStr;
-  DEVICE_LOGICAL_UNIT_DEVICE_PATH *LogicalUnit;
-
-  LunStr      = GetNextParamStr (&TextDeviceNode);
-  LogicalUnit = (DEVICE_LOGICAL_UNIT_DEVICE_PATH *) CreateDeviceNode (
-                                                      MESSAGING_DEVICE_PATH,
-                                                      MSG_DEVICE_LOGICAL_UNIT_DP,
-                                                      sizeof (DEVICE_LOGICAL_UNIT_DEVICE_PATH)
-                                                      );
-
-  LogicalUnit->Lun  = (UINT8) Xtoi (LunStr);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) LogicalUnit;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextiSCSI (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  UINT16                      Options;
-  CHAR16                      *NameStr;
-  CHAR16                      *PortalGroupStr;
-  CHAR16                      *LunStr;
-  CHAR16                      *HeaderDigestStr;
-  CHAR16                      *DataDigestStr;
-  CHAR16                      *AuthenticationStr;
-  CHAR16                      *ProtocolStr;
-  ISCSI_DEVICE_PATH_WITH_NAME *iSCSI;
-
-  NameStr           = GetNextParamStr (&TextDeviceNode);
-  PortalGroupStr    = GetNextParamStr (&TextDeviceNode);
-  LunStr            = GetNextParamStr (&TextDeviceNode);
-  HeaderDigestStr   = GetNextParamStr (&TextDeviceNode);
-  DataDigestStr     = GetNextParamStr (&TextDeviceNode);
-  AuthenticationStr = GetNextParamStr (&TextDeviceNode);
-  ProtocolStr       = GetNextParamStr (&TextDeviceNode);
-  iSCSI             = (ISCSI_DEVICE_PATH_WITH_NAME *) CreateDeviceNode (
-                                                        MESSAGING_DEVICE_PATH,
-                                                        MSG_ISCSI_DP,
-                                                        sizeof (ISCSI_DEVICE_PATH_WITH_NAME) + (UINT16) (StrLen (NameStr) * 2)
-                                                        );
-
-  StrCpy (iSCSI->iSCSITargetName, NameStr);
-  iSCSI->TargetPortalGroupTag = (UINT16) Xtoi (PortalGroupStr);
-  Xtoi64 (LunStr, &iSCSI->Lun);
-
-  Options = 0x0000;
-  if (StrCmp (HeaderDigestStr, L"CRC32C") == 0) {
-    Options |= 0x0002;
-  }
-
-  if (StrCmp (DataDigestStr, L"CRC32C") == 0) {
-    Options |= 0x0008;
-  }
-
-  if (StrCmp (AuthenticationStr, L"None") == 0) {
-    Options |= 0x0800;
-  }
-
-  if (StrCmp (AuthenticationStr, L"CHAP_UNI") == 0) {
-    Options |= 0x1000;
-  }
-
-  iSCSI->LoginOption      = (UINT16) Options;
-
-  iSCSI->NetworkProtocol  = (UINT16) StrCmp (ProtocolStr, L"TCP");
-  iSCSI->Reserved         = (UINT16) 0;
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) iSCSI;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextHD (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  CHAR16                *PartitionStr;
-  CHAR16                *TypeStr;
-  CHAR16                *SignatureStr;
-  CHAR16                *StartStr;
-  CHAR16                *SizeStr;
-  UINT32                Signature32;
-  EFI_GUID              SignatureGuid;
-  HARDDRIVE_DEVICE_PATH *Hd;
-
-  PartitionStr        = GetNextParamStr (&TextDeviceNode);
-  TypeStr             = GetNextParamStr (&TextDeviceNode);
-  SignatureStr        = GetNextParamStr (&TextDeviceNode);
-  StartStr            = GetNextParamStr (&TextDeviceNode);
-  SizeStr             = GetNextParamStr (&TextDeviceNode);
-  Hd                  = (HARDDRIVE_DEVICE_PATH *) CreateDeviceNode (
-                                                    MEDIA_DEVICE_PATH,
-                                                    MEDIA_HARDDRIVE_DP,
-                                                    sizeof (HARDDRIVE_DEVICE_PATH)
-                                                    );
-
-  Hd->PartitionNumber = (UINT32) Atoi (PartitionStr);
-
-  ZeroMem (Hd->Signature, 16);
-  Hd->MBRType = (UINT8) 0;
-
-  if (StrCmp (TypeStr, L"None") == 0) {
-    Hd->SignatureType = (UINT8) 0;
-  } else if (StrCmp (TypeStr, L"MBR") == 0) {
-    Hd->SignatureType = SIGNATURE_TYPE_MBR;
-    Hd->MBRType       = 0x01;
-
-    Signature32       = (UINT32) Xtoi (SignatureStr);
-    CopyMem (Hd->Signature, &Signature32, sizeof (UINT32));
-  } else if (StrCmp (TypeStr, L"GUID") == 0) {
-    Hd->SignatureType = SIGNATURE_TYPE_GUID;
-    Hd->MBRType       = 0x02;
-
-    StrToGuid (SignatureStr, &SignatureGuid);
-    CopyMem (Hd->Signature, &SignatureGuid, sizeof (EFI_GUID));
-  } else {
-    Hd->SignatureType = 0xff;
-
-  }
-
-  Xtoi64 (StartStr, &Hd->PartitionStart);
-  Xtoi64 (SizeStr, &Hd->PartitionSize);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) Hd;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextCDROM (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  CHAR16            *EntryStr;
-  CHAR16            *StartStr;
-  CHAR16            *SizeStr;
-  CDROM_DEVICE_PATH *CDROM;
-
-  EntryStr              = GetNextParamStr (&TextDeviceNode);
-  StartStr              = GetNextParamStr (&TextDeviceNode);
-  SizeStr               = GetNextParamStr (&TextDeviceNode);
-  CDROM                 = (CDROM_DEVICE_PATH *) CreateDeviceNode (
-                                                  MEDIA_DEVICE_PATH,
-                                                  MEDIA_CDROM_DP,
-                                                  sizeof (CDROM_DEVICE_PATH)
-                                                  );
-
-  CDROM->BootEntry      = (UINT32) Xtoi (EntryStr);
-  Xtoi64 (StartStr, &CDROM->PartitionStart);
-  Xtoi64 (SizeStr, &CDROM->PartitionSize);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) CDROM;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextVenMEDIA (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  return ConvertFromTextVendor (
-           TextDeviceNode,
-           MEDIA_DEVICE_PATH,
-           MEDIA_VENDOR_DP
-           );
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextFilePath (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  FILEPATH_DEVICE_PATH  *File;
-
-  File = (FILEPATH_DEVICE_PATH *) CreateDeviceNode (
-                                    MEDIA_DEVICE_PATH,
-                                    MEDIA_FILEPATH_DP,
-                                    sizeof (FILEPATH_DEVICE_PATH) + (UINT16) (StrLen (TextDeviceNode) * 2)
-                                    );
-
-  StrCpy (File->PathName, TextDeviceNode);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) File;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextMedia (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  CHAR16                      *GuidStr;
-  MEDIA_PROTOCOL_DEVICE_PATH  *Media;
-
-  GuidStr = GetNextParamStr (&TextDeviceNode);
-  Media   = (MEDIA_PROTOCOL_DEVICE_PATH *) CreateDeviceNode (
-                                             MEDIA_DEVICE_PATH,
-                                             MEDIA_PROTOCOL_DP,
-                                             sizeof (MEDIA_PROTOCOL_DEVICE_PATH)
-                                             );
-
-  StrToGuid (GuidStr, &Media->Protocol);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) Media;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DevPathFromTextBBS (
-  IN CHAR16 *TextDeviceNode
-  )
-{
-  CHAR16              *TypeStr;
-  CHAR16              *IdStr;
-  CHAR16              *FlagsStr;
-  UINT8               *AsciiStr;
-  BBS_BBS_DEVICE_PATH *Bbs;
-
-  TypeStr   = GetNextParamStr (&TextDeviceNode);
-  IdStr     = GetNextParamStr (&TextDeviceNode);
-  FlagsStr  = GetNextParamStr (&TextDeviceNode);
-  Bbs       = (BBS_BBS_DEVICE_PATH *) CreateDeviceNode (
-                                        BBS_DEVICE_PATH,
-                                        BBS_BBS_DP,
-                                        sizeof (BBS_BBS_DEVICE_PATH) + (UINT16) (StrLen (IdStr))
-                                        );
-
-  if (StrCmp (TypeStr, L"Floppy") == 0) {
-    Bbs->DeviceType = BBS_TYPE_FLOPPY;
-  } else if (StrCmp (TypeStr, L"HD") == 0) {
-    Bbs->DeviceType = BBS_TYPE_HARDDRIVE;
-  } else if (StrCmp (TypeStr, L"CDROM") == 0) {
-    Bbs->DeviceType = BBS_TYPE_CDROM;
-  } else if (StrCmp (TypeStr, L"PCMCIA") == 0) {
-    Bbs->DeviceType = BBS_TYPE_PCMCIA;
-  } else if (StrCmp (TypeStr, L"USB") == 0) {
-    Bbs->DeviceType = BBS_TYPE_USB;
-  } else if (StrCmp (TypeStr, L"Network") == 0) {
-    Bbs->DeviceType = BBS_TYPE_EMBEDDED_NETWORK;
-  } else {
-    Bbs->DeviceType = BBS_TYPE_UNKNOWN;
-  }
-
-  AsciiStr = (UINT8 *) Bbs->String;
-  StrToAscii (IdStr, (CHAR8 **) &AsciiStr);
-
-  Bbs->StatusFlag = (UINT16) Xtoi (FlagsStr);
-
-  return (EFI_DEVICE_PATH_PROTOCOL *) Bbs;
-}
-
-GLOBAL_REMOVE_IF_UNREFERENCED DEVICE_PATH_FROM_TEXT_TABLE DevPathFromTextTable[] = {
-  {L"Pci", DevPathFromTextPci},
-  {L"PcCard", DevPathFromTextPcCard},
-  {L"MemoryMapped", DevPathFromTextMemoryMapped},
-  {L"VenHw", DevPathFromTextVenHw},
-  {L"Ctrl", DevPathFromTextCtrl},
-  {L"Acpi", DevPathFromTextAcpi},
-  {L"PciRoot", DevPathFromTextPciRoot},
-  {L"Floppy", DevPathFromTextFloppy},
-  {L"Keyboard", DevPathFromTextKeyboard},
-  {L"Serial", DevPathFromTextSerial},
-  {L"ParallelPort", DevPathFromTextParallelPort},
-  {L"AcpiEx", DevPathFromTextAcpiEx},
-  {L"AcpiExp", DevPathFromTextAcpiExp},
-  {L"Ata", DevPathFromTextAta},
-  {L"Scsi", DevPathFromTextScsi},
-  {L"Fibre", DevPathFromTextFibre},
-  {L"I1394", DevPathFromText1394},
-  {L"USB", DevPathFromTextUsb},
-  {L"I2O", DevPathFromTextI2O},
-  {L"Infiniband", DevPathFromTextInfiniband},
-  {L"VenMsg", DevPathFromTextVenMsg},
-  {L"VenPcAnsi", DevPathFromTextVenPcAnsi},
-  {L"VenVt100", DevPathFromTextVenVt100},
-  {L"VenVt100Plus", DevPathFromTextVenVt100Plus},
-  {L"VenUtf8", DevPathFromTextVenUtf8},
-  {L"UartFlowCtrl", DevPathFromTextUartFlowCtrl},
-  {L"SAS", DevPathFromTextSAS},
-  {L"DebugPort", DevPathFromTextDebugPort},
-  {L"MAC", DevPathFromTextMAC},
-  {L"IPv4", DevPathFromTextIPv4},
-  {L"IPv6", DevPathFromTextIPv6},
-  {L"Uart", DevPathFromTextUart},
-  {L"UsbClass", DevPathFromTextUsbClass},
-  {L"UsbAudio", DevPathFromTextUsbAudio},
-  {L"UsbCDCControl", DevPathFromTextUsbCDCControl},
-  {L"UsbHID", DevPathFromTextUsbHID},
-  {L"UsbImage", DevPathFromTextUsbImage},
-  {L"UsbPrinter", DevPathFromTextUsbPrinter},
-  {L"UsbMassStorage", DevPathFromTextUsbMassStorage},
-  {L"UsbHub", DevPathFromTextUsbHub},
-  {L"UsbCDCData", DevPathFromTextUsbCDCData},
-  {L"UsbSmartCard", DevPathFromTextUsbSmartCard},
-  {L"UsbVideo", DevPathFromTextUsbVideo},
-  {L"UsbDiagnostic", DevPathFromTextUsbDiagnostic},
-  {L"UsbWireless", DevPathFromTextUsbWireless},
-  {L"UsbDeviceFirmwareUpdate", DevPathFromTextUsbDeviceFirmwareUpdate},
-  {L"UsbIrdaBridge", DevPathFromTextUsbIrdaBridge},
-  {L"UsbTestAndMeasurement", DevPathFromTextUsbTestAndMeasurement},
-  {L"UsbWwid", DevPathFromTextUsbWwid},
-  {L"Unit", DevPathFromTextUnit},
-  {L"iSCSI", DevPathFromTextiSCSI},
-  {L"HD", DevPathFromTextHD},
-  {L"CDROM", DevPathFromTextCDROM},
-  {L"VenMEDIA", DevPathFromTextVenMEDIA},
-  {L"Media", DevPathFromTextMedia},
-  {L"BBS", DevPathFromTextBBS},
-  {NULL, NULL}
-};
-
-EFI_DEVICE_PATH_PROTOCOL *
-ConvertTextToDeviceNode (
-  IN CONST CHAR16 *TextDeviceNode
-  )
-/*++
-
-  Routine Description:
-    Convert text to the binary representation of a device node.
-
-  Arguments:
-    TextDeviceNode   -   TextDeviceNode points to the text representation of a device
-                         node. Conversion starts with the first character and continues
-                         until the first non-device node character.
-
-  Returns:
-    A pointer        -   Pointer to the EFI device node.
-    NULL             -   If TextDeviceNode is NULL or there was insufficient memory or text unsupported.
-
---*/
-{
-  EFI_DEVICE_PATH_PROTOCOL * (*DumpNode) (CHAR16 *);
-  CHAR16                   *ParamStr;
-  EFI_DEVICE_PATH_PROTOCOL *DeviceNode;
-  CHAR16                   *DeviceNodeStr;
-  UINTN                    Index;
-
-  if ((TextDeviceNode == NULL) || (IS_NULL (*TextDeviceNode))) {
-    return NULL;
-  }
-
-  ParamStr      = NULL;
-  DumpNode      = NULL;
-  DeviceNodeStr = StrDuplicate (TextDeviceNode);
-
-  for (Index = 0; DevPathFromTextTable[Index].Function; Index++) {
-    ParamStr = GetParamByNodeName (DeviceNodeStr, DevPathFromTextTable[Index].DevicePathNodeText);
-    if (ParamStr != NULL) {
-      DumpNode = DevPathFromTextTable[Index].Function;
-      break;
-    }
-  }
-
-  if (DumpNode == NULL) {
-    //
-    // A file path
-    //
-    DumpNode = DevPathFromTextFilePath;
-    DeviceNode = DumpNode (DeviceNodeStr);
-  } else {
-    DeviceNode = DumpNode (ParamStr);
-    gBS->FreePool (ParamStr);
-  }
-
-  gBS->FreePool (DeviceNodeStr);
-
-  return DeviceNode;
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-ConvertTextToDevicePath (
-  IN CONST CHAR16 *TextDevicePath
-  )
-/*++
-
-  Routine Description:
-    Convert text to the binary representation of a device path.
-
-  Arguments:
-    TextDevicePath   -   TextDevicePath points to the text representation of a device
-                         path. Conversion starts with the first character and continues
-                         until the first non-device node character.
-
-  Returns:
-    A pointer        -   Pointer to the allocated device path.
-    NULL             -   If TextDeviceNode is NULL or there was insufficient memory.
-
---*/
-{
-  EFI_DEVICE_PATH_PROTOCOL * (*DumpNode) (CHAR16 *);
-  CHAR16                   *ParamStr;
-  EFI_DEVICE_PATH_PROTOCOL *DeviceNode;
-  UINTN                    Index;
-  EFI_DEVICE_PATH_PROTOCOL *NewDevicePath;
-  CHAR16                   *DevicePathStr;
-  CHAR16                   *Str;
-  CHAR16                   *DeviceNodeStr;
-  UINT8                    IsInstanceEnd;
-  EFI_DEVICE_PATH_PROTOCOL *DevicePath;
-
-  if ((TextDevicePath == NULL) || (IS_NULL (*TextDevicePath))) {
-    return NULL;
-  }
-
-  DevicePath = (EFI_DEVICE_PATH_PROTOCOL *) AllocatePool (END_DEVICE_PATH_LENGTH);
-  SetDevicePathEndNode (DevicePath);
-
-  ParamStr            = NULL;
-  DeviceNodeStr       = NULL;
-  DevicePathStr       = StrDuplicate (TextDevicePath);
-
-  Str                 = DevicePathStr;
-  while ((DeviceNodeStr = GetNextDeviceNodeStr (&Str, &IsInstanceEnd)) != NULL) {
-    DumpNode = NULL;
-    for (Index = 0; DevPathFromTextTable[Index].Function; Index++) {
-      ParamStr = GetParamByNodeName (DeviceNodeStr, DevPathFromTextTable[Index].DevicePathNodeText);
-      if (ParamStr != NULL) {
-        DumpNode = DevPathFromTextTable[Index].Function;
-        break;
-      }
-    }
-
-    if (DumpNode == NULL) {
-      //
-      // A file path
-      //
-      DumpNode  = DevPathFromTextFilePath;
-      DeviceNode = DumpNode (DeviceNodeStr);
-    } else {
-      DeviceNode = DumpNode (ParamStr);
-      gBS->FreePool (ParamStr);
-    }
-
-    NewDevicePath = AppendDeviceNodeProtocolInterface (DevicePath, DeviceNode);
-    gBS->FreePool (DevicePath);
-    gBS->FreePool (DeviceNode);
-    DevicePath = NewDevicePath;
-
-    if (IsInstanceEnd) {
-      DeviceNode = (EFI_DEVICE_PATH_PROTOCOL *) AllocatePool (END_DEVICE_PATH_LENGTH);
-      SetDevicePathInstanceEndNode (DeviceNode);
-
-      NewDevicePath = AppendDeviceNodeProtocolInterface (DevicePath, DeviceNode);
-      gBS->FreePool (DevicePath);
-      gBS->FreePool (DeviceNode);
-      DevicePath = NewDevicePath;
-    }
-  }
-
-  gBS->FreePool (DevicePathStr);
-  return DevicePath;
-}
+/*++\r
+\r
+Copyright (c) 2006, Intel Corporation                                                         \r
+All rights reserved. This program and the accompanying materials                          \r
+are licensed and made available under the terms and conditions of the BSD License         \r
+which accompanies this distribution.  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
+\r
+Module Name:\r
+\r
+  DevicePathFromText.c\r
+\r
+Abstract:\r
+\r
+  DevicePathFromText protocol as defined in the UEFI 2.0 specification.\r
+\r
+--*/\r
+\r
+#include "DevicePath.h"\r
+\r
+CHAR16 *\r
+StrDuplicate (\r
+  IN CONST CHAR16  *Src\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Duplicate a string\r
+\r
+  Arguments:\r
+    Src - Source string\r
+\r
+  Returns:\r
+    Duplicated string\r
+\r
+--*/\r
+{\r
+  UINTN   Length;\r
+  CHAR16  *ReturnStr;\r
+\r
+  Length = StrLen ((CHAR16 *) Src);\r
+\r
+  ReturnStr = AllocateCopyPool ((Length + 1) * sizeof (CHAR16), (VOID *) Src);\r
+\r
+  return ReturnStr;\r
+}\r
+\r
+CHAR16 *\r
+GetParamByNodeName (\r
+  IN CHAR16 *Str,\r
+  IN CHAR16 *NodeName\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Get parameter in a pair of parentheses follow the given node name.\r
+    For example, given the "Pci(0,1)" and NodeName "Pci", it returns "0,1".\r
+\r
+  Arguments:\r
+    Str      - Device Path Text\r
+    NodeName - Name of the node\r
+\r
+  Returns:\r
+    Parameter text for the node\r
+\r
+--*/\r
+{\r
+  CHAR16  *ParamStr;\r
+  CHAR16  *StrPointer;\r
+  UINTN   NodeNameLength;\r
+  UINTN   ParameterLength;\r
+\r
+  //\r
+  // Check whether the node name matchs\r
+  //\r
+  NodeNameLength = StrLen (NodeName);\r
+  if (CompareMem (Str, NodeName, NodeNameLength * sizeof (CHAR16)) != 0) {\r
+    return NULL;\r
+  }\r
+\r
+  ParamStr = Str + NodeNameLength;\r
+  if (!IS_LEFT_PARENTH (*ParamStr)) {\r
+    return NULL;\r
+  }\r
+\r
+  //\r
+  // Skip the found '(' and find first occurrence of ')'\r
+  //\r
+  ParamStr++;\r
+  ParameterLength = 0;\r
+  StrPointer = ParamStr;\r
+  while (!IS_NULL (*StrPointer)) {\r
+    if (IS_RIGHT_PARENTH (*StrPointer)) {\r
+      break;\r
+    }\r
+    StrPointer++;\r
+    ParameterLength++;\r
+  }\r
+  if (IS_NULL (*StrPointer)) {\r
+    //\r
+    // ')' not found\r
+    //\r
+    return NULL;\r
+  }\r
+\r
+  ParamStr = AllocateCopyPool ((ParameterLength + 1) * sizeof (CHAR16), ParamStr);\r
+  if (ParamStr == NULL) {\r
+    return NULL;\r
+  }\r
+  //\r
+  // Terminate the parameter string\r
+  //\r
+  ParamStr[ParameterLength] = L'\0';\r
+\r
+  return ParamStr;\r
+}\r
+\r
+CHAR16 *\r
+SplitStr (\r
+  IN OUT CHAR16 **List,\r
+  IN     CHAR16 Separator\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Get current sub-string from a string list, before return\r
+    the list header is moved to next sub-string. The sub-string is separated\r
+    by the specified character. For example, the separator is ',', the string\r
+    list is "2,0,3", it returns "2", the remain list move to "2,3"\r
+\r
+  Arguments:\r
+    List       - A string list separated by the specified separator\r
+    Separator  - The separator character\r
+\r
+  Returns:\r
+    pointer    - The current sub-string\r
+\r
+--*/\r
+{\r
+  CHAR16  *Str;\r
+  CHAR16  *ReturnStr;\r
+\r
+  Str = *List;\r
+  ReturnStr = Str;\r
+\r
+  if (IS_NULL (*Str)) {\r
+    return ReturnStr;\r
+  }\r
+\r
+  //\r
+  // Find first occurrence of the separator\r
+  //\r
+  while (!IS_NULL (*Str)) {\r
+    if (*Str == Separator) {\r
+      break;\r
+    }\r
+    Str++;\r
+  }\r
+\r
+  if (*Str == Separator) {\r
+    //\r
+    // Find a sub-string, terminate it\r
+    //\r
+    *Str = L'\0';\r
+    Str++;\r
+  }\r
+\r
+  //\r
+  // Move to next sub-string\r
+  //\r
+  *List = Str;\r
+\r
+  return ReturnStr;\r
+}\r
+\r
+CHAR16 *\r
+GetNextParamStr (\r
+  IN OUT CHAR16 **List\r
+  )\r
+{\r
+  //\r
+  // The separator is comma\r
+  //\r
+  return SplitStr (List, L',');\r
+}\r
+\r
+CHAR16 *\r
+GetNextDeviceNodeStr (\r
+  IN OUT CHAR16   **DevicePath,\r
+  OUT    BOOLEAN  *IsInstanceEnd\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Get one device node from entire device path text.\r
+\r
+  Arguments:\r
+    Str           - The entire device path text string\r
+    IsInstanceEnd - This node is the end of a device path instance\r
+\r
+  Returns:\r
+    a pointer     - A device node text\r
+    NULL          - No more device node available\r
+\r
+--*/\r
+{\r
+  CHAR16  *Str;\r
+  CHAR16  *ReturnStr;\r
+  UINTN   ParenthesesStack;\r
+\r
+  Str = *DevicePath;\r
+  if (IS_NULL (*Str)) {\r
+    return NULL;\r
+  }\r
+\r
+  //\r
+  // Skip the leading '/', '(', ')' and ','\r
+  //\r
+  while (!IS_NULL (*Str)) {\r
+    if (!IS_SLASH (*Str) &&\r
+        !IS_COMMA (*Str) &&\r
+        !IS_LEFT_PARENTH (*Str) &&\r
+        !IS_RIGHT_PARENTH (*Str)) {\r
+      break;\r
+    }\r
+    Str++;\r
+  }\r
+\r
+  ReturnStr = Str;\r
+\r
+  //\r
+  // Scan for the separator of this device node, '/' or ','\r
+  //\r
+  ParenthesesStack = 0;\r
+  while (!IS_NULL (*Str)) {\r
+    if ((IS_COMMA (*Str) || IS_SLASH (*Str)) && (ParenthesesStack == 0)) {\r
+      break;\r
+    }\r
+\r
+    if (IS_LEFT_PARENTH (*Str)) {\r
+      ParenthesesStack++;\r
+    } else if (IS_RIGHT_PARENTH (*Str)) {\r
+      ParenthesesStack--;\r
+    }\r
+\r
+    Str++;\r
+  }\r
+\r
+  if (ParenthesesStack != 0) {\r
+    //\r
+    // The '(' doesn't pair with ')', invalid device path text\r
+    //\r
+    return NULL;\r
+  }\r
+\r
+  if (IS_COMMA (*Str)) {\r
+    *IsInstanceEnd = TRUE;\r
+    *Str = L'\0';\r
+    Str++;\r
+  } else {\r
+    *IsInstanceEnd = FALSE;\r
+    if (!IS_NULL (*Str)) {\r
+      *Str = L'\0';\r
+      Str++;\r
+    }\r
+  }\r
+\r
+  *DevicePath = Str;\r
+\r
+  return ReturnStr;\r
+}\r
+\r
+BOOLEAN\r
+IsHexDigit (\r
+  OUT UINT8      *Digit,\r
+  IN  CHAR16      Char\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Determines if a Unicode character is a hexadecimal digit.\r
+    The test is case insensitive.\r
+\r
+  Arguments:\r
+    Digit - Pointer to byte that receives the value of the hex character.\r
+    Char  - Unicode character to test.\r
+\r
+  Returns:\r
+    TRUE  - If the character is a hexadecimal digit.\r
+    FALSE - Otherwise.\r
+\r
+--*/\r
+{\r
+  if ((Char >= L'0') && (Char <= L'9')) {\r
+    *Digit = (UINT8) (Char - L'0');\r
+    return TRUE;\r
+  }\r
+\r
+  if ((Char >= L'A') && (Char <= L'F')) {\r
+    *Digit = (UINT8) (Char - L'A' + 0x0A);\r
+    return TRUE;\r
+  }\r
+\r
+  if ((Char >= L'a') && (Char <= L'f')) {\r
+    *Digit = (UINT8) (Char - L'a' + 0x0A);\r
+    return TRUE;\r
+  }\r
+\r
+  return FALSE;\r
+}\r
+\r
+CHAR16\r
+NibbleToHexChar (\r
+  IN UINT8      Nibble\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Converts the low nibble of a byte  to hex unicode character.\r
+\r
+  Arguments:\r
+    Nibble - lower nibble of a byte.\r
+\r
+  Returns:\r
+    Hex unicode character.\r
+\r
+--*/\r
+{\r
+  Nibble &= 0x0F;\r
+  if (Nibble <= 0x9) {\r
+    return (CHAR16)(Nibble + L'0');\r
+  }\r
+\r
+  return (CHAR16)(Nibble - 0xA + L'A');\r
+}\r
+\r
+EFI_STATUS\r
+HexStringToBuf (\r
+  IN OUT UINT8                     *Buf,   \r
+  IN OUT UINTN                     *Len,\r
+  IN     CHAR16                    *Str,\r
+  OUT    UINTN                     *ConvertedStrLen  OPTIONAL\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Converts Unicode string to binary buffer.\r
+    The conversion may be partial.\r
+    The first character in the string that is not hex digit stops the conversion.\r
+    At a minimum, any blob of data could be represented as a hex string.\r
+\r
+  Arguments:\r
+    Buf    - Pointer to buffer that receives the data.\r
+    Len    - Length in bytes of the buffer to hold converted data.\r
+                If routine return with EFI_SUCCESS, containing length of converted data.\r
+                If routine return with EFI_BUFFER_TOO_SMALL, containg length of buffer desired.\r
+    Str    - String to be converted from.\r
+    ConvertedStrLen - Length of the Hex String consumed.\r
+\r
+  Returns:\r
+    EFI_SUCCESS: Routine Success.\r
+    EFI_BUFFER_TOO_SMALL: The buffer is too small to hold converted data.\r
+    EFI_\r
+\r
+--*/\r
+{\r
+  UINTN       HexCnt;\r
+  UINTN       Idx;\r
+  UINTN       BufferLength;\r
+  UINT8       Digit;\r
+  UINT8       Byte;\r
+\r
+  //\r
+  // Find out how many hex characters the string has.\r
+  //\r
+  for (Idx = 0, HexCnt = 0; IsHexDigit (&Digit, Str[Idx]); Idx++, HexCnt++);\r
+\r
+  if (HexCnt == 0) {\r
+    *Len = 0;\r
+    return EFI_SUCCESS;\r
+  }\r
+  //\r
+  // Two Unicode characters make up 1 buffer byte. Round up.\r
+  //\r
+  BufferLength = (HexCnt + 1) / 2; \r
+\r
+  //\r
+  // Test if  buffer is passed enough.\r
+  //\r
+  if (BufferLength > (*Len)) {\r
+    *Len = BufferLength;\r
+    return EFI_BUFFER_TOO_SMALL;\r
+  }\r
+\r
+  *Len = BufferLength;\r
+\r
+  for (Idx = 0; Idx < HexCnt; Idx++) {\r
+\r
+    IsHexDigit (&Digit, Str[HexCnt - 1 - Idx]);\r
+\r
+    //\r
+    // For odd charaters, write the lower nibble for each buffer byte,\r
+    // and for even characters, the upper nibble.\r
+    //\r
+    if ((Idx & 1) == 0) {\r
+      Byte = Digit;\r
+    } else {\r
+      Byte = Buf[Idx / 2];\r
+      Byte &= 0x0F;\r
+      Byte |= Digit << 4;\r
+    }\r
+\r
+    Buf[Idx / 2] = Byte;\r
+  }\r
+\r
+  if (ConvertedStrLen != NULL) {\r
+    *ConvertedStrLen = HexCnt;\r
+  }\r
+\r
+  return EFI_SUCCESS;\r
+}\r
+\r
+EFI_STATUS\r
+BufToHexString (\r
+  IN OUT CHAR16                    *Str,\r
+  IN OUT UINTN                     *HexStringBufferLength,\r
+  IN     UINT8                     *Buf,\r
+  IN     UINTN                     Len\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Converts binary buffer to Unicode string.\r
+    At a minimum, any blob of data could be represented as a hex string.\r
+\r
+  Arguments:\r
+    Str - Pointer to the string.\r
+    HexStringBufferLength - Length in bytes of buffer to hold the hex string. Includes tailing '\0' character.\r
+                                        If routine return with EFI_SUCCESS, containing length of hex string buffer.\r
+                                        If routine return with EFI_BUFFER_TOO_SMALL, containg length of hex string buffer desired.\r
+    Buf - Buffer to be converted from.\r
+    Len - Length in bytes of the buffer to be converted.\r
+\r
+  Returns:\r
+    EFI_SUCCESS: Routine success.\r
+    EFI_BUFFER_TOO_SMALL: The hex string buffer is too small.\r
+\r
+--*/\r
+{\r
+  UINTN       Idx;\r
+  UINT8       Byte;\r
+  UINTN       StrLen;\r
+\r
+  //\r
+  // Make sure string is either passed or allocate enough.\r
+  // It takes 2 Unicode characters (4 bytes) to represent 1 byte of the binary buffer.\r
+  // Plus the Unicode termination character.\r
+  //\r
+  StrLen = Len * 2;\r
+  if (StrLen > ((*HexStringBufferLength) - 1)) {\r
+    *HexStringBufferLength = StrLen + 1;\r
+    return EFI_BUFFER_TOO_SMALL;\r
+  }\r
+\r
+  *HexStringBufferLength = StrLen + 1;\r
+  //\r
+  // Ends the string.\r
+  //\r
+  Str[StrLen] = L'\0'; \r
+\r
+  for (Idx = 0; Idx < Len; Idx++) {\r
+\r
+    Byte = Buf[Idx];\r
+    Str[StrLen - 1 - Idx * 2] = NibbleToHexChar (Byte);\r
+    Str[StrLen - 2 - Idx * 2] = NibbleToHexChar ((UINT8)(Byte >> 4));\r
+  }\r
+\r
+  return EFI_SUCCESS;\r
+}\r
+\r
+CHAR16 *\r
+TrimHexStr (\r
+  IN CHAR16  *Str\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Skip the leading white space and '0x' or '0X' of a hex string\r
+\r
+  Arguments:\r
+    Str  -  The hex string\r
+\r
+  Returns:\r
+\r
+--*/\r
+{\r
+  //\r
+  // skip preceeding white space\r
+  //\r
+  while (*Str && *Str == ' ') {\r
+    Str += 1;\r
+  }\r
+  //\r
+  // skip preceeding zeros\r
+  //\r
+  while (*Str && *Str == '0') {\r
+    Str += 1;\r
+  }\r
+  //\r
+  // skip preceeding white space\r
+  //\r
+  if (*Str && (*Str == 'x' || *Str == 'X')) {\r
+    Str += 1;\r
+  }\r
+\r
+  return Str;\r
+}\r
+\r
+UINTN\r
+Xtoi (\r
+  IN CHAR16  *Str\r
+  )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+  Convert hex string to uint\r
+\r
+Arguments:\r
+\r
+  Str  -  The string\r
+  \r
+Returns:\r
+\r
+--*/\r
+{\r
+  UINTN   Rvalue;\r
+  UINTN   Length;\r
+\r
+  ASSERT (Str != NULL);\r
+\r
+  //\r
+  // convert hex digits\r
+  //\r
+  Rvalue = 0;\r
+  Length = sizeof (UINTN);\r
+  HexStringToBuf ((UINT8 *) &Rvalue, &Length, TrimHexStr (Str), NULL);\r
+\r
+  return Rvalue;\r
+}\r
+\r
+VOID\r
+Xtoi64 (\r
+  IN CHAR16  *Str,\r
+  IN UINT64  *Data\r
+  )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+  Convert hex string to 64 bit data.\r
+\r
+Arguments:\r
+\r
+  Str  -  The string\r
+  \r
+Returns:\r
+\r
+--*/\r
+{\r
+  UINTN  Length;\r
+\r
+  *Data  = 0;\r
+  Length = sizeof (UINT64);\r
+  HexStringToBuf ((UINT8 *) Data, &Length, TrimHexStr (Str), NULL);\r
+}\r
+\r
+UINTN\r
+Atoi (\r
+  IN CHAR16  *str\r
+  )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+  Convert decimal string to uint\r
+\r
+Arguments:\r
+\r
+  Str  -  The string\r
+  \r
+Returns:\r
+\r
+--*/\r
+{\r
+  UINTN   Rvalue;\r
+  CHAR16  Char;\r
+  UINTN   High;\r
+  UINTN   Low;\r
+\r
+  ASSERT (str != NULL);\r
+\r
+  High = (UINTN) -1 / 10;\r
+  Low  = (UINTN) -1 % 10;\r
+  //\r
+  // skip preceeding white space\r
+  //\r
+  while (*str && *str == ' ') {\r
+    str += 1;\r
+  }\r
+  //\r
+  // convert digits\r
+  //\r
+  Rvalue = 0;\r
+  Char = *(str++);\r
+  while (Char) {\r
+    if (Char >= '0' && Char <= '9') {\r
+      if ((Rvalue > High || Rvalue == High) && (Char - '0' > (INTN) Low)) {\r
+        return (UINTN) -1;\r
+      }\r
+\r
+      Rvalue = (Rvalue * 10) + Char - '0';\r
+    } else {\r
+      break;\r
+    }\r
+\r
+    Char = *(str++);\r
+  }\r
+\r
+  return Rvalue;\r
+}\r
+\r
+EFI_STATUS \r
+StrToBuf (\r
+  OUT UINT8    *Buf,\r
+  IN  UINTN    BufferLength,\r
+  IN  CHAR16   *Str\r
+  )\r
+{\r
+  UINTN       Index;\r
+  UINTN       StrLength;\r
+  UINT8       Digit;\r
+  UINT8       Byte;\r
+\r
+  //\r
+  // Two hex char make up one byte\r
+  //\r
+  StrLength = BufferLength * sizeof (CHAR16);\r
+\r
+  for(Index = 0; Index < StrLength; Index++, Str++) {\r
+\r
+    IsHexDigit (&Digit, *Str);\r
+\r
+    //\r
+    // For odd charaters, write the upper nibble for each buffer byte,\r
+    // and for even characters, the lower nibble.\r
+    //\r
+    if ((Index & 1) == 0) {\r
+      Byte = Digit << 4;\r
+    } else {\r
+      Byte = Buf[Index / 2];\r
+      Byte &= 0xF0;\r
+      Byte |= Digit;\r
+    }\r
+\r
+    Buf[Index / 2] = Byte;\r
+  }\r
+\r
+  return EFI_SUCCESS;\r
+}\r
+\r
+EFI_STATUS\r
+StrToGuid (\r
+  IN  CHAR16   *Str,\r
+  OUT EFI_GUID *Guid\r
+  )\r
+{\r
+  UINTN       BufferLength;\r
+  UINTN       ConvertedStrLen;\r
+  EFI_STATUS  Status;\r
+\r
+  BufferLength = sizeof (Guid->Data1);\r
+  Status = HexStringToBuf ((UINT8 *) &Guid->Data1, &BufferLength, Str, &ConvertedStrLen);\r
+  if (EFI_ERROR (Status)) {\r
+    return Status;\r
+  }\r
+  Str += ConvertedStrLen;\r
+  if (IS_HYPHEN (*Str)) {\r
+    Str++;   \r
+  } else {\r
+    return EFI_UNSUPPORTED;\r
+  }\r
+\r
+  BufferLength = sizeof (Guid->Data2);\r
+  Status = HexStringToBuf ((UINT8 *) &Guid->Data2, &BufferLength, Str, &ConvertedStrLen);\r
+  if (EFI_ERROR (Status)) {\r
+    return Status;\r
+  }\r
+  Str += ConvertedStrLen;\r
+  if (IS_HYPHEN (*Str)) {\r
+    Str++;\r
+  } else {\r
+    return EFI_UNSUPPORTED;\r
+  }\r
+\r
+  BufferLength = sizeof (Guid->Data3);\r
+  Status = HexStringToBuf ((UINT8 *) &Guid->Data3, &BufferLength, Str, &ConvertedStrLen);\r
+  if (EFI_ERROR (Status)) {\r
+    return Status;\r
+  }\r
+  Str += ConvertedStrLen;\r
+  if (IS_HYPHEN (*Str)) {\r
+    Str++;\r
+  } else {\r
+    return EFI_UNSUPPORTED;\r
+  }\r
+\r
+  StrToBuf (&Guid->Data4[0], 2, Str);\r
+  //\r
+  // Skip 2 byte hex chars\r
+  //\r
+  Str += 2 * 2;\r
+\r
+  if (IS_HYPHEN (*Str)) {\r
+    Str++;\r
+  } else {\r
+    return EFI_UNSUPPORTED;\r
+  }\r
+  StrToBuf (&Guid->Data4[2], 6, Str);\r
+\r
+  return EFI_SUCCESS;\r
+}\r
+\r
+VOID\r
+StrToIPv4Addr (\r
+  IN OUT CHAR16           **Str,\r
+  OUT    EFI_IPv4_ADDRESS *IPv4Addr\r
+  )\r
+{\r
+  UINTN  Index;\r
+\r
+  for (Index = 0; Index < 4; Index++) {\r
+    IPv4Addr->Addr[Index] = (UINT8) Atoi (SplitStr (Str, L'.'));\r
+  }\r
+}\r
+\r
+VOID\r
+StrToIPv6Addr (\r
+  IN OUT CHAR16           **Str,\r
+  OUT    EFI_IPv6_ADDRESS *IPv6Addr\r
+  )\r
+{\r
+  UINTN  Index;\r
+  UINT16 Data;\r
+\r
+  for (Index = 0; Index < 8; Index++) {\r
+    Data = (UINT16) Xtoi (SplitStr (Str, L':'));\r
+    IPv6Addr->Addr[Index * 2] = (UINT8) (Data >> 8);\r
+    IPv6Addr->Addr[Index * 2 + 1] = (UINT8) (Data & 0xff);\r
+  }\r
+}\r
+\r
+VOID\r
+StrToAscii (\r
+  IN     CHAR16 *Str,\r
+  IN OUT CHAR8  **AsciiStr\r
+  )\r
+{\r
+  CHAR8 *Dest;\r
+\r
+  Dest = *AsciiStr;\r
+  while (!IS_NULL (*Str)) {\r
+    *(Dest++) = (CHAR8) *(Str++);\r
+  }\r
+  *Dest = 0;\r
+\r
+  //\r
+  // Return the string next to it\r
+  //\r
+  *AsciiStr = Dest + 1;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextPci (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16          *FunctionStr;\r
+  CHAR16          *DeviceStr;\r
+  PCI_DEVICE_PATH *Pci;\r
+\r
+  FunctionStr = GetNextParamStr (&TextDeviceNode);\r
+  DeviceStr   = GetNextParamStr (&TextDeviceNode);\r
+  Pci         = (PCI_DEVICE_PATH *) CreateDeviceNode (\r
+                                      HARDWARE_DEVICE_PATH,\r
+                                      HW_PCI_DP,\r
+                                      sizeof (PCI_DEVICE_PATH)\r
+                                      );\r
+\r
+  Pci->Function = (UINT8) Xtoi (FunctionStr);\r
+  Pci->Device   = (UINT8) Xtoi (DeviceStr);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) Pci;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextPcCard (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16              *FunctionNumberStr;\r
+  PCCARD_DEVICE_PATH  *Pccard;\r
+\r
+  FunctionNumberStr = GetNextParamStr (&TextDeviceNode);\r
+  Pccard            = (PCCARD_DEVICE_PATH *) CreateDeviceNode (\r
+                                               HARDWARE_DEVICE_PATH,\r
+                                               HW_PCCARD_DP,\r
+                                               sizeof (PCCARD_DEVICE_PATH)\r
+                                               );\r
+\r
+  Pccard->FunctionNumber  = (UINT8) Xtoi (FunctionNumberStr);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) Pccard;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextMemoryMapped (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16              *StartingAddressStr;\r
+  CHAR16              *EndingAddressStr;\r
+  MEMMAP_DEVICE_PATH  *MemMap;\r
+\r
+  StartingAddressStr = GetNextParamStr (&TextDeviceNode);\r
+  EndingAddressStr   = GetNextParamStr (&TextDeviceNode);\r
+  MemMap             = (MEMMAP_DEVICE_PATH *) CreateDeviceNode (\r
+                                               HARDWARE_DEVICE_PATH,\r
+                                               HW_MEMMAP_DP,\r
+                                               sizeof (MEMMAP_DEVICE_PATH)\r
+                                               );\r
+\r
+  MemMap->MemoryType  = 0;\r
+\r
+  Xtoi64 (StartingAddressStr, &MemMap->StartingAddress);\r
+  Xtoi64 (EndingAddressStr, &MemMap->EndingAddress);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) MemMap;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+ConvertFromTextVendor (\r
+  IN CHAR16 *TextDeviceNode,\r
+  IN UINT8  Type,\r
+  IN UINT8  SubType\r
+  )\r
+{\r
+  CHAR16              *GuidStr;\r
+  CHAR16              *DataStr;\r
+  UINTN               Length;\r
+  VENDOR_DEVICE_PATH  *Vendor;\r
+\r
+  GuidStr = GetNextParamStr (&TextDeviceNode);\r
+\r
+  DataStr = GetNextParamStr (&TextDeviceNode);\r
+  Length  = StrLen (DataStr);\r
+  //\r
+  // Two hex characters make up 1 buffer byte\r
+  //\r
+  Length  = (Length + 1) / 2;\r
+\r
+  Vendor  = (VENDOR_DEVICE_PATH *) CreateDeviceNode (\r
+                                     Type,\r
+                                     SubType,\r
+                                     sizeof (VENDOR_DEVICE_PATH) + (UINT16) Length\r
+                                     );\r
+\r
+  StrToGuid (GuidStr, &Vendor->Guid);\r
+  StrToBuf (((UINT8 *) Vendor) + sizeof (VENDOR_DEVICE_PATH), Length, DataStr);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) Vendor;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextVenHw (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  return ConvertFromTextVendor (\r
+           TextDeviceNode,\r
+           HARDWARE_DEVICE_PATH,\r
+           HW_VENDOR_DP\r
+           );\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextCtrl (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16                  *ControllerStr;\r
+  CONTROLLER_DEVICE_PATH  *Controller;\r
+\r
+  ControllerStr = GetNextParamStr (&TextDeviceNode);\r
+  Controller    = (CONTROLLER_DEVICE_PATH *) CreateDeviceNode (\r
+                                               HARDWARE_DEVICE_PATH,\r
+                                               HW_CONTROLLER_DP,\r
+                                               sizeof (CONTROLLER_DEVICE_PATH)\r
+                                               );\r
+  Controller->ControllerNumber = (UINT32) Xtoi (ControllerStr);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) Controller;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextAcpi (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16                *HIDStr;\r
+  CHAR16                *UIDStr;\r
+  ACPI_HID_DEVICE_PATH  *Acpi;\r
+\r
+  HIDStr = GetNextParamStr (&TextDeviceNode);\r
+  UIDStr = GetNextParamStr (&TextDeviceNode);\r
+  Acpi   = (ACPI_HID_DEVICE_PATH *) CreateDeviceNode (\r
+                                      ACPI_DEVICE_PATH,\r
+                                      ACPI_DP,\r
+                                      sizeof (ACPI_HID_DEVICE_PATH)\r
+                                      );\r
+\r
+  if ((HIDStr[0] == L'P') && (HIDStr[1] == L'N') && (HIDStr[2] == L'P')) {\r
+    HIDStr += 3;\r
+  }\r
+\r
+  Acpi->HID = EISA_PNP_ID (Xtoi (HIDStr));\r
+  Acpi->UID = (UINT32) Xtoi (UIDStr);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) Acpi;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+ConvertFromTextAcpi (\r
+  IN CHAR16 *TextDeviceNode,\r
+  IN UINT32  Hid\r
+  )\r
+{\r
+  CHAR16                *UIDStr;\r
+  ACPI_HID_DEVICE_PATH  *Acpi;\r
+\r
+  UIDStr = GetNextParamStr (&TextDeviceNode);\r
+  Acpi   = (ACPI_HID_DEVICE_PATH *) CreateDeviceNode (\r
+                                      ACPI_DEVICE_PATH,\r
+                                      ACPI_DP,\r
+                                      sizeof (ACPI_HID_DEVICE_PATH)\r
+                                      );\r
+\r
+  Acpi->HID = Hid;\r
+  Acpi->UID = (UINT32) Xtoi (UIDStr);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) Acpi;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextPciRoot (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  return ConvertFromTextAcpi (TextDeviceNode, 0x0a0341d0);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextFloppy (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  return ConvertFromTextAcpi (TextDeviceNode, 0x060441d0);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextKeyboard (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  return ConvertFromTextAcpi (TextDeviceNode, 0x030141d0);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextSerial (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  return ConvertFromTextAcpi (TextDeviceNode, 0x050141d0);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextParallelPort (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  return ConvertFromTextAcpi (TextDeviceNode, 0x040141d0);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextAcpiEx (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16                                  *HIDStr;\r
+  CHAR16                                  *CIDStr;\r
+  CHAR16                                  *UIDStr;\r
+  CHAR16                                  *HIDSTRStr;\r
+  CHAR16                                  *CIDSTRStr;\r
+  CHAR16                                  *UIDSTRStr;\r
+  CHAR8                                   *AsciiStr;\r
+  UINT16                                  Length;\r
+  ACPI_EXTENDED_HID_DEVICE_PATH_WITH_STR  *AcpiExt;\r
+\r
+  HIDStr    = GetNextParamStr (&TextDeviceNode);\r
+  CIDStr    = GetNextParamStr (&TextDeviceNode);\r
+  UIDStr    = GetNextParamStr (&TextDeviceNode);\r
+  HIDSTRStr = GetNextParamStr (&TextDeviceNode);\r
+  CIDSTRStr = GetNextParamStr (&TextDeviceNode);\r
+  UIDSTRStr = GetNextParamStr (&TextDeviceNode);\r
+  Length    = sizeof (ACPI_EXTENDED_HID_DEVICE_PATH) + \r
+                  (UINT16) StrLen (HIDSTRStr) + 1 +\r
+                  (UINT16) StrLen (UIDSTRStr) + 1 +\r
+                  (UINT16) StrLen (CIDSTRStr) + 1;\r
+  AcpiExt = (ACPI_EXTENDED_HID_DEVICE_PATH_WITH_STR *) CreateDeviceNode (\r
+                                                         ACPI_DEVICE_PATH,\r
+                                                         ACPI_EXTENDED_DP,\r
+                                                         Length\r
+                                                         );\r
+\r
+  if ((HIDStr[0] == L'P') && (HIDStr[1] == L'N') && (HIDStr[2] == L'P')) {\r
+    HIDStr += 3;\r
+    AcpiExt->HID = EISA_PNP_ID (Xtoi (HIDStr));\r
+  } else {\r
+    AcpiExt->HID = (UINT32) Xtoi (HIDStr);\r
+  }\r
+\r
+  AcpiExt->UID  = (UINT32) Xtoi (UIDStr);\r
+  AcpiExt->CID  = (UINT32) Xtoi (CIDStr);\r
+\r
+  AsciiStr = AcpiExt->HidUidCidStr;\r
+  StrToAscii (HIDSTRStr, &AsciiStr);\r
+  StrToAscii (UIDSTRStr, &AsciiStr);\r
+  StrToAscii (CIDSTRStr, &AsciiStr);\r
+  \r
+  return (EFI_DEVICE_PATH_PROTOCOL *) AcpiExt;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextAcpiExp (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16                                  *HIDStr;\r
+  CHAR16                                  *CIDStr;\r
+  CHAR16                                  *UIDSTRStr;\r
+  CHAR8                                   *AsciiStr;\r
+  UINT16                                  Length;\r
+  ACPI_EXTENDED_HID_DEVICE_PATH_WITH_STR  *AcpiExt;\r
+\r
+  HIDStr    = GetNextParamStr (&TextDeviceNode);\r
+  CIDStr    = GetNextParamStr (&TextDeviceNode);\r
+  UIDSTRStr = GetNextParamStr (&TextDeviceNode);\r
+  Length    = sizeof (ACPI_EXTENDED_HID_DEVICE_PATH) + (UINT16) StrLen (UIDSTRStr) + 3;\r
+  AcpiExt   = (ACPI_EXTENDED_HID_DEVICE_PATH_WITH_STR *) CreateDeviceNode (\r
+                                                           ACPI_DEVICE_PATH,\r
+                                                           ACPI_EXTENDED_DP,\r
+                                                           Length\r
+                                                           );\r
+\r
+  if ((HIDStr[0] == L'P') && (HIDStr[1] == L'N') && (HIDStr[2] == L'P')) {\r
+    HIDStr += 3;\r
+    AcpiExt->HID = EISA_PNP_ID (Xtoi (HIDStr));\r
+  } else {\r
+    AcpiExt->HID = (UINT32) Xtoi (HIDStr);\r
+  }\r
+\r
+  AcpiExt->UID = 0;\r
+  AcpiExt->CID = (UINT32) Xtoi (CIDStr);\r
+\r
+  AsciiStr = AcpiExt->HidUidCidStr;\r
+  //\r
+  // HID string is NULL\r
+  //\r
+  *AsciiStr = 0;\r
+  //\r
+  // Convert UID string\r
+  //\r
+  AsciiStr++;\r
+  StrToAscii (UIDSTRStr, &AsciiStr);\r
+  //\r
+  // CID string is NULL\r
+  //\r
+  *AsciiStr = 0;\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) AcpiExt;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextAta (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16            *PrimarySecondaryStr;\r
+  CHAR16            *SlaveMasterStr;\r
+  CHAR16            *LunStr;\r
+  ATAPI_DEVICE_PATH *Atapi;\r
+\r
+  Atapi = (ATAPI_DEVICE_PATH *) CreateDeviceNode (\r
+                                  MESSAGING_DEVICE_PATH,\r
+                                  MSG_ATAPI_DP,\r
+                                  sizeof (ATAPI_DEVICE_PATH)\r
+                                  );\r
+\r
+  PrimarySecondaryStr     = GetNextParamStr (&TextDeviceNode);\r
+  SlaveMasterStr          = GetNextParamStr (&TextDeviceNode);\r
+  LunStr                  = GetNextParamStr (&TextDeviceNode);\r
+\r
+  Atapi->PrimarySecondary = (StrCmp (PrimarySecondaryStr, L"Primary") == 0) ? (UINT8) 0 : (UINT8) 1;\r
+  Atapi->SlaveMaster      = (StrCmp (SlaveMasterStr, L"Master") == 0) ? (UINT8) 0 : (UINT8) 1;\r
+  Atapi->Lun              = (UINT16) Xtoi (LunStr);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) Atapi;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextScsi (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16            *PunStr;\r
+  CHAR16            *LunStr;\r
+  SCSI_DEVICE_PATH  *Scsi;\r
+\r
+  PunStr = GetNextParamStr (&TextDeviceNode);\r
+  LunStr = GetNextParamStr (&TextDeviceNode);\r
+  Scsi   = (SCSI_DEVICE_PATH *) CreateDeviceNode (\r
+                                   MESSAGING_DEVICE_PATH,\r
+                                   MSG_SCSI_DP,\r
+                                   sizeof (SCSI_DEVICE_PATH)\r
+                                   );\r
+\r
+  Scsi->Pun = (UINT16) Xtoi (PunStr);\r
+  Scsi->Lun = (UINT16) Xtoi (LunStr);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) Scsi;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextFibre (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16                    *WWNStr;\r
+  CHAR16                    *LunStr;\r
+  FIBRECHANNEL_DEVICE_PATH  *Fibre;\r
+\r
+  WWNStr = GetNextParamStr (&TextDeviceNode);\r
+  LunStr = GetNextParamStr (&TextDeviceNode);\r
+  Fibre  = (FIBRECHANNEL_DEVICE_PATH *) CreateDeviceNode (\r
+                                          MESSAGING_DEVICE_PATH,\r
+                                          MSG_FIBRECHANNEL_DP,\r
+                                          sizeof (FIBRECHANNEL_DEVICE_PATH)\r
+                                          );\r
+\r
+  Fibre->Reserved = 0;\r
+  Xtoi64 (WWNStr, &Fibre->WWN);\r
+  Xtoi64 (LunStr, &Fibre->Lun);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) Fibre;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromText1394 (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16            *GuidStr;\r
+  F1394_DEVICE_PATH *F1394;\r
+\r
+  GuidStr = GetNextParamStr (&TextDeviceNode);\r
+  F1394  = (F1394_DEVICE_PATH *) CreateDeviceNode (\r
+                                   MESSAGING_DEVICE_PATH,\r
+                                   MSG_1394_DP,\r
+                                   sizeof (F1394_DEVICE_PATH)\r
+                                   );\r
+\r
+  F1394->Reserved = 0;\r
+  Xtoi64 (GuidStr, &F1394->Guid);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) F1394;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextUsb (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16          *PortStr;\r
+  CHAR16          *InterfaceStr;\r
+  USB_DEVICE_PATH *Usb;\r
+\r
+  PortStr               = GetNextParamStr (&TextDeviceNode);\r
+  InterfaceStr          = GetNextParamStr (&TextDeviceNode);\r
+  Usb                   = (USB_DEVICE_PATH *) CreateDeviceNode (\r
+                                                MESSAGING_DEVICE_PATH,\r
+                                                MSG_USB_DP,\r
+                                                sizeof (USB_DEVICE_PATH)\r
+                                                );\r
+\r
+  Usb->ParentPortNumber = (UINT8) Xtoi (PortStr);\r
+  Usb->InterfaceNumber  = (UINT8) Xtoi (InterfaceStr);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) Usb;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextI2O (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16          *TIDStr;\r
+  I2O_DEVICE_PATH *I2O;\r
+\r
+  TIDStr    = GetNextParamStr (&TextDeviceNode);\r
+  I2O       = (I2O_DEVICE_PATH *) CreateDeviceNode (\r
+                                    MESSAGING_DEVICE_PATH,\r
+                                    MSG_I2O_DP,\r
+                                    sizeof (I2O_DEVICE_PATH)\r
+                                    );\r
+\r
+  I2O->Tid  = (UINT32) Xtoi (TIDStr);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) I2O;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextInfiniband (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16                  *FlagsStr;\r
+  CHAR16                  *GuidStr;\r
+  CHAR16                  *SidStr;\r
+  CHAR16                  *TidStr;\r
+  CHAR16                  *DidStr;\r
+  EFI_GUID                PortGid;\r
+  INFINIBAND_DEVICE_PATH  *InfiniBand;\r
+\r
+  FlagsStr   = GetNextParamStr (&TextDeviceNode);\r
+  GuidStr    = GetNextParamStr (&TextDeviceNode);\r
+  SidStr     = GetNextParamStr (&TextDeviceNode);\r
+  TidStr     = GetNextParamStr (&TextDeviceNode);\r
+  DidStr     = GetNextParamStr (&TextDeviceNode);\r
+  InfiniBand = (INFINIBAND_DEVICE_PATH *) CreateDeviceNode (\r
+                                            MESSAGING_DEVICE_PATH,\r
+                                            MSG_INFINIBAND_DP,\r
+                                            sizeof (INFINIBAND_DEVICE_PATH)\r
+                                            );\r
+\r
+  InfiniBand->ResourceFlags = (UINT32) Xtoi (FlagsStr);\r
+  StrToGuid (GuidStr, &PortGid);\r
+  CopyMem (InfiniBand->PortGid, &PortGid, sizeof (EFI_GUID));\r
+  Xtoi64 (SidStr, &InfiniBand->ServiceId);\r
+  Xtoi64 (TidStr, &InfiniBand->TargetPortId);\r
+  Xtoi64 (DidStr, &InfiniBand->DeviceId);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) InfiniBand;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextVenMsg (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  return ConvertFromTextVendor (\r
+            TextDeviceNode,\r
+            MESSAGING_DEVICE_PATH,\r
+            MSG_VENDOR_DP\r
+            );\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextVenPcAnsi (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  VENDOR_DEVICE_PATH  *Vendor;\r
+\r
+  Vendor = (VENDOR_DEVICE_PATH *) CreateDeviceNode (\r
+                                    MESSAGING_DEVICE_PATH,\r
+                                    MSG_VENDOR_DP,\r
+                                    sizeof (VENDOR_DEVICE_PATH));\r
+  CopyGuid (&Vendor->Guid, &gEfiPcAnsiGuid);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) Vendor;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextVenVt100 (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  VENDOR_DEVICE_PATH  *Vendor;\r
+\r
+  Vendor = (VENDOR_DEVICE_PATH *) CreateDeviceNode (\r
+                                    MESSAGING_DEVICE_PATH,\r
+                                    MSG_VENDOR_DP,\r
+                                    sizeof (VENDOR_DEVICE_PATH));\r
+  CopyGuid (&Vendor->Guid, &gEfiVT100Guid);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) Vendor;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextVenVt100Plus (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  VENDOR_DEVICE_PATH  *Vendor;\r
+\r
+  Vendor = (VENDOR_DEVICE_PATH *) CreateDeviceNode (\r
+                                    MESSAGING_DEVICE_PATH,\r
+                                    MSG_VENDOR_DP,\r
+                                    sizeof (VENDOR_DEVICE_PATH));\r
+  CopyGuid (&Vendor->Guid, &gEfiVT100PlusGuid);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) Vendor;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextVenUtf8 (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  VENDOR_DEVICE_PATH  *Vendor;\r
+\r
+  Vendor = (VENDOR_DEVICE_PATH *) CreateDeviceNode (\r
+                                    MESSAGING_DEVICE_PATH,\r
+                                    MSG_VENDOR_DP,\r
+                                    sizeof (VENDOR_DEVICE_PATH));\r
+  CopyGuid (&Vendor->Guid, &gEfiVTUTF8Guid);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) Vendor;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextUartFlowCtrl (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16                        *ValueStr;\r
+  UART_FLOW_CONTROL_DEVICE_PATH *UartFlowControl;\r
+\r
+  ValueStr        = GetNextParamStr (&TextDeviceNode);\r
+  UartFlowControl = (UART_FLOW_CONTROL_DEVICE_PATH *) CreateDeviceNode (\r
+                                                        MESSAGING_DEVICE_PATH,\r
+                                                        MSG_VENDOR_DP,\r
+                                                        sizeof (UART_FLOW_CONTROL_DEVICE_PATH)\r
+                                                        );\r
+\r
+  CopyGuid (&UartFlowControl->Guid, &mEfiDevicePathMessagingUartFlowControlGuid);\r
+  if (StrCmp (ValueStr, L"XonXoff") == 0) {\r
+    UartFlowControl->FlowControlMap = 2;\r
+  } else if (StrCmp (ValueStr, L"Hardware") == 0) {\r
+    UartFlowControl->FlowControlMap = 1;\r
+  } else {\r
+    UartFlowControl->FlowControlMap = 0;\r
+  }\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) UartFlowControl;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextSAS (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16          *AddressStr;\r
+  CHAR16          *LunStr;\r
+  CHAR16          *RTPStr;\r
+  CHAR16          *SASSATAStr;\r
+  CHAR16          *LocationStr;\r
+  CHAR16          *ConnectStr;\r
+  CHAR16          *DriveBayStr;\r
+  CHAR16          *ReservedStr;\r
+  UINT16          Info;\r
+  SAS_DEVICE_PATH *Sas;\r
+\r
+  AddressStr  = GetNextParamStr (&TextDeviceNode);\r
+  LunStr      = GetNextParamStr (&TextDeviceNode);\r
+  RTPStr      = GetNextParamStr (&TextDeviceNode);\r
+  SASSATAStr  = GetNextParamStr (&TextDeviceNode);\r
+  LocationStr = GetNextParamStr (&TextDeviceNode);\r
+  ConnectStr  = GetNextParamStr (&TextDeviceNode);\r
+  DriveBayStr = GetNextParamStr (&TextDeviceNode);\r
+  ReservedStr = GetNextParamStr (&TextDeviceNode);\r
+  Info        = 0x0000;\r
+  Sas         = (SAS_DEVICE_PATH *) CreateDeviceNode (\r
+                                       MESSAGING_DEVICE_PATH,\r
+                                       MSG_VENDOR_DP,\r
+                                       sizeof (SAS_DEVICE_PATH)\r
+                                       );\r
+\r
+  CopyGuid (&Sas->Guid, &mEfiDevicePathMessagingSASGuid);\r
+  Xtoi64 (AddressStr, &Sas->SasAddress);\r
+  Xtoi64 (LunStr, &Sas->Lun);\r
+  Sas->RelativeTargetPort = (UINT16) Xtoi (RTPStr);\r
+  if (StrCmp (SASSATAStr, L"NoTopology") == 0)\r
+    ;\r
+  else {\r
+    if (StrCmp (DriveBayStr, L"0") == 0) {\r
+      Info |= 0x0001;\r
+    } else {\r
+      Info |= 0x0002;\r
+      Info |= (Xtoi (DriveBayStr) << 8);\r
+    }\r
+\r
+    if (StrCmp (SASSATAStr, L"SATA") == 0) {\r
+      Info |= 0x0010;\r
+    }\r
+\r
+    if (StrCmp (LocationStr, L"External") == 0) {\r
+      Info |= 0x0020;\r
+    }\r
+\r
+    if (StrCmp (ConnectStr, L"Expanded") == 0) {\r
+      Info |= 0x0040;\r
+    }\r
+  }\r
+\r
+  Sas->DeviceTopology = Info;\r
+  Sas->Reserved       = (UINT32) Xtoi (ReservedStr);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) Sas;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextDebugPort (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  VENDOR_DEFINED_MESSAGING_DEVICE_PATH  *Vend;\r
+\r
+  Vend = (VENDOR_DEFINED_MESSAGING_DEVICE_PATH *) CreateDeviceNode (\r
+                                                    MESSAGING_DEVICE_PATH,\r
+                                                    MSG_VENDOR_DP,\r
+                                                    sizeof (VENDOR_DEFINED_MESSAGING_DEVICE_PATH)\r
+                                                    );\r
+\r
+  CopyGuid (&Vend->Guid, &gEfiDebugPortProtocolGuid);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) Vend;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextMAC (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16                *AddressStr;\r
+  CHAR16                *IfTypeStr;\r
+  UINTN                 Length;\r
+  MAC_ADDR_DEVICE_PATH  *MAC;\r
+\r
+  AddressStr    = GetNextParamStr (&TextDeviceNode);\r
+  IfTypeStr     = GetNextParamStr (&TextDeviceNode);\r
+  MAC           = (MAC_ADDR_DEVICE_PATH *) CreateDeviceNode (\r
+                                              MESSAGING_DEVICE_PATH,\r
+                                              MSG_MAC_ADDR_DP,\r
+                                              sizeof (MAC_ADDR_DEVICE_PATH)\r
+                                              );\r
+\r
+  MAC->IfType   = (UINT8) Xtoi (IfTypeStr);\r
+\r
+  Length = sizeof (EFI_MAC_ADDRESS);\r
+  StrToBuf (&MAC->MacAddress.Addr[0], Length, AddressStr);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) MAC;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextIPv4 (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16            *RemoteIPStr;\r
+  CHAR16            *ProtocolStr;\r
+  CHAR16            *TypeStr;\r
+  CHAR16            *LocalIPStr;\r
+  IPv4_DEVICE_PATH  *IPv4;\r
+\r
+  RemoteIPStr           = GetNextParamStr (&TextDeviceNode);\r
+  ProtocolStr           = GetNextParamStr (&TextDeviceNode);\r
+  TypeStr               = GetNextParamStr (&TextDeviceNode);\r
+  LocalIPStr            = GetNextParamStr (&TextDeviceNode);\r
+  IPv4                  = (IPv4_DEVICE_PATH *) CreateDeviceNode (\r
+                                                 MESSAGING_DEVICE_PATH,\r
+                                                 MSG_IPv4_DP,\r
+                                                 sizeof (IPv4_DEVICE_PATH)\r
+                                                 );\r
+\r
+  StrToIPv4Addr (&RemoteIPStr, &IPv4->RemoteIpAddress);\r
+  IPv4->Protocol = (StrCmp (ProtocolStr, L"UDP") == 0) ? (UINT16) 0 : (UINT16) 1;\r
+  if (StrCmp (TypeStr, L"Static") == 0) {\r
+    IPv4->StaticIpAddress = TRUE;\r
+  } else {\r
+    IPv4->StaticIpAddress = FALSE;\r
+  }\r
+\r
+  StrToIPv4Addr (&LocalIPStr, &IPv4->LocalIpAddress);\r
+\r
+  IPv4->LocalPort      = 0;\r
+  IPv4->RemotePort     = 0;\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) IPv4;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextIPv6 (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16            *RemoteIPStr;\r
+  CHAR16            *ProtocolStr;\r
+  CHAR16            *TypeStr;\r
+  CHAR16            *LocalIPStr;\r
+  IPv6_DEVICE_PATH  *IPv6;\r
+\r
+  RemoteIPStr           = GetNextParamStr (&TextDeviceNode);\r
+  ProtocolStr           = GetNextParamStr (&TextDeviceNode);\r
+  TypeStr               = GetNextParamStr (&TextDeviceNode);\r
+  LocalIPStr            = GetNextParamStr (&TextDeviceNode);\r
+  IPv6                  = (IPv6_DEVICE_PATH *) CreateDeviceNode (\r
+                                                 MESSAGING_DEVICE_PATH,\r
+                                                 MSG_IPv6_DP,\r
+                                                 sizeof (IPv6_DEVICE_PATH)\r
+                                                 );\r
+\r
+  StrToIPv6Addr (&RemoteIPStr, &IPv6->RemoteIpAddress);\r
+  IPv6->Protocol        = (StrCmp (ProtocolStr, L"UDP") == 0) ? (UINT16) 0 : (UINT16) 1;\r
+  if (StrCmp (TypeStr, L"Static") == 0) {\r
+    IPv6->StaticIpAddress = TRUE;\r
+  } else {\r
+    IPv6->StaticIpAddress = FALSE;\r
+  }\r
+\r
+  StrToIPv6Addr (&LocalIPStr, &IPv6->LocalIpAddress);\r
+\r
+  IPv6->LocalPort       = 0;\r
+  IPv6->RemotePort      = 0;\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) IPv6;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextUart (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16            *BaudStr;\r
+  CHAR16            *DataBitsStr;\r
+  CHAR16            *ParityStr;\r
+  CHAR16            *StopBitsStr;\r
+  UART_DEVICE_PATH  *Uart;\r
+\r
+  BaudStr         = GetNextParamStr (&TextDeviceNode);\r
+  DataBitsStr     = GetNextParamStr (&TextDeviceNode);\r
+  ParityStr       = GetNextParamStr (&TextDeviceNode);\r
+  StopBitsStr     = GetNextParamStr (&TextDeviceNode);\r
+  Uart            = (UART_DEVICE_PATH *) CreateDeviceNode (\r
+                                           MESSAGING_DEVICE_PATH,\r
+                                           MSG_UART_DP,\r
+                                           sizeof (UART_DEVICE_PATH)\r
+                                           );\r
+\r
+  Uart->BaudRate  = (StrCmp (BaudStr, L"DEFAULT") == 0) ? 115200 : Atoi (BaudStr);\r
+  Uart->DataBits  = (StrCmp (DataBitsStr, L"DEFAULT") == 0) ? (UINT8) 8 : (UINT8) Atoi (DataBitsStr);\r
+  switch (*ParityStr) {\r
+  case L'D':\r
+    Uart->Parity = 0;\r
+    break;\r
+\r
+  case L'N':\r
+    Uart->Parity = 1;\r
+    break;\r
+\r
+  case L'E':\r
+    Uart->Parity = 2;\r
+    break;\r
+\r
+  case L'O':\r
+    Uart->Parity = 3;\r
+    break;\r
+\r
+  case L'M':\r
+    Uart->Parity = 4;\r
+    break;\r
+\r
+  case L'S':\r
+    Uart->Parity = 5;\r
+\r
+  default:\r
+    Uart->Parity = 0xff;\r
+  }\r
+\r
+  if (StrCmp (StopBitsStr, L"D") == 0) {\r
+    Uart->StopBits = (UINT8) 0;\r
+  } else if (StrCmp (StopBitsStr, L"1") == 0) {\r
+    Uart->StopBits = (UINT8) 1;\r
+  } else if (StrCmp (StopBitsStr, L"1.5") == 0) {\r
+    Uart->StopBits = (UINT8) 2;\r
+  } else if (StrCmp (StopBitsStr, L"2") == 0) {\r
+    Uart->StopBits = (UINT8) 3;\r
+  } else {\r
+    Uart->StopBits = 0xff;\r
+  }\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) Uart;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+ConvertFromTextUsbClass (\r
+  IN CHAR16         *TextDeviceNode,\r
+  IN USB_CLASS_TEXT *UsbClassText\r
+  )\r
+{\r
+  CHAR16                *VIDStr;\r
+  CHAR16                *PIDStr;\r
+  CHAR16                *ClassStr;\r
+  CHAR16                *SubClassStr;\r
+  CHAR16                *ProtocolStr;\r
+  USB_CLASS_DEVICE_PATH *UsbClass;\r
+\r
+  UsbClass    = (USB_CLASS_DEVICE_PATH *) CreateDeviceNode (\r
+                                            MESSAGING_DEVICE_PATH,\r
+                                            MSG_USB_CLASS_DP,\r
+                                            sizeof (USB_CLASS_DEVICE_PATH)\r
+                                            );\r
+\r
+  VIDStr      = GetNextParamStr (&TextDeviceNode);\r
+  PIDStr      = GetNextParamStr (&TextDeviceNode);\r
+  if (UsbClassText->ClassExist) {\r
+    ClassStr = GetNextParamStr (&TextDeviceNode);\r
+    UsbClass->DeviceClass = (UINT8) Xtoi (ClassStr);\r
+  } else {\r
+    UsbClass->DeviceClass = UsbClassText->Class;\r
+  }\r
+  if (UsbClassText->SubClassExist) {\r
+    SubClassStr = GetNextParamStr (&TextDeviceNode);\r
+    UsbClass->DeviceSubClass = (UINT8) Xtoi (SubClassStr);\r
+  } else {\r
+    UsbClass->DeviceSubClass = UsbClassText->SubClass;\r
+  }  \r
+\r
+  ProtocolStr = GetNextParamStr (&TextDeviceNode);\r
+\r
+  UsbClass->VendorId        = (UINT16) Xtoi (VIDStr);\r
+  UsbClass->ProductId       = (UINT16) Xtoi (PIDStr);\r
+  UsbClass->DeviceProtocol  = (UINT8) Xtoi (ProtocolStr);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) UsbClass;\r
+}\r
+\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextUsbClass (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  USB_CLASS_TEXT  UsbClassText;\r
+\r
+  UsbClassText.ClassExist    = TRUE;\r
+  UsbClassText.SubClassExist = TRUE;\r
+\r
+  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextUsbAudio (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  USB_CLASS_TEXT  UsbClassText;\r
+\r
+  UsbClassText.ClassExist    = FALSE;\r
+  UsbClassText.Class         = USB_CLASS_AUDIO;\r
+  UsbClassText.SubClassExist = TRUE;\r
+\r
+  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextUsbCDCControl (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  USB_CLASS_TEXT  UsbClassText;\r
+\r
+  UsbClassText.ClassExist    = FALSE;\r
+  UsbClassText.Class         = USB_CLASS_CDCCONTROL;\r
+  UsbClassText.SubClassExist = TRUE;\r
+\r
+  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextUsbHID (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  USB_CLASS_TEXT  UsbClassText;\r
+\r
+  UsbClassText.ClassExist    = FALSE;\r
+  UsbClassText.Class         = USB_CLASS_HID;\r
+  UsbClassText.SubClassExist = TRUE;\r
+\r
+  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextUsbImage (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  USB_CLASS_TEXT  UsbClassText;\r
+\r
+  UsbClassText.ClassExist    = FALSE;\r
+  UsbClassText.Class         = USB_CLASS_IMAGE;\r
+  UsbClassText.SubClassExist = TRUE;\r
+\r
+  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextUsbPrinter (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  USB_CLASS_TEXT  UsbClassText;\r
+\r
+  UsbClassText.ClassExist    = FALSE;\r
+  UsbClassText.Class         = USB_CLASS_PRINTER;\r
+  UsbClassText.SubClassExist = TRUE;\r
+\r
+  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextUsbMassStorage (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  USB_CLASS_TEXT  UsbClassText;\r
+\r
+  UsbClassText.ClassExist    = FALSE;\r
+  UsbClassText.Class         = USB_CLASS_MASS_STORAGE;\r
+  UsbClassText.SubClassExist = TRUE;\r
+\r
+  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextUsbHub (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  USB_CLASS_TEXT  UsbClassText;\r
+\r
+  UsbClassText.ClassExist    = FALSE;\r
+  UsbClassText.Class         = USB_CLASS_HUB;\r
+  UsbClassText.SubClassExist = TRUE;\r
+\r
+  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextUsbCDCData (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  USB_CLASS_TEXT  UsbClassText;\r
+\r
+  UsbClassText.ClassExist    = FALSE;\r
+  UsbClassText.Class         = USB_CLASS_CDCDATA;\r
+  UsbClassText.SubClassExist = TRUE;\r
+\r
+  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextUsbSmartCard (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  USB_CLASS_TEXT  UsbClassText;\r
+\r
+  UsbClassText.ClassExist    = FALSE;\r
+  UsbClassText.Class         = USB_CLASS_SMART_CARD;\r
+  UsbClassText.SubClassExist = TRUE;\r
+\r
+  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextUsbVideo (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  USB_CLASS_TEXT  UsbClassText;\r
+\r
+  UsbClassText.ClassExist    = FALSE;\r
+  UsbClassText.Class         = USB_CLASS_VIDEO;\r
+  UsbClassText.SubClassExist = TRUE;\r
+\r
+  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextUsbDiagnostic (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  USB_CLASS_TEXT  UsbClassText;\r
+\r
+  UsbClassText.ClassExist    = FALSE;\r
+  UsbClassText.Class         = USB_CLASS_DIAGNOSTIC;\r
+  UsbClassText.SubClassExist = TRUE;\r
+\r
+  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextUsbWireless (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  USB_CLASS_TEXT  UsbClassText;\r
+\r
+  UsbClassText.ClassExist    = FALSE;\r
+  UsbClassText.Class         = USB_CLASS_WIRELESS;\r
+  UsbClassText.SubClassExist = TRUE;\r
+\r
+  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextUsbDeviceFirmwareUpdate (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  USB_CLASS_TEXT  UsbClassText;\r
+\r
+  UsbClassText.ClassExist    = FALSE;\r
+  UsbClassText.Class         = USB_CLASS_RESERVE;\r
+  UsbClassText.SubClassExist = FALSE;\r
+  UsbClassText.SubClass      = USB_SUBCLASS_FW_UPDATE;\r
+\r
+  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextUsbIrdaBridge (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  USB_CLASS_TEXT  UsbClassText;\r
+\r
+  UsbClassText.ClassExist    = FALSE;\r
+  UsbClassText.Class         = USB_CLASS_RESERVE;\r
+  UsbClassText.SubClassExist = FALSE;\r
+  UsbClassText.SubClass      = USB_SUBCLASS_IRDA_BRIDGE;\r
+\r
+  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextUsbTestAndMeasurement (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  USB_CLASS_TEXT  UsbClassText;\r
+\r
+  UsbClassText.ClassExist    = FALSE;\r
+  UsbClassText.Class         = USB_CLASS_RESERVE;\r
+  UsbClassText.SubClassExist = FALSE;\r
+  UsbClassText.SubClass      = USB_SUBCLASS_TEST;\r
+\r
+  return ConvertFromTextUsbClass (TextDeviceNode, &UsbClassText);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextUsbWwid (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16                *VIDStr;\r
+  CHAR16                *PIDStr;\r
+  CHAR16                *InterfaceNumStr;\r
+  USB_WWID_DEVICE_PATH  *UsbWwid;\r
+\r
+  VIDStr                    = GetNextParamStr (&TextDeviceNode);\r
+  PIDStr                    = GetNextParamStr (&TextDeviceNode);\r
+  InterfaceNumStr           = GetNextParamStr (&TextDeviceNode);\r
+  UsbWwid                   = (USB_WWID_DEVICE_PATH *) CreateDeviceNode (\r
+                                                         MESSAGING_DEVICE_PATH,\r
+                                                         MSG_USB_WWID_DP,\r
+                                                         sizeof (USB_WWID_DEVICE_PATH)\r
+                                                         );\r
+\r
+  UsbWwid->VendorId         = (UINT16) Xtoi (VIDStr);\r
+  UsbWwid->ProductId        = (UINT16) Xtoi (PIDStr);\r
+  UsbWwid->InterfaceNumber  = (UINT16) Xtoi (InterfaceNumStr);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) UsbWwid;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextUnit (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16                          *LunStr;\r
+  DEVICE_LOGICAL_UNIT_DEVICE_PATH *LogicalUnit;\r
+\r
+  LunStr      = GetNextParamStr (&TextDeviceNode);\r
+  LogicalUnit = (DEVICE_LOGICAL_UNIT_DEVICE_PATH *) CreateDeviceNode (\r
+                                                      MESSAGING_DEVICE_PATH,\r
+                                                      MSG_DEVICE_LOGICAL_UNIT_DP,\r
+                                                      sizeof (DEVICE_LOGICAL_UNIT_DEVICE_PATH)\r
+                                                      );\r
+\r
+  LogicalUnit->Lun  = (UINT8) Xtoi (LunStr);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) LogicalUnit;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextiSCSI (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  UINT16                      Options;\r
+  CHAR16                      *NameStr;\r
+  CHAR16                      *PortalGroupStr;\r
+  CHAR16                      *LunStr;\r
+  CHAR16                      *HeaderDigestStr;\r
+  CHAR16                      *DataDigestStr;\r
+  CHAR16                      *AuthenticationStr;\r
+  CHAR16                      *ProtocolStr;\r
+  ISCSI_DEVICE_PATH_WITH_NAME *iSCSI;\r
+\r
+  NameStr           = GetNextParamStr (&TextDeviceNode);\r
+  PortalGroupStr    = GetNextParamStr (&TextDeviceNode);\r
+  LunStr            = GetNextParamStr (&TextDeviceNode);\r
+  HeaderDigestStr   = GetNextParamStr (&TextDeviceNode);\r
+  DataDigestStr     = GetNextParamStr (&TextDeviceNode);\r
+  AuthenticationStr = GetNextParamStr (&TextDeviceNode);\r
+  ProtocolStr       = GetNextParamStr (&TextDeviceNode);\r
+  iSCSI             = (ISCSI_DEVICE_PATH_WITH_NAME *) CreateDeviceNode (\r
+                                                        MESSAGING_DEVICE_PATH,\r
+                                                        MSG_ISCSI_DP,\r
+                                                        sizeof (ISCSI_DEVICE_PATH_WITH_NAME) + (UINT16) (StrLen (NameStr) * 2)\r
+                                                        );\r
+\r
+  StrCpy (iSCSI->iSCSITargetName, NameStr);\r
+  iSCSI->TargetPortalGroupTag = (UINT16) Xtoi (PortalGroupStr);\r
+  Xtoi64 (LunStr, &iSCSI->Lun);\r
+\r
+  Options = 0x0000;\r
+  if (StrCmp (HeaderDigestStr, L"CRC32C") == 0) {\r
+    Options |= 0x0002;\r
+  }\r
+\r
+  if (StrCmp (DataDigestStr, L"CRC32C") == 0) {\r
+    Options |= 0x0008;\r
+  }\r
+\r
+  if (StrCmp (AuthenticationStr, L"None") == 0) {\r
+    Options |= 0x0800;\r
+  }\r
+\r
+  if (StrCmp (AuthenticationStr, L"CHAP_UNI") == 0) {\r
+    Options |= 0x1000;\r
+  }\r
+\r
+  iSCSI->LoginOption      = (UINT16) Options;\r
+\r
+  iSCSI->NetworkProtocol  = (UINT16) StrCmp (ProtocolStr, L"TCP");\r
+  iSCSI->Reserved         = (UINT16) 0;\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) iSCSI;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextHD (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16                *PartitionStr;\r
+  CHAR16                *TypeStr;\r
+  CHAR16                *SignatureStr;\r
+  CHAR16                *StartStr;\r
+  CHAR16                *SizeStr;\r
+  UINT32                Signature32;\r
+  EFI_GUID              SignatureGuid;\r
+  HARDDRIVE_DEVICE_PATH *Hd;\r
+\r
+  PartitionStr        = GetNextParamStr (&TextDeviceNode);\r
+  TypeStr             = GetNextParamStr (&TextDeviceNode);\r
+  SignatureStr        = GetNextParamStr (&TextDeviceNode);\r
+  StartStr            = GetNextParamStr (&TextDeviceNode);\r
+  SizeStr             = GetNextParamStr (&TextDeviceNode);\r
+  Hd                  = (HARDDRIVE_DEVICE_PATH *) CreateDeviceNode (\r
+                                                    MEDIA_DEVICE_PATH,\r
+                                                    MEDIA_HARDDRIVE_DP,\r
+                                                    sizeof (HARDDRIVE_DEVICE_PATH)\r
+                                                    );\r
+\r
+  Hd->PartitionNumber = (UINT32) Atoi (PartitionStr);\r
+\r
+  ZeroMem (Hd->Signature, 16);\r
+  Hd->MBRType = (UINT8) 0;\r
+\r
+  if (StrCmp (TypeStr, L"None") == 0) {\r
+    Hd->SignatureType = (UINT8) 0;\r
+  } else if (StrCmp (TypeStr, L"MBR") == 0) {\r
+    Hd->SignatureType = SIGNATURE_TYPE_MBR;\r
+    Hd->MBRType       = 0x01;\r
+\r
+    Signature32       = (UINT32) Xtoi (SignatureStr);\r
+    CopyMem (Hd->Signature, &Signature32, sizeof (UINT32));\r
+  } else if (StrCmp (TypeStr, L"GUID") == 0) {\r
+    Hd->SignatureType = SIGNATURE_TYPE_GUID;\r
+    Hd->MBRType       = 0x02;\r
+\r
+    StrToGuid (SignatureStr, &SignatureGuid);\r
+    CopyMem (Hd->Signature, &SignatureGuid, sizeof (EFI_GUID));\r
+  } else {\r
+    Hd->SignatureType = 0xff;\r
+\r
+  }\r
+\r
+  Xtoi64 (StartStr, &Hd->PartitionStart);\r
+  Xtoi64 (SizeStr, &Hd->PartitionSize);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) Hd;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextCDROM (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16            *EntryStr;\r
+  CHAR16            *StartStr;\r
+  CHAR16            *SizeStr;\r
+  CDROM_DEVICE_PATH *CDROM;\r
+\r
+  EntryStr              = GetNextParamStr (&TextDeviceNode);\r
+  StartStr              = GetNextParamStr (&TextDeviceNode);\r
+  SizeStr               = GetNextParamStr (&TextDeviceNode);\r
+  CDROM                 = (CDROM_DEVICE_PATH *) CreateDeviceNode (\r
+                                                  MEDIA_DEVICE_PATH,\r
+                                                  MEDIA_CDROM_DP,\r
+                                                  sizeof (CDROM_DEVICE_PATH)\r
+                                                  );\r
+\r
+  CDROM->BootEntry      = (UINT32) Xtoi (EntryStr);\r
+  Xtoi64 (StartStr, &CDROM->PartitionStart);\r
+  Xtoi64 (SizeStr, &CDROM->PartitionSize);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) CDROM;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextVenMEDIA (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  return ConvertFromTextVendor (\r
+           TextDeviceNode,\r
+           MEDIA_DEVICE_PATH,\r
+           MEDIA_VENDOR_DP\r
+           );\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextFilePath (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  FILEPATH_DEVICE_PATH  *File;\r
+\r
+  File = (FILEPATH_DEVICE_PATH *) CreateDeviceNode (\r
+                                    MEDIA_DEVICE_PATH,\r
+                                    MEDIA_FILEPATH_DP,\r
+                                    sizeof (FILEPATH_DEVICE_PATH) + (UINT16) (StrLen (TextDeviceNode) * 2)\r
+                                    );\r
+\r
+  StrCpy (File->PathName, TextDeviceNode);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) File;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextMedia (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16                      *GuidStr;\r
+  MEDIA_PROTOCOL_DEVICE_PATH  *Media;\r
+\r
+  GuidStr = GetNextParamStr (&TextDeviceNode);\r
+  Media   = (MEDIA_PROTOCOL_DEVICE_PATH *) CreateDeviceNode (\r
+                                             MEDIA_DEVICE_PATH,\r
+                                             MEDIA_PROTOCOL_DP,\r
+                                             sizeof (MEDIA_PROTOCOL_DEVICE_PATH)\r
+                                             );\r
+\r
+  StrToGuid (GuidStr, &Media->Protocol);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) Media;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextBBS (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16              *TypeStr;\r
+  CHAR16              *IdStr;\r
+  CHAR16              *FlagsStr;\r
+  UINT8               *AsciiStr;\r
+  BBS_BBS_DEVICE_PATH *Bbs;\r
+\r
+  TypeStr   = GetNextParamStr (&TextDeviceNode);\r
+  IdStr     = GetNextParamStr (&TextDeviceNode);\r
+  FlagsStr  = GetNextParamStr (&TextDeviceNode);\r
+  Bbs       = (BBS_BBS_DEVICE_PATH *) CreateDeviceNode (\r
+                                        BBS_DEVICE_PATH,\r
+                                        BBS_BBS_DP,\r
+                                        sizeof (BBS_BBS_DEVICE_PATH) + (UINT16) (StrLen (IdStr))\r
+                                        );\r
+\r
+  if (StrCmp (TypeStr, L"Floppy") == 0) {\r
+    Bbs->DeviceType = BBS_TYPE_FLOPPY;\r
+  } else if (StrCmp (TypeStr, L"HD") == 0) {\r
+    Bbs->DeviceType = BBS_TYPE_HARDDRIVE;\r
+  } else if (StrCmp (TypeStr, L"CDROM") == 0) {\r
+    Bbs->DeviceType = BBS_TYPE_CDROM;\r
+  } else if (StrCmp (TypeStr, L"PCMCIA") == 0) {\r
+    Bbs->DeviceType = BBS_TYPE_PCMCIA;\r
+  } else if (StrCmp (TypeStr, L"USB") == 0) {\r
+    Bbs->DeviceType = BBS_TYPE_USB;\r
+  } else if (StrCmp (TypeStr, L"Network") == 0) {\r
+    Bbs->DeviceType = BBS_TYPE_EMBEDDED_NETWORK;\r
+  } else {\r
+    Bbs->DeviceType = BBS_TYPE_UNKNOWN;\r
+  }\r
+\r
+  AsciiStr = (UINT8 *) Bbs->String;\r
+  StrToAscii (IdStr, (CHAR8 **) &AsciiStr);\r
+\r
+  Bbs->StatusFlag = (UINT16) Xtoi (FlagsStr);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) Bbs;\r
+}\r
+\r
+GLOBAL_REMOVE_IF_UNREFERENCED DEVICE_PATH_FROM_TEXT_TABLE DevPathFromTextTable[] = {\r
+  {L"Pci", DevPathFromTextPci},\r
+  {L"PcCard", DevPathFromTextPcCard},\r
+  {L"MemoryMapped", DevPathFromTextMemoryMapped},\r
+  {L"VenHw", DevPathFromTextVenHw},\r
+  {L"Ctrl", DevPathFromTextCtrl},\r
+  {L"Acpi", DevPathFromTextAcpi},\r
+  {L"PciRoot", DevPathFromTextPciRoot},\r
+  {L"Floppy", DevPathFromTextFloppy},\r
+  {L"Keyboard", DevPathFromTextKeyboard},\r
+  {L"Serial", DevPathFromTextSerial},\r
+  {L"ParallelPort", DevPathFromTextParallelPort},\r
+  {L"AcpiEx", DevPathFromTextAcpiEx},\r
+  {L"AcpiExp", DevPathFromTextAcpiExp},\r
+  {L"Ata", DevPathFromTextAta},\r
+  {L"Scsi", DevPathFromTextScsi},\r
+  {L"Fibre", DevPathFromTextFibre},\r
+  {L"I1394", DevPathFromText1394},\r
+  {L"USB", DevPathFromTextUsb},\r
+  {L"I2O", DevPathFromTextI2O},\r
+  {L"Infiniband", DevPathFromTextInfiniband},\r
+  {L"VenMsg", DevPathFromTextVenMsg},\r
+  {L"VenPcAnsi", DevPathFromTextVenPcAnsi},\r
+  {L"VenVt100", DevPathFromTextVenVt100},\r
+  {L"VenVt100Plus", DevPathFromTextVenVt100Plus},\r
+  {L"VenUtf8", DevPathFromTextVenUtf8},\r
+  {L"UartFlowCtrl", DevPathFromTextUartFlowCtrl},\r
+  {L"SAS", DevPathFromTextSAS},\r
+  {L"DebugPort", DevPathFromTextDebugPort},\r
+  {L"MAC", DevPathFromTextMAC},\r
+  {L"IPv4", DevPathFromTextIPv4},\r
+  {L"IPv6", DevPathFromTextIPv6},\r
+  {L"Uart", DevPathFromTextUart},\r
+  {L"UsbClass", DevPathFromTextUsbClass},\r
+  {L"UsbAudio", DevPathFromTextUsbAudio},\r
+  {L"UsbCDCControl", DevPathFromTextUsbCDCControl},\r
+  {L"UsbHID", DevPathFromTextUsbHID},\r
+  {L"UsbImage", DevPathFromTextUsbImage},\r
+  {L"UsbPrinter", DevPathFromTextUsbPrinter},\r
+  {L"UsbMassStorage", DevPathFromTextUsbMassStorage},\r
+  {L"UsbHub", DevPathFromTextUsbHub},\r
+  {L"UsbCDCData", DevPathFromTextUsbCDCData},\r
+  {L"UsbSmartCard", DevPathFromTextUsbSmartCard},\r
+  {L"UsbVideo", DevPathFromTextUsbVideo},\r
+  {L"UsbDiagnostic", DevPathFromTextUsbDiagnostic},\r
+  {L"UsbWireless", DevPathFromTextUsbWireless},\r
+  {L"UsbDeviceFirmwareUpdate", DevPathFromTextUsbDeviceFirmwareUpdate},\r
+  {L"UsbIrdaBridge", DevPathFromTextUsbIrdaBridge},\r
+  {L"UsbTestAndMeasurement", DevPathFromTextUsbTestAndMeasurement},\r
+  {L"UsbWwid", DevPathFromTextUsbWwid},\r
+  {L"Unit", DevPathFromTextUnit},\r
+  {L"iSCSI", DevPathFromTextiSCSI},\r
+  {L"HD", DevPathFromTextHD},\r
+  {L"CDROM", DevPathFromTextCDROM},\r
+  {L"VenMEDIA", DevPathFromTextVenMEDIA},\r
+  {L"Media", DevPathFromTextMedia},\r
+  {L"BBS", DevPathFromTextBBS},\r
+  {NULL, NULL}\r
+};\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+ConvertTextToDeviceNode (\r
+  IN CONST CHAR16 *TextDeviceNode\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Convert text to the binary representation of a device node.\r
+\r
+  Arguments:\r
+    TextDeviceNode   -   TextDeviceNode points to the text representation of a device\r
+                         node. Conversion starts with the first character and continues\r
+                         until the first non-device node character.\r
+\r
+  Returns:\r
+    A pointer        -   Pointer to the EFI device node.\r
+    NULL             -   If TextDeviceNode is NULL or there was insufficient memory or text unsupported.\r
+\r
+--*/\r
+{\r
+  EFI_DEVICE_PATH_PROTOCOL * (*DumpNode) (CHAR16 *);\r
+  CHAR16                   *ParamStr;\r
+  EFI_DEVICE_PATH_PROTOCOL *DeviceNode;\r
+  CHAR16                   *DeviceNodeStr;\r
+  UINTN                    Index;\r
+\r
+  if ((TextDeviceNode == NULL) || (IS_NULL (*TextDeviceNode))) {\r
+    return NULL;\r
+  }\r
+\r
+  ParamStr      = NULL;\r
+  DumpNode      = NULL;\r
+  DeviceNodeStr = StrDuplicate (TextDeviceNode);\r
+\r
+  for (Index = 0; DevPathFromTextTable[Index].Function; Index++) {\r
+    ParamStr = GetParamByNodeName (DeviceNodeStr, DevPathFromTextTable[Index].DevicePathNodeText);\r
+    if (ParamStr != NULL) {\r
+      DumpNode = DevPathFromTextTable[Index].Function;\r
+      break;\r
+    }\r
+  }\r
+\r
+  if (DumpNode == NULL) {\r
+    //\r
+    // A file path\r
+    //\r
+    DumpNode = DevPathFromTextFilePath;\r
+    DeviceNode = DumpNode (DeviceNodeStr);\r
+  } else {\r
+    DeviceNode = DumpNode (ParamStr);\r
+    gBS->FreePool (ParamStr);\r
+  }\r
+\r
+  gBS->FreePool (DeviceNodeStr);\r
+\r
+  return DeviceNode;\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+ConvertTextToDevicePath (\r
+  IN CONST CHAR16 *TextDevicePath\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Convert text to the binary representation of a device path.\r
+\r
+  Arguments:\r
+    TextDevicePath   -   TextDevicePath points to the text representation of a device\r
+                         path. Conversion starts with the first character and continues\r
+                         until the first non-device node character.\r
+\r
+  Returns:\r
+    A pointer        -   Pointer to the allocated device path.\r
+    NULL             -   If TextDeviceNode is NULL or there was insufficient memory.\r
+\r
+--*/\r
+{\r
+  EFI_DEVICE_PATH_PROTOCOL * (*DumpNode) (CHAR16 *);\r
+  CHAR16                   *ParamStr;\r
+  EFI_DEVICE_PATH_PROTOCOL *DeviceNode;\r
+  UINTN                    Index;\r
+  EFI_DEVICE_PATH_PROTOCOL *NewDevicePath;\r
+  CHAR16                   *DevicePathStr;\r
+  CHAR16                   *Str;\r
+  CHAR16                   *DeviceNodeStr;\r
+  UINT8                    IsInstanceEnd;\r
+  EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
+\r
+  if ((TextDevicePath == NULL) || (IS_NULL (*TextDevicePath))) {\r
+    return NULL;\r
+  }\r
+\r
+  DevicePath = (EFI_DEVICE_PATH_PROTOCOL *) AllocatePool (END_DEVICE_PATH_LENGTH);\r
+  SetDevicePathEndNode (DevicePath);\r
+\r
+  ParamStr            = NULL;\r
+  DeviceNodeStr       = NULL;\r
+  DevicePathStr       = StrDuplicate (TextDevicePath);\r
+\r
+  Str                 = DevicePathStr;\r
+  while ((DeviceNodeStr = GetNextDeviceNodeStr (&Str, &IsInstanceEnd)) != NULL) {\r
+    DumpNode = NULL;\r
+    for (Index = 0; DevPathFromTextTable[Index].Function; Index++) {\r
+      ParamStr = GetParamByNodeName (DeviceNodeStr, DevPathFromTextTable[Index].DevicePathNodeText);\r
+      if (ParamStr != NULL) {\r
+        DumpNode = DevPathFromTextTable[Index].Function;\r
+        break;\r
+      }\r
+    }\r
+\r
+    if (DumpNode == NULL) {\r
+      //\r
+      // A file path\r
+      //\r
+      DumpNode  = DevPathFromTextFilePath;\r
+      DeviceNode = DumpNode (DeviceNodeStr);\r
+    } else {\r
+      DeviceNode = DumpNode (ParamStr);\r
+      gBS->FreePool (ParamStr);\r
+    }\r
+\r
+    NewDevicePath = AppendDeviceNodeProtocolInterface (DevicePath, DeviceNode);\r
+    gBS->FreePool (DevicePath);\r
+    gBS->FreePool (DeviceNode);\r
+    DevicePath = NewDevicePath;\r
+\r
+    if (IsInstanceEnd) {\r
+      DeviceNode = (EFI_DEVICE_PATH_PROTOCOL *) AllocatePool (END_DEVICE_PATH_LENGTH);\r
+      SetDevicePathInstanceEndNode (DeviceNode);\r
+\r
+      NewDevicePath = AppendDeviceNodeProtocolInterface (DevicePath, DeviceNode);\r
+      gBS->FreePool (DevicePath);\r
+      gBS->FreePool (DeviceNode);\r
+      DevicePath = NewDevicePath;\r
+    }\r
+  }\r
+\r
+  gBS->FreePool (DevicePathStr);\r
+  return DevicePath;\r
+}\r
index a702595225fe8f81375c86e0075e86e58541d44f..548a5349a8f38ded2b6c45e4274560ce54deadb1 100644 (file)
-/*++
-
-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:
-
-  DevicePathUtilities.c
-
-Abstract:
-
-  Implementation file for Device Path Utilities Protocol
-
---*/
-
-#include "DevicePath.h"
-
-UINTN
-GetDevicePathSizeProtocolInterface (
-  IN CONST EFI_DEVICE_PATH_PROTOCOL  *DevicePath
-  )
-/*++
-
-  Routine Description:
-    Returns the size of the device path, in bytes.
-
-  Arguments:
-    DevicePath  -   Points to the start of the EFI device path.
-
-  Returns:
-    Size        -   Size of the specified device path, in bytes, including the end-of-path tag.
-
---*/
-{
-  return GetDevicePathSize (DevicePath);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-DuplicateDevicePathProtocolInterface (
-  IN CONST EFI_DEVICE_PATH_PROTOCOL  *DevicePath
-  )
-/*++
-
-  Routine Description:
-    Create a duplicate of the specified path.
-
-  Arguments:
-    DevicePath  -   Points to the source EFI device path.
-
-  Returns:
-    Pointer     -   A pointer to the duplicate device path.
-    NULL        -   Insufficient memory.
-
---*/
-{
-  return DuplicateDevicePath (DevicePath);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-AppendDevicePathProtocolInterface (
-  IN CONST EFI_DEVICE_PATH_PROTOCOL *Src1,
-  IN CONST EFI_DEVICE_PATH_PROTOCOL *Src2
-  )
-/*++
-
-  Routine Description:
-    Create a new path by appending the second device path to the first.
-
-  Arguments:
-    Src1      -   Points to the first device path. If NULL, then it is ignored.
-    Src2      -   Points to the second device path. If NULL, then it is ignored.
-
-  Returns:
-    Pointer   -   A pointer to the newly created device path.
-    NULL      -   Memory could not be allocated
-                  or either DevicePath or DeviceNode is NULL.
-
---*/
-{
-  return AppendDevicePath (Src1, Src2);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-AppendDeviceNodeProtocolInterface (
-  IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
-  IN CONST EFI_DEVICE_PATH_PROTOCOL *DeviceNode
-  )
-/*++
-
-  Routine Description:
-    Creates a new path by appending the device node to the device path.
-
-  Arguments:
-    DevicePath   -   Points to the device path.
-    DeviceNode   -   Points to the device node.
-
-  Returns:
-    Pointer      -   A pointer to the allocated device node.
-    NULL         -   Memory could not be allocated
-                     or either DevicePath or DeviceNode is NULL.
-
---*/
-{
-  return AppendDevicePathNode (DevicePath, DeviceNode);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-AppendDevicePathInstanceProtocolInterface (
-  IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
-  IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePathInstance
-  )
-/*++
-
-  Routine Description:
-    Creates a new path by appending the specified device path instance to the specified device path.
-
-  Arguments:
-    DevicePath           -   Points to the device path. If NULL, then ignored.
-    DevicePathInstance   -   Points to the device path instance.
-
-  Returns:
-    Pointer              -   A pointer to the newly created device path
-    NULL                 -   Memory could not be allocated or DevicePathInstance is NULL.
-
---*/
-{
-  return AppendDevicePathInstance (DevicePath, DevicePathInstance);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-GetNextDevicePathInstanceProtocolInterface (
-  IN OUT EFI_DEVICE_PATH_PROTOCOL   **DevicePathInstance,
-  OUT UINTN                         *DevicePathInstanceSize
-  )
-/*++
-
-  Routine Description:
-    Creates a copy of the current device path instance and returns a pointer to the next device path instance.
-
-  Arguments:
-    DevicePathInstance       -   On input, this holds the pointer to the current device path
-                                 instance. On output, this holds the pointer to the next
-                                 device path instance or NULL if there are no more device
-                                 path instances in the device path.
-    DevicePathInstanceSize   -   On output, this holds the size of the device path instance,
-                                 in bytes or zero, if DevicePathInstance is zero.
-
-  Returns:
-    Pointer                  -   A pointer to the copy of the current device path instance.
-    NULL                     -   DevicePathInstace was NULL on entry or there was insufficient memory.
-
---*/
-{
-  return GetNextDevicePathInstance (DevicePathInstance, DevicePathInstanceSize);
-}
-
-BOOLEAN
-IsDevicePathMultiInstanceProtocolInterface (
-  IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath
-  )
-/*++
-
-  Routine Description:
-    Returns whether a device path is multi-instance.
-
-  Arguments:
-    DevicePath  -   Points to the device path. If NULL, then ignored.
-
-  Returns:
-    TRUE        -   The device path has more than one instance
-    FALSE       -   The device path is empty or contains only a single instance.
-
---*/
-{
-  return IsDevicePathMultiInstance (DevicePath);
-}
-
-EFI_DEVICE_PATH_PROTOCOL *
-CreateDeviceNodeProtocolInterface (
-  IN UINT8  NodeType,
-  IN UINT8  NodeSubType,
-  IN UINT16 NodeLength
-  )
-/*++
-
-  Routine Description:
-    Creates a device node
-
-  Arguments:
-    NodeType     -    NodeType is the device node type (EFI_DEVICE_PATH.Type) for
-                      the new device node.
-    NodeSubType  -    NodeSubType is the device node sub-type
-                      EFI_DEVICE_PATH.SubType) for the new device node.
-    NodeLength   -    NodeLength is the length of the device node
-                      (EFI_DEVICE_PATH.Length) for the new device node.
-
-  Returns:
-    Pointer      -    A pointer to the newly created device node.
-    NULL         -    NodeLength is less than
-                      the size of the header or there was insufficient memory.
-
---*/
-{
-  return CreateDeviceNode (NodeType, NodeSubType, NodeLength);
-}
+/*++\r
+\r
+Copyright (c) 2006, Intel Corporation                                                     \r
+All rights reserved. This program and the accompanying materials                          \r
+are licensed and made available under the terms and conditions of the BSD License         \r
+which accompanies this distribution.  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
+\r
+Module Name:\r
+\r
+  DevicePathUtilities.c\r
+\r
+Abstract:\r
+\r
+  Implementation file for Device Path Utilities Protocol\r
+\r
+--*/\r
+\r
+#include "DevicePath.h"\r
+\r
+UINTN\r
+GetDevicePathSizeProtocolInterface (\r
+  IN CONST EFI_DEVICE_PATH_PROTOCOL  *DevicePath\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Returns the size of the device path, in bytes.\r
+\r
+  Arguments:\r
+    DevicePath  -   Points to the start of the EFI device path.\r
+\r
+  Returns:\r
+    Size        -   Size of the specified device path, in bytes, including the end-of-path tag.\r
+\r
+--*/\r
+{\r
+  return GetDevicePathSize (DevicePath);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DuplicateDevicePathProtocolInterface (\r
+  IN CONST EFI_DEVICE_PATH_PROTOCOL  *DevicePath\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Create a duplicate of the specified path.\r
+\r
+  Arguments:\r
+    DevicePath  -   Points to the source EFI device path.\r
+\r
+  Returns:\r
+    Pointer     -   A pointer to the duplicate device path.\r
+    NULL        -   Insufficient memory.\r
+\r
+--*/\r
+{\r
+  return DuplicateDevicePath (DevicePath);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+AppendDevicePathProtocolInterface (\r
+  IN CONST EFI_DEVICE_PATH_PROTOCOL *Src1,\r
+  IN CONST EFI_DEVICE_PATH_PROTOCOL *Src2\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Create a new path by appending the second device path to the first.\r
+\r
+  Arguments:\r
+    Src1      -   Points to the first device path. If NULL, then it is ignored.\r
+    Src2      -   Points to the second device path. If NULL, then it is ignored.\r
+\r
+  Returns:\r
+    Pointer   -   A pointer to the newly created device path.\r
+    NULL      -   Memory could not be allocated\r
+                  or either DevicePath or DeviceNode is NULL.\r
+\r
+--*/\r
+{\r
+  return AppendDevicePath (Src1, Src2);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+AppendDeviceNodeProtocolInterface (\r
+  IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,\r
+  IN CONST EFI_DEVICE_PATH_PROTOCOL *DeviceNode\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Creates a new path by appending the device node to the device path.\r
+\r
+  Arguments:\r
+    DevicePath   -   Points to the device path.\r
+    DeviceNode   -   Points to the device node.\r
+\r
+  Returns:\r
+    Pointer      -   A pointer to the allocated device node.\r
+    NULL         -   Memory could not be allocated\r
+                     or either DevicePath or DeviceNode is NULL.\r
+\r
+--*/\r
+{\r
+  return AppendDevicePathNode (DevicePath, DeviceNode);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+AppendDevicePathInstanceProtocolInterface (\r
+  IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,\r
+  IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePathInstance\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Creates a new path by appending the specified device path instance to the specified device path.\r
+\r
+  Arguments:\r
+    DevicePath           -   Points to the device path. If NULL, then ignored.\r
+    DevicePathInstance   -   Points to the device path instance.\r
+\r
+  Returns:\r
+    Pointer              -   A pointer to the newly created device path\r
+    NULL                 -   Memory could not be allocated or DevicePathInstance is NULL.\r
+\r
+--*/\r
+{\r
+  return AppendDevicePathInstance (DevicePath, DevicePathInstance);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+GetNextDevicePathInstanceProtocolInterface (\r
+  IN OUT EFI_DEVICE_PATH_PROTOCOL   **DevicePathInstance,\r
+  OUT UINTN                         *DevicePathInstanceSize\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Creates a copy of the current device path instance and returns a pointer to the next device path instance.\r
+\r
+  Arguments:\r
+    DevicePathInstance       -   On input, this holds the pointer to the current device path\r
+                                 instance. On output, this holds the pointer to the next\r
+                                 device path instance or NULL if there are no more device\r
+                                 path instances in the device path.\r
+    DevicePathInstanceSize   -   On output, this holds the size of the device path instance,\r
+                                 in bytes or zero, if DevicePathInstance is zero.\r
+\r
+  Returns:\r
+    Pointer                  -   A pointer to the copy of the current device path instance.\r
+    NULL                     -   DevicePathInstace was NULL on entry or there was insufficient memory.\r
+\r
+--*/\r
+{\r
+  return GetNextDevicePathInstance (DevicePathInstance, DevicePathInstanceSize);\r
+}\r
+\r
+BOOLEAN\r
+IsDevicePathMultiInstanceProtocolInterface (\r
+  IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Returns whether a device path is multi-instance.\r
+\r
+  Arguments:\r
+    DevicePath  -   Points to the device path. If NULL, then ignored.\r
+\r
+  Returns:\r
+    TRUE        -   The device path has more than one instance\r
+    FALSE       -   The device path is empty or contains only a single instance.\r
+\r
+--*/\r
+{\r
+  return IsDevicePathMultiInstance (DevicePath);\r
+}\r
+\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+CreateDeviceNodeProtocolInterface (\r
+  IN UINT8  NodeType,\r
+  IN UINT8  NodeSubType,\r
+  IN UINT16 NodeLength\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Creates a device node\r
+\r
+  Arguments:\r
+    NodeType     -    NodeType is the device node type (EFI_DEVICE_PATH.Type) for\r
+                      the new device node.\r
+    NodeSubType  -    NodeSubType is the device node sub-type\r
+                      EFI_DEVICE_PATH.SubType) for the new device node.\r
+    NodeLength   -    NodeLength is the length of the device node\r
+                      (EFI_DEVICE_PATH.Length) for the new device node.\r
+\r
+  Returns:\r
+    Pointer      -    A pointer to the newly created device node.\r
+    NULL         -    NodeLength is less than\r
+                      the size of the header or there was insufficient memory.\r
+\r
+--*/\r
+{\r
+  return CreateDeviceNode (NodeType, NodeSubType, NodeLength);\r
+}\r
index 35d2a19be28b7f55d236a015a7a6690005856140..1cb26fe97628a531c31a3b2e6c215fedf57c4a40 100644 (file)
-/*++
-
-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:
-
-  DiskIo.c
-
-Abstract:
-
-  DiskIo driver that layers it's self on every Block IO protocol in the system.
-  DiskIo converts a block oriented device to a byte oriented device.
-
-  ReadDisk may have to do reads that are not aligned on sector boundaries.
-  There are three cases:
-
-    UnderRun - The first byte is not on a sector boundary or the read request is
-               less than a sector in length.
-
-    Aligned  - A read of N contiguous sectors.
-
-    OverRun  - The last byte is not on a sector boundary.
-
---*/
-
-#include "DiskIo.h"
-
-//
-// Prototypes
-// Driver model protocol interface
-//
-EFI_STATUS
-EFIAPI
-DiskIoDriverBindingSupported (
-  IN EFI_DRIVER_BINDING_PROTOCOL    *This,
-  IN EFI_HANDLE                     ControllerHandle,
-  IN EFI_DEVICE_PATH_PROTOCOL       *RemainingDevicePath
-  );
-
-EFI_STATUS
-EFIAPI
-DiskIoDriverBindingStart (
-  IN EFI_DRIVER_BINDING_PROTOCOL    *This,
-  IN EFI_HANDLE                     ControllerHandle,
-  IN EFI_DEVICE_PATH_PROTOCOL       *RemainingDevicePath
-  );
-
-EFI_STATUS
-EFIAPI
-DiskIoDriverBindingStop (
-  IN  EFI_DRIVER_BINDING_PROTOCOL    *This,
-  IN  EFI_HANDLE                     ControllerHandle,
-  IN  UINTN                          NumberOfChildren,
-  IN  EFI_HANDLE                     *ChildHandleBuffer
-  );
-
-//
-// Disk I/O Protocol Interface
-//
-EFI_STATUS
-EFIAPI
-DiskIoReadDisk (
-  IN EFI_DISK_IO_PROTOCOL  *This,
-  IN UINT32                MediaId,
-  IN UINT64                Offset,
-  IN UINTN                 BufferSize,
-  OUT VOID                 *Buffer
-  );
-
-EFI_STATUS
-EFIAPI
-DiskIoWriteDisk (
-  IN EFI_DISK_IO_PROTOCOL  *This,
-  IN UINT32                MediaId,
-  IN UINT64                Offset,
-  IN UINTN                 BufferSize,
-  IN VOID                  *Buffer
-  );
-
-EFI_DRIVER_BINDING_PROTOCOL gDiskIoDriverBinding = {
-  DiskIoDriverBindingSupported,
-  DiskIoDriverBindingStart,
-  DiskIoDriverBindingStop,
-  0x10,
-  NULL,
-  NULL
-};
-
-DISK_IO_PRIVATE_DATA        gDiskIoPrivateDataTemplate = {
-  DISK_IO_PRIVATE_DATA_SIGNATURE,
-  {
-    EFI_DISK_IO_PROTOCOL_REVISION,
-    DiskIoReadDisk,
-    DiskIoWriteDisk
-  },
-  NULL
-};
-
-EFI_STATUS
-EFIAPI
-DiskIoDriverBindingSupported (
-  IN EFI_DRIVER_BINDING_PROTOCOL  *This,
-  IN EFI_HANDLE                   ControllerHandle,
-  IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath OPTIONAL
-  )
-/*++
-
-  Routine Description:
-    Test to see if this driver supports ControllerHandle. Any ControllerHandle
-    than contains a BlockIo protocol can be supported.
-
-  Arguments:
-    This                - Protocol instance pointer.
-    ControllerHandle    - Handle of device to test.
-    RemainingDevicePath - Not used.
-
-  Returns:
-    EFI_SUCCESS         - This driver supports this device.
-    EFI_ALREADY_STARTED - This driver is already running on this device.
-    other               - This driver does not support this device.
-
---*/
-{
-  EFI_STATUS            Status;
-  EFI_BLOCK_IO_PROTOCOL *BlockIo;
-
-  //
-  // Open the IO Abstraction(s) needed to perform the supported test.
-  //
-  Status = gBS->OpenProtocol (
-                  ControllerHandle,
-                  &gEfiBlockIoProtocolGuid,
-                  (VOID **) &BlockIo,
-                  This->DriverBindingHandle,
-                  ControllerHandle,
-                  EFI_OPEN_PROTOCOL_BY_DRIVER
-                  );
-  if (EFI_ERROR (Status)) {
-    return Status;
-  }
-  //
-  // Close the I/O Abstraction(s) used to perform the supported test.
-  //
-  gBS->CloseProtocol (
-        ControllerHandle,
-        &gEfiBlockIoProtocolGuid,
-        This->DriverBindingHandle,
-        ControllerHandle
-        );
-  return EFI_SUCCESS;
-}
-
-EFI_STATUS
-EFIAPI
-DiskIoDriverBindingStart (
-  IN EFI_DRIVER_BINDING_PROTOCOL  *This,
-  IN EFI_HANDLE                   ControllerHandle,
-  IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath OPTIONAL
-  )
-/*++
-
-  Routine Description:
-    Start this driver on ControllerHandle by opening a Block IO protocol and
-    installing a Disk IO protocol on ControllerHandle.
-
-  Arguments:
-    This                - Protocol instance pointer.
-    ControllerHandle    - Handle of device to bind driver to.
-    RemainingDevicePath - Not used, always produce all possible children.
-
-  Returns:
-    EFI_SUCCESS         - This driver is added to ControllerHandle.
-    EFI_ALREADY_STARTED - This driver is already running on ControllerHandle.
-    other               - This driver does not support this device.
-
---*/
-{
-  EFI_STATUS            Status;
-  DISK_IO_PRIVATE_DATA  *Private;
-
-  Private = NULL;
-
-  //
-  // Connect to the Block IO interface on ControllerHandle.
-  //
-  Status = gBS->OpenProtocol (
-                  ControllerHandle,
-                  &gEfiBlockIoProtocolGuid,
-                  (VOID **) &gDiskIoPrivateDataTemplate.BlockIo,
-                  This->DriverBindingHandle,
-                  ControllerHandle,
-                  EFI_OPEN_PROTOCOL_BY_DRIVER
-                  );
-  if (EFI_ERROR (Status)) {
-    return Status;
-  }
-  //
-  // Initialize the Disk IO device instance.
-  //
-  Private = AllocateCopyPool (sizeof (DISK_IO_PRIVATE_DATA), &gDiskIoPrivateDataTemplate);
-  if (Private == NULL) {
-    Status = EFI_OUT_OF_RESOURCES;
-    goto ErrorExit;
-  }
-  //
-  // Install protocol interfaces for the Disk IO device.
-  //
-  Status = gBS->InstallProtocolInterface (
-                  &ControllerHandle,
-                  &gEfiDiskIoProtocolGuid,
-                  EFI_NATIVE_INTERFACE,
-                  &Private->DiskIo
-                  );
-
-ErrorExit:
-  if (EFI_ERROR (Status)) {
-
-    if (Private != NULL) {
-      gBS->FreePool (Private);
-    }
-
-    gBS->CloseProtocol (
-          ControllerHandle,
-          &gEfiBlockIoProtocolGuid,
-          This->DriverBindingHandle,
-          ControllerHandle
-          );
-  }
-
-  return Status;
-}
-
-EFI_STATUS
-EFIAPI
-DiskIoDriverBindingStop (
-  IN  EFI_DRIVER_BINDING_PROTOCOL    *This,
-  IN  EFI_HANDLE                     ControllerHandle,
-  IN  UINTN                          NumberOfChildren,
-  IN  EFI_HANDLE                     *ChildHandleBuffer
-  )
-/*++
-
-  Routine Description:
-    Stop this driver on ControllerHandle by removing Disk IO protocol and closing
-    the Block IO protocol on ControllerHandle.
-
-  Arguments:
-    This              - Protocol instance pointer.
-    ControllerHandle  - Handle of device to stop driver on.
-    NumberOfChildren  - Not used.
-    ChildHandleBuffer - Not used.
-
-  Returns:
-    EFI_SUCCESS         - This driver is removed ControllerHandle.
-    other               - This driver was not removed from this device.
-    EFI_UNSUPPORTED
-
---*/
-{
-  EFI_STATUS            Status;
-  EFI_DISK_IO_PROTOCOL  *DiskIo;
-  DISK_IO_PRIVATE_DATA  *Private;
-
-  //
-  // Get our context back.
-  //
-  Status = gBS->OpenProtocol (
-                  ControllerHandle,
-                  &gEfiDiskIoProtocolGuid,
-                  (VOID **) &DiskIo,
-                  This->DriverBindingHandle,
-                  ControllerHandle,
-                  EFI_OPEN_PROTOCOL_GET_PROTOCOL
-                  );
-  if (EFI_ERROR (Status)) {
-    return EFI_UNSUPPORTED;
-  }
-
-  Private = DISK_IO_PRIVATE_DATA_FROM_THIS (DiskIo);
-
-  Status = gBS->UninstallProtocolInterface (
-                  ControllerHandle,
-                  &gEfiDiskIoProtocolGuid,
-                  &Private->DiskIo
-                  );
-  if (!EFI_ERROR (Status)) {
-
-    Status = gBS->CloseProtocol (
-                    ControllerHandle,
-                    &gEfiBlockIoProtocolGuid,
-                    This->DriverBindingHandle,
-                    ControllerHandle
-                    );
-  }
-
-  if (!EFI_ERROR (Status)) {
-    gBS->FreePool (Private);
-  }
-
-  return Status;
-}
-
-EFI_STATUS
-EFIAPI
-DiskIoReadDisk (
-  IN EFI_DISK_IO_PROTOCOL  *This,
-  IN UINT32                MediaId,
-  IN UINT64                Offset,
-  IN UINTN                 BufferSize,
-  OUT VOID                 *Buffer
-  )
-/*++
-
-  Routine Description:
-    Read BufferSize bytes from Offset into Buffer.
-
-    Reads may support reads that are not aligned on
-    sector boundaries. There are three cases:
-
-      UnderRun - The first byte is not on a sector boundary or the read request is
-                 less than a sector in length.
-
-      Aligned  - A read of N contiguous sectors.
-
-      OverRun  - The last byte is not on a sector boundary.
-
-
-  Arguments:
-    This       - Protocol instance pointer.
-    MediaId    - Id of the media, changes every time the media is replaced.
-    Offset     - The starting byte offset to read from.
-    BufferSize - Size of Buffer.
-    Buffer     - Buffer containing read data.
-
-  Returns:
-    EFI_SUCCESS           - The data was read correctly from the device.
-    EFI_DEVICE_ERROR      - The device reported an error while performing the read.
-    EFI_NO_MEDIA          - There is no media in the device.
-    EFI_MEDIA_CHNAGED     - The MediaId does not matched the current device.
-    EFI_INVALID_PARAMETER - The read request contains device addresses that are not
-                            valid for the device.
-    EFI_OUT_OF_RESOURCES
-
---*/
-{
-  EFI_STATUS            Status;
-  DISK_IO_PRIVATE_DATA  *Private;
-  EFI_BLOCK_IO_PROTOCOL *BlockIo;
-  EFI_BLOCK_IO_MEDIA    *Media;
-  UINT32                BlockSize;
-  UINT64                Lba;
-  UINT64                OverRunLba;
-  UINT32                UnderRun;
-  UINT32                OverRun;
-  BOOLEAN               TransactionComplete;
-  UINTN                 WorkingBufferSize;
-  UINT8                 *WorkingBuffer;
-  UINTN                 Length;
-  UINT8                 *Data;
-  UINT8                 *PreData;
-  UINTN                 IsBufferAligned;
-  UINTN                 DataBufferSize;
-  BOOLEAN               LastRead;
-
-  Private   = DISK_IO_PRIVATE_DATA_FROM_THIS (This);
-
-  BlockIo   = Private->BlockIo;
-  Media     = BlockIo->Media;
-  BlockSize = Media->BlockSize;
-
-  if (Media->MediaId != MediaId) {
-    return EFI_MEDIA_CHANGED;
-  }
-
-  WorkingBuffer     = Buffer;
-  WorkingBufferSize = BufferSize;
-
-  //
-  // Allocate a temporary buffer for operation
-  //
-  DataBufferSize = BlockSize * DATA_BUFFER_BLOCK_NUM;
-
-  if (Media->IoAlign > 1) {
-    PreData = AllocatePool (DataBufferSize + Media->IoAlign);
-    Data    = PreData - ((UINTN) PreData & (Media->IoAlign - 1)) + Media->IoAlign;
-  } else {
-    PreData = AllocatePool (DataBufferSize);
-    Data    = PreData;
-  }
-
-  if (PreData == NULL) {
-    return EFI_OUT_OF_RESOURCES;
-  }
-
-  Lba                 = DivU64x32Remainder (Offset, BlockSize, &UnderRun);
-
-  Length              = BlockSize - UnderRun;
-  TransactionComplete = FALSE;
-
-  Status              = EFI_SUCCESS;
-  if (UnderRun != 0) {
-    //
-    // Offset starts in the middle of an Lba, so read the entire block.
-    //
-    Status = BlockIo->ReadBlocks (
-                        BlockIo,
-                        MediaId,
-                        Lba,
-                        BlockSize,
-                        Data
-                        );
-
-    if (EFI_ERROR (Status)) {
-      goto Done;
-    }
-
-    if (Length > BufferSize) {
-      Length              = BufferSize;
-      TransactionComplete = TRUE;
-    }
-
-    CopyMem (WorkingBuffer, Data + UnderRun, Length);
-
-    WorkingBuffer += Length;
-
-    WorkingBufferSize -= Length;
-    if (WorkingBufferSize == 0) {
-      goto Done;
-    }
-
-    Lba += 1;
-  }
-
-  OverRunLba = Lba + DivU64x32Remainder (WorkingBufferSize, BlockSize, &OverRun);
-
-  if (!TransactionComplete && WorkingBufferSize >= BlockSize) {
-    //
-    // If the DiskIo maps directly to a BlockIo device do the read.
-    //
-    if (OverRun != 0) {
-      WorkingBufferSize -= OverRun;
-    }
-    //
-    // Check buffer alignment
-    //
-    IsBufferAligned = (UINTN) WorkingBuffer & (UINTN) (Media->IoAlign - 1);
-
-    if (Media->IoAlign <= 1 || IsBufferAligned == 0) {
-      //
-      // Alignment is satisfied, so read them together
-      //
-      Status = BlockIo->ReadBlocks (
-                          BlockIo,
-                          MediaId,
-                          Lba,
-                          WorkingBufferSize,
-                          WorkingBuffer
-                          );
-
-      if (EFI_ERROR (Status)) {
-        goto Done;
-      }
-
-      WorkingBuffer += WorkingBufferSize;
-
-    } else {
-      //
-      // Use the allocated buffer instead of the original buffer
-      // to avoid alignment issue.
-      // Here, the allocated buffer (8-byte align) can satisfy the alignment
-      //
-      LastRead = FALSE;
-      do {
-        if (WorkingBufferSize <= DataBufferSize) {
-          //
-          // It is the last calling to readblocks in this loop
-          //
-          DataBufferSize  = WorkingBufferSize;
-          LastRead        = TRUE;
-        }
-
-        Status = BlockIo->ReadBlocks (
-                            BlockIo,
-                            MediaId,
-                            Lba,
-                            DataBufferSize,
-                            Data
-                            );
-        if (EFI_ERROR (Status)) {
-          goto Done;
-        }
-
-        CopyMem (WorkingBuffer, Data, DataBufferSize);
-        WorkingBufferSize -= DataBufferSize;
-        WorkingBuffer += DataBufferSize;
-        Lba += DATA_BUFFER_BLOCK_NUM;
-      } while (!LastRead);
-    }
-  }
-
-  if (!TransactionComplete && OverRun != 0) {
-    //
-    // Last read is not a complete block.
-    //
-    Status = BlockIo->ReadBlocks (
-                        BlockIo,
-                        MediaId,
-                        OverRunLba,
-                        BlockSize,
-                        Data
-                        );
-
-    if (EFI_ERROR (Status)) {
-      goto Done;
-    }
-
-    CopyMem (WorkingBuffer, Data, OverRun);
-  }
-
-Done:
-  if (PreData != NULL) {
-    gBS->FreePool (PreData);
-  }
-
-  return Status;
-}
-
-EFI_STATUS
-EFIAPI
-DiskIoWriteDisk (
-  IN EFI_DISK_IO_PROTOCOL  *This,
-  IN UINT32                MediaId,
-  IN UINT64                Offset,
-  IN UINTN                 BufferSize,
-  IN VOID                  *Buffer
-  )
-/*++
-
-  Routine Description:
-    Read BufferSize bytes from Offset into Buffer.
-
-    Writes may require a read modify write to support writes that are not
-    aligned on sector boundaries. There are three cases:
-
-      UnderRun - The first byte is not on a sector boundary or the write request
-                 is less than a sector in length. Read modify write is required.
-
-      Aligned  - A write of N contiguous sectors.
-
-      OverRun  - The last byte is not on a sector boundary. Read modified write
-                 required.
-
-  Arguments:
-    This       - Protocol instance pointer.
-    MediaId    - Id of the media, changes every time the media is replaced.
-    Offset     - The starting byte offset to read from.
-    BufferSize - Size of Buffer.
-    Buffer     - Buffer containing read data.
-
-  Returns:
-    EFI_SUCCESS           - The data was written correctly to the device.
-    EFI_WRITE_PROTECTED   - The device can not be written to.
-    EFI_DEVICE_ERROR      - The device reported an error while performing the write.
-    EFI_NO_MEDIA          - There is no media in the device.
-    EFI_MEDIA_CHNAGED     - The MediaId does not matched the current device.
-    EFI_INVALID_PARAMETER - The write request contains device addresses that are not
-                            valid for the device.
-    EFI_OUT_OF_RESOURCES
-
---*/
-{
-  EFI_STATUS            Status;
-  DISK_IO_PRIVATE_DATA  *Private;
-  EFI_BLOCK_IO_PROTOCOL *BlockIo;
-  EFI_BLOCK_IO_MEDIA    *Media;
-  UINT32                BlockSize;
-  UINT64                Lba;
-  UINT64                OverRunLba;
-  UINT32                UnderRun;
-  UINT32                OverRun;
-  BOOLEAN               TransactionComplete;
-  UINTN                 WorkingBufferSize;
-  UINT8                 *WorkingBuffer;
-  UINTN                 Length;
-  UINT8                 *Data;
-  UINT8                 *PreData;
-  UINTN                 IsBufferAligned;
-  UINTN                 DataBufferSize;
-  BOOLEAN               LastWrite;
-
-  Private   = DISK_IO_PRIVATE_DATA_FROM_THIS (This);
-
-  BlockIo   = Private->BlockIo;
-  Media     = BlockIo->Media;
-  BlockSize = Media->BlockSize;
-
-  if (Media->ReadOnly) {
-    return EFI_WRITE_PROTECTED;
-  }
-
-  if (Media->MediaId != MediaId) {
-    return EFI_MEDIA_CHANGED;
-  }
-
-  DataBufferSize = BlockSize * DATA_BUFFER_BLOCK_NUM;
-
-  if (Media->IoAlign > 1) {
-    PreData = AllocatePool (DataBufferSize + Media->IoAlign);
-    Data    = PreData - ((UINTN) PreData & (Media->IoAlign - 1)) + Media->IoAlign;
-  } else {
-    PreData = AllocatePool (DataBufferSize);
-    Data    = PreData;
-  }
-
-  if (PreData == NULL) {
-    return EFI_OUT_OF_RESOURCES;
-  }
-
-  WorkingBuffer       = Buffer;
-  WorkingBufferSize   = BufferSize;
-
-  Lba                 = DivU64x32Remainder (Offset, BlockSize, &UnderRun);
-
-  Length              = BlockSize - UnderRun;
-  TransactionComplete = FALSE;
-
-  Status              = EFI_SUCCESS;
-  if (UnderRun != 0) {
-    //
-    // Offset starts in the middle of an Lba, so do read modify write.
-    //
-    Status = BlockIo->ReadBlocks (
-                        BlockIo,
-                        MediaId,
-                        Lba,
-                        BlockSize,
-                        Data
-                        );
-
-    if (EFI_ERROR (Status)) {
-      goto Done;
-    }
-
-    if (Length > BufferSize) {
-      Length              = BufferSize;
-      TransactionComplete = TRUE;
-    }
-
-    CopyMem (Data + UnderRun, WorkingBuffer, Length);
-
-    Status = BlockIo->WriteBlocks (
-                        BlockIo,
-                        MediaId,
-                        Lba,
-                        BlockSize,
-                        Data
-                        );
-    if (EFI_ERROR (Status)) {
-      goto Done;
-    }
-
-    WorkingBuffer += Length;
-    WorkingBufferSize -= Length;
-    if (WorkingBufferSize == 0) {
-      goto Done;
-    }
-
-    Lba += 1;
-  }
-
-  OverRunLba = Lba + DivU64x32Remainder (WorkingBufferSize, BlockSize, &OverRun);
-
-  if (!TransactionComplete && WorkingBufferSize >= BlockSize) {
-    //
-    // If the DiskIo maps directly to a BlockIo device do the write.
-    //
-    if (OverRun != 0) {
-      WorkingBufferSize -= OverRun;
-    }
-    //
-    // Check buffer alignment
-    //
-    IsBufferAligned = (UINTN) WorkingBuffer & (UINTN) (Media->IoAlign - 1);
-
-    if (Media->IoAlign <= 1 || IsBufferAligned == 0) {
-      //
-      // Alignment is satisfied, so write them together
-      //
-      Status = BlockIo->WriteBlocks (
-                          BlockIo,
-                          MediaId,
-                          Lba,
-                          WorkingBufferSize,
-                          WorkingBuffer
-                          );
-
-      if (EFI_ERROR (Status)) {
-        goto Done;
-      }
-
-      WorkingBuffer += WorkingBufferSize;
-
-    } else {
-      //
-      // The buffer parameter is not aligned with the request
-      // So use the allocated instead.
-      // It can fit almost all the cases.
-      //
-      LastWrite = FALSE;
-      do {
-        if (WorkingBufferSize <= DataBufferSize) {
-          //
-          // It is the last calling to writeblocks in this loop
-          //
-          DataBufferSize  = WorkingBufferSize;
-          LastWrite       = TRUE;
-        }
-
-        CopyMem (Data, WorkingBuffer, DataBufferSize);
-        Status = BlockIo->WriteBlocks (
-                            BlockIo,
-                            MediaId,
-                            Lba,
-                            DataBufferSize,
-                            Data
-                            );
-        if (EFI_ERROR (Status)) {
-          goto Done;
-        }
-
-        WorkingBufferSize -= DataBufferSize;
-        WorkingBuffer += DataBufferSize;
-        Lba += DATA_BUFFER_BLOCK_NUM;
-      } while (!LastWrite);
-    }
-  }
-
-  if (!TransactionComplete && OverRun != 0) {
-    //
-    // Last bit is not a complete block, so do a read modify write.
-    //
-    Status = BlockIo->ReadBlocks (
-                        BlockIo,
-                        MediaId,
-                        OverRunLba,
-                        BlockSize,
-                        Data
-                        );
-
-    if (EFI_ERROR (Status)) {
-      goto Done;
-    }
-
-    CopyMem (Data, WorkingBuffer, OverRun);
-
-    Status = BlockIo->WriteBlocks (
-                        BlockIo,
-                        MediaId,
-                        OverRunLba,
-                        BlockSize,
-                        Data
-                        );
-    if (EFI_ERROR (Status)) {
-      goto Done;
-    }
-  }
-
-Done:
-  if (PreData != NULL) {
-    gBS->FreePool (PreData);
-  }
-
-  return Status;
-}
+/*++\r
+\r
+Copyright (c) 2006, Intel Corporation\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution.  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
+\r
+Module Name:\r
+\r
+  DiskIo.c\r
+\r
+Abstract:\r
+\r
+  DiskIo driver that layers it's self on every Block IO protocol in the system.\r
+  DiskIo converts a block oriented device to a byte oriented device.\r
+\r
+  ReadDisk may have to do reads that are not aligned on sector boundaries.\r
+  There are three cases:\r
+\r
+    UnderRun - The first byte is not on a sector boundary or the read request is\r
+               less than a sector in length.\r
+\r
+    Aligned  - A read of N contiguous sectors.\r
+\r
+    OverRun  - The last byte is not on a sector boundary.\r
+\r
+--*/\r
+\r
+#include "DiskIo.h"\r
+\r
+//\r
+// Prototypes\r
+// Driver model protocol interface\r
+//\r
+EFI_STATUS\r
+EFIAPI\r
+DiskIoDriverBindingSupported (\r
+  IN EFI_DRIVER_BINDING_PROTOCOL    *This,\r
+  IN EFI_HANDLE                     ControllerHandle,\r
+  IN EFI_DEVICE_PATH_PROTOCOL       *RemainingDevicePath\r
+  );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+DiskIoDriverBindingStart (\r
+  IN EFI_DRIVER_BINDING_PROTOCOL    *This,\r
+  IN EFI_HANDLE                     ControllerHandle,\r
+  IN EFI_DEVICE_PATH_PROTOCOL       *RemainingDevicePath\r
+  );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+DiskIoDriverBindingStop (\r
+  IN  EFI_DRIVER_BINDING_PROTOCOL    *This,\r
+  IN  EFI_HANDLE                     ControllerHandle,\r
+  IN  UINTN                          NumberOfChildren,\r
+  IN  EFI_HANDLE                     *ChildHandleBuffer\r
+  );\r
+\r
+//\r
+// Disk I/O Protocol Interface\r
+//\r
+EFI_STATUS\r
+EFIAPI\r
+DiskIoReadDisk (\r
+  IN EFI_DISK_IO_PROTOCOL  *This,\r
+  IN UINT32                MediaId,\r
+  IN UINT64                Offset,\r
+  IN UINTN                 BufferSize,\r
+  OUT VOID                 *Buffer\r
+  );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+DiskIoWriteDisk (\r
+  IN EFI_DISK_IO_PROTOCOL  *This,\r
+  IN UINT32                MediaId,\r
+  IN UINT64                Offset,\r
+  IN UINTN                 BufferSize,\r
+  IN VOID                  *Buffer\r
+  );\r
+\r
+EFI_DRIVER_BINDING_PROTOCOL gDiskIoDriverBinding = {\r
+  DiskIoDriverBindingSupported,\r
+  DiskIoDriverBindingStart,\r
+  DiskIoDriverBindingStop,\r
+  0x10,\r
+  NULL,\r
+  NULL\r
+};\r
+\r
+DISK_IO_PRIVATE_DATA        gDiskIoPrivateDataTemplate = {\r
+  DISK_IO_PRIVATE_DATA_SIGNATURE,\r
+  {\r
+    EFI_DISK_IO_PROTOCOL_REVISION,\r
+    DiskIoReadDisk,\r
+    DiskIoWriteDisk\r
+  },\r
+  NULL\r
+};\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+DiskIoDriverBindingSupported (\r
+  IN EFI_DRIVER_BINDING_PROTOCOL  *This,\r
+  IN EFI_HANDLE                   ControllerHandle,\r
+  IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath OPTIONAL\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Test to see if this driver supports ControllerHandle. Any ControllerHandle\r
+    than contains a BlockIo protocol can be supported.\r
+\r
+  Arguments:\r
+    This                - Protocol instance pointer.\r
+    ControllerHandle    - Handle of device to test.\r
+    RemainingDevicePath - Not used.\r
+\r
+  Returns:\r
+    EFI_SUCCESS         - This driver supports this device.\r
+    EFI_ALREADY_STARTED - This driver is already running on this device.\r
+    other               - This driver does not support this device.\r
+\r
+--*/\r
+{\r
+  EFI_STATUS            Status;\r
+  EFI_BLOCK_IO_PROTOCOL *BlockIo;\r
+\r
+  //\r
+  // Open the IO Abstraction(s) needed to perform the supported test.\r
+  //\r
+  Status = gBS->OpenProtocol (\r
+                  ControllerHandle,\r
+                  &gEfiBlockIoProtocolGuid,\r
+                  (VOID **) &BlockIo,\r
+                  This->DriverBindingHandle,\r
+                  ControllerHandle,\r
+                  EFI_OPEN_PROTOCOL_BY_DRIVER\r
+                  );\r
+  if (EFI_ERROR (Status)) {\r
+    return Status;\r
+  }\r
+  //\r
+  // Close the I/O Abstraction(s) used to perform the supported test.\r
+  //\r
+  gBS->CloseProtocol (\r
+        ControllerHandle,\r
+        &gEfiBlockIoProtocolGuid,\r
+        This->DriverBindingHandle,\r
+        ControllerHandle\r
+        );\r
+  return EFI_SUCCESS;\r
+}\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+DiskIoDriverBindingStart (\r
+  IN EFI_DRIVER_BINDING_PROTOCOL  *This,\r
+  IN EFI_HANDLE                   ControllerHandle,\r
+  IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath OPTIONAL\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Start this driver on ControllerHandle by opening a Block IO protocol and\r
+    installing a Disk IO protocol on ControllerHandle.\r
+\r
+  Arguments:\r
+    This                - Protocol instance pointer.\r
+    ControllerHandle    - Handle of device to bind driver to.\r
+    RemainingDevicePath - Not used, always produce all possible children.\r
+\r
+  Returns:\r
+    EFI_SUCCESS         - This driver is added to ControllerHandle.\r
+    EFI_ALREADY_STARTED - This driver is already running on ControllerHandle.\r
+    other               - This driver does not support this device.\r
+\r
+--*/\r
+{\r
+  EFI_STATUS            Status;\r
+  DISK_IO_PRIVATE_DATA  *Private;\r
+\r
+  Private = NULL;\r
+\r
+  //\r
+  // Connect to the Block IO interface on ControllerHandle.\r
+  //\r
+  Status = gBS->OpenProtocol (\r
+                  ControllerHandle,\r
+                  &gEfiBlockIoProtocolGuid,\r
+                  (VOID **) &gDiskIoPrivateDataTemplate.BlockIo,\r
+                  This->DriverBindingHandle,\r
+                  ControllerHandle,\r
+                  EFI_OPEN_PROTOCOL_BY_DRIVER\r
+                  );\r
+  if (EFI_ERROR (Status)) {\r
+    return Status;\r
+  }\r
+  //\r
+  // Initialize the Disk IO device instance.\r
+  //\r
+  Private = AllocateCopyPool (sizeof (DISK_IO_PRIVATE_DATA), &gDiskIoPrivateDataTemplate);\r
+  if (Private == NULL) {\r
+    Status = EFI_OUT_OF_RESOURCES;\r
+    goto ErrorExit;\r
+  }\r
+  //\r
+  // Install protocol interfaces for the Disk IO device.\r
+  //\r
+  Status = gBS->InstallProtocolInterface (\r
+                  &ControllerHandle,\r
+                  &gEfiDiskIoProtocolGuid,\r
+                  EFI_NATIVE_INTERFACE,\r
+                  &Private->DiskIo\r
+                  );\r
+\r
+ErrorExit:\r
+  if (EFI_ERROR (Status)) {\r
+\r
+    if (Private != NULL) {\r
+      gBS->FreePool (Private);\r
+    }\r
+\r
+    gBS->CloseProtocol (\r
+          ControllerHandle,\r
+          &gEfiBlockIoProtocolGuid,\r
+          This->DriverBindingHandle,\r
+          ControllerHandle\r
+          );\r
+  }\r
+\r
+  return Status;\r
+}\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+DiskIoDriverBindingStop (\r
+  IN  EFI_DRIVER_BINDING_PROTOCOL    *This,\r
+  IN  EFI_HANDLE                     ControllerHandle,\r
+  IN  UINTN                          NumberOfChildren,\r
+  IN  EFI_HANDLE                     *ChildHandleBuffer\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Stop this driver on ControllerHandle by removing Disk IO protocol and closing\r
+    the Block IO protocol on ControllerHandle.\r
+\r
+  Arguments:\r
+    This              - Protocol instance pointer.\r
+    ControllerHandle  - Handle of device to stop driver on.\r
+    NumberOfChildren  - Not used.\r
+    ChildHandleBuffer - Not used.\r
+\r
+  Returns:\r
+    EFI_SUCCESS         - This driver is removed ControllerHandle.\r
+    other               - This driver was not removed from this device.\r
+    EFI_UNSUPPORTED\r
+\r
+--*/\r
+{\r
+  EFI_STATUS            Status;\r
+  EFI_DISK_IO_PROTOCOL  *DiskIo;\r
+  DISK_IO_PRIVATE_DATA  *Private;\r
+\r
+  //\r
+  // Get our context back.\r
+  //\r
+  Status = gBS->OpenProtocol (\r
+                  ControllerHandle,\r
+                  &gEfiDiskIoProtocolGuid,\r
+                  (VOID **) &DiskIo,\r
+                  This->DriverBindingHandle,\r
+                  ControllerHandle,\r
+                  EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
+                  );\r
+  if (EFI_ERROR (Status)) {\r
+    return EFI_UNSUPPORTED;\r
+  }\r
+\r
+  Private = DISK_IO_PRIVATE_DATA_FROM_THIS (DiskIo);\r
+\r
+  Status = gBS->UninstallProtocolInterface (\r
+                  ControllerHandle,\r
+                  &gEfiDiskIoProtocolGuid,\r
+                  &Private->DiskIo\r
+                  );\r
+  if (!EFI_ERROR (Status)) {\r
+\r
+    Status = gBS->CloseProtocol (\r
+                    ControllerHandle,\r
+                    &gEfiBlockIoProtocolGuid,\r
+                    This->DriverBindingHandle,\r
+                    ControllerHandle\r
+                    );\r
+  }\r
+\r
+  if (!EFI_ERROR (Status)) {\r
+    gBS->FreePool (Private);\r
+  }\r
+\r
+  return Status;\r
+}\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+DiskIoReadDisk (\r
+  IN EFI_DISK_IO_PROTOCOL  *This,\r
+  IN UINT32                MediaId,\r
+  IN UINT64                Offset,\r
+  IN UINTN                 BufferSize,\r
+  OUT VOID                 *Buffer\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Read BufferSize bytes from Offset into Buffer.\r
+\r
+    Reads may support reads that are not aligned on\r
+    sector boundaries. There are three cases:\r
+\r
+      UnderRun - The first byte is not on a sector boundary or the read request is\r
+                 less than a sector in length.\r
+\r
+      Aligned  - A read of N contiguous sectors.\r
+\r
+      OverRun  - The last byte is not on a sector boundary.\r
+\r
+\r
+  Arguments:\r
+    This       - Protocol instance pointer.\r
+    MediaId    - Id of the media, changes every time the media is replaced.\r
+    Offset     - The starting byte offset to read from.\r
+    BufferSize - Size of Buffer.\r
+    Buffer     - Buffer containing read data.\r
+\r
+  Returns:\r
+    EFI_SUCCESS           - The data was read correctly from the device.\r
+    EFI_DEVICE_ERROR      - The device reported an error while performing the read.\r
+    EFI_NO_MEDIA          - There is no media in the device.\r
+    EFI_MEDIA_CHNAGED     - The MediaId does not matched the current device.\r
+    EFI_INVALID_PARAMETER - The read request contains device addresses that are not\r
+                            valid for the device.\r
+    EFI_OUT_OF_RESOURCES\r
+\r
+--*/\r
+{\r
+  EFI_STATUS            Status;\r
+  DISK_IO_PRIVATE_DATA  *Private;\r
+  EFI_BLOCK_IO_PROTOCOL *BlockIo;\r
+  EFI_BLOCK_IO_MEDIA    *Media;\r
+  UINT32                BlockSize;\r
+  UINT64                Lba;\r
+  UINT64                OverRunLba;\r
+  UINT32                UnderRun;\r
+  UINT32                OverRun;\r
+  BOOLEAN               TransactionComplete;\r
+  UINTN                 WorkingBufferSize;\r
+  UINT8                 *WorkingBuffer;\r
+  UINTN                 Length;\r
+  UINT8                 *Data;\r
+  UINT8                 *PreData;\r
+  UINTN                 IsBufferAligned;\r
+  UINTN                 DataBufferSize;\r
+  BOOLEAN               LastRead;\r
+\r
+  Private   = DISK_IO_PRIVATE_DATA_FROM_THIS (This);\r
+\r
+  BlockIo   = Private->BlockIo;\r
+  Media     = BlockIo->Media;\r
+  BlockSize = Media->BlockSize;\r
+\r
+  if (Media->MediaId != MediaId) {\r
+    return EFI_MEDIA_CHANGED;\r
+  }\r
+\r
+  WorkingBuffer     = Buffer;\r
+  WorkingBufferSize = BufferSize;\r
+\r
+  //\r
+  // Allocate a temporary buffer for operation\r
+  //\r
+  DataBufferSize = BlockSize * DATA_BUFFER_BLOCK_NUM;\r
+\r
+  if (Media->IoAlign > 1) {\r
+    PreData = AllocatePool (DataBufferSize + Media->IoAlign);\r
+    Data    = PreData - ((UINTN) PreData & (Media->IoAlign - 1)) + Media->IoAlign;\r
+  } else {\r
+    PreData = AllocatePool (DataBufferSize);\r
+    Data    = PreData;\r
+  }\r
+\r
+  if (PreData == NULL) {\r
+    return EFI_OUT_OF_RESOURCES;\r
+  }\r
+\r
+  Lba                 = DivU64x32Remainder (Offset, BlockSize, &UnderRun);\r
+\r
+  Length              = BlockSize - UnderRun;\r
+  TransactionComplete = FALSE;\r
+\r
+  Status              = EFI_SUCCESS;\r
+  if (UnderRun != 0) {\r
+    //\r
+    // Offset starts in the middle of an Lba, so read the entire block.\r
+    //\r
+    Status = BlockIo->ReadBlocks (\r
+                        BlockIo,\r
+                        MediaId,\r
+                        Lba,\r
+                        BlockSize,\r
+                        Data\r
+                        );\r
+\r
+    if (EFI_ERROR (Status)) {\r
+      goto Done;\r
+    }\r
+\r
+    if (Length > BufferSize) {\r
+      Length              = BufferSize;\r
+      TransactionComplete = TRUE;\r
+    }\r
+\r
+    CopyMem (WorkingBuffer, Data + UnderRun, Length);\r
+\r
+    WorkingBuffer += Length;\r
+\r
+    WorkingBufferSize -= Length;\r
+    if (WorkingBufferSize == 0) {\r
+      goto Done;\r
+    }\r
+\r
+    Lba += 1;\r
+  }\r
+\r
+  OverRunLba = Lba + DivU64x32Remainder (WorkingBufferSize, BlockSize, &OverRun);\r
+\r
+  if (!TransactionComplete && WorkingBufferSize >= BlockSize) {\r
+    //\r
+    // If the DiskIo maps directly to a BlockIo device do the read.\r
+    //\r
+    if (OverRun != 0) {\r
+      WorkingBufferSize -= OverRun;\r
+    }\r
+    //\r
+    // Check buffer alignment\r
+    //\r
+    IsBufferAligned = (UINTN) WorkingBuffer & (UINTN) (Media->IoAlign - 1);\r
+\r
+    if (Media->IoAlign <= 1 || IsBufferAligned == 0) {\r
+      //\r
+      // Alignment is satisfied, so read them together\r
+      //\r
+      Status = BlockIo->ReadBlocks (\r
+                          BlockIo,\r
+                          MediaId,\r
+                          Lba,\r
+                          WorkingBufferSize,\r
+                          WorkingBuffer\r
+                          );\r
+\r
+      if (EFI_ERROR (Status)) {\r
+        goto Done;\r
+      }\r
+\r
+      WorkingBuffer += WorkingBufferSize;\r
+\r
+    } else {\r
+      //\r
+      // Use the allocated buffer instead of the original buffer\r
+      // to avoid alignment issue.\r
+      // Here, the allocated buffer (8-byte align) can satisfy the alignment\r
+      //\r
+      LastRead = FALSE;\r
+      do {\r
+        if (WorkingBufferSize <= DataBufferSize) {\r
+          //\r
+          // It is the last calling to readblocks in this loop\r
+          //\r
+          DataBufferSize  = WorkingBufferSize;\r
+          LastRead        = TRUE;\r
+        }\r
+\r
+        Status = BlockIo->ReadBlocks (\r
+                            BlockIo,\r
+                            MediaId,\r
+                            Lba,\r
+                            DataBufferSize,\r
+                            Data\r
+                            );\r
+        if (EFI_ERROR (Status)) {\r
+          goto Done;\r
+        }\r
+\r
+        CopyMem (WorkingBuffer, Data, DataBufferSize);\r
+        WorkingBufferSize -= DataBufferSize;\r
+        WorkingBuffer += DataBufferSize;\r
+        Lba += DATA_BUFFER_BLOCK_NUM;\r
+      } while (!LastRead);\r
+    }\r
+  }\r
+\r
+  if (!TransactionComplete && OverRun != 0) {\r
+    //\r
+    // Last read is not a complete block.\r
+    //\r
+    Status = BlockIo->ReadBlocks (\r
+                        BlockIo,\r
+                        MediaId,\r
+                        OverRunLba,\r
+                        BlockSize,\r
+                        Data\r
+                        );\r
+\r
+    if (EFI_ERROR (Status)) {\r
+      goto Done;\r
+    }\r
+\r
+    CopyMem (WorkingBuffer, Data, OverRun);\r
+  }\r
+\r
+Done:\r
+  if (PreData != NULL) {\r
+    gBS->FreePool (PreData);\r
+  }\r
+\r
+  return Status;\r
+}\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+DiskIoWriteDisk (\r
+  IN EFI_DISK_IO_PROTOCOL  *This,\r
+  IN UINT32                MediaId,\r
+  IN UINT64                Offset,\r
+  IN UINTN                 BufferSize,\r
+  IN VOID                  *Buffer\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Read BufferSize bytes from Offset into Buffer.\r
+\r
+    Writes may require a read modify write to support writes that are not\r
+    aligned on sector boundaries. There are three cases:\r
+\r
+      UnderRun - The first byte is not on a sector boundary or the write request\r
+                 is less than a sector in length. Read modify write is required.\r
+\r
+      Aligned  - A write of N contiguous sectors.\r
+\r
+      OverRun  - The last byte is not on a sector boundary. Read modified write\r
+                 required.\r
+\r
+  Arguments:\r
+    This       - Protocol instance pointer.\r
+    MediaId    - Id of the media, changes every time the media is replaced.\r
+    Offset     - The starting byte offset to read from.\r
+    BufferSize - Size of Buffer.\r
+    Buffer     - Buffer containing read data.\r
+\r
+  Returns:\r
+    EFI_SUCCESS           - The data was written correctly to the device.\r
+    EFI_WRITE_PROTECTED   - The device can not be written to.\r
+    EFI_DEVICE_ERROR      - The device reported an error while performing the write.\r
+    EFI_NO_MEDIA          - There is no media in the device.\r
+    EFI_MEDIA_CHNAGED     - The MediaId does not matched the current device.\r
+    EFI_INVALID_PARAMETER - The write request contains device addresses that are not\r
+                            valid for the device.\r
+    EFI_OUT_OF_RESOURCES\r
+\r
+--*/\r
+{\r
+  EFI_STATUS            Status;\r
+  DISK_IO_PRIVATE_DATA  *Private;\r
+  EFI_BLOCK_IO_PROTOCOL *BlockIo;\r
+  EFI_BLOCK_IO_MEDIA    *Media;\r
+  UINT32                BlockSize;\r
+  UINT64                Lba;\r
+  UINT64                OverRunLba;\r
+  UINT32                UnderRun;\r
+  UINT32                OverRun;\r
+  BOOLEAN               TransactionComplete;\r
+  UINTN                 WorkingBufferSize;\r
+  UINT8                 *WorkingBuffer;\r
+  UINTN                 Length;\r
+  UINT8                 *Data;\r
+  UINT8                 *PreData;\r
+  UINTN                 IsBufferAligned;\r
+  UINTN                 DataBufferSize;\r
+  BOOLEAN               LastWrite;\r
+\r
+  Private   = DISK_IO_PRIVATE_DATA_FROM_THIS (This);\r
+\r
+  BlockIo   = Private->BlockIo;\r
+  Media     = BlockIo->Media;\r
+  BlockSize = Media->BlockSize;\r
+\r
+  if (Media->ReadOnly) {\r
+    return EFI_WRITE_PROTECTED;\r
+  }\r
+\r
+  if (Media->MediaId != MediaId) {\r
+    return EFI_MEDIA_CHANGED;\r
+  }\r
+\r
+  DataBufferSize = BlockSize * DATA_BUFFER_BLOCK_NUM;\r
+\r
+  if (Media->IoAlign > 1) {\r
+    PreData = AllocatePool (DataBufferSize + Media->IoAlign);\r
+    Data    = PreData - ((UINTN) PreData & (Media->IoAlign - 1)) + Media->IoAlign;\r
+  } else {\r
+    PreData = AllocatePool (DataBufferSize);\r
+    Data    = PreData;\r
+  }\r
+\r
+  if (PreData == NULL) {\r
+    return EFI_OUT_OF_RESOURCES;\r
+  }\r
+\r
+  WorkingBuffer       = Buffer;\r
+  WorkingBufferSize   = BufferSize;\r
+\r
+  Lba                 = DivU64x32Remainder (Offset, BlockSize, &UnderRun);\r
+\r
+  Length              = BlockSize - UnderRun;\r
+  TransactionComplete = FALSE;\r
+\r
+  Status              = EFI_SUCCESS;\r
+  if (UnderRun != 0) {\r
+    //\r
+    // Offset starts in the middle of an Lba, so do read modify write.\r
+    //\r
+    Status = BlockIo->ReadBlocks (\r
+                        BlockIo,\r
+                        MediaId,\r
+                        Lba,\r
+                        BlockSize,\r
+                        Data\r
+                        );\r
+\r
+    if (EFI_ERROR (Status)) {\r
+      goto Done;\r
+    }\r
+\r
+    if (Length > BufferSize) {\r
+      Length              = BufferSize;\r
+      TransactionComplete = TRUE;\r
+    }\r
+\r
+    CopyMem (Data + UnderRun, WorkingBuffer, Length);\r
+\r
+    Status = BlockIo->WriteBlocks (\r
+                        BlockIo,\r
+                        MediaId,\r
+                        Lba,\r
+                        BlockSize,\r
+                        Data\r
+                        );\r
+    if (EFI_ERROR (Status)) {\r
+      goto Done;\r
+    }\r
+\r
+    WorkingBuffer += Length;\r
+    WorkingBufferSize -= Length;\r
+    if (WorkingBufferSize == 0) {\r
+      goto Done;\r
+    }\r
+\r
+    Lba += 1;\r
+  }\r
+\r
+  OverRunLba = Lba + DivU64x32Remainder (WorkingBufferSize, BlockSize, &OverRun);\r
+\r
+  if (!TransactionComplete && WorkingBufferSize >= BlockSize) {\r
+    //\r
+    // If the DiskIo maps directly to a BlockIo device do the write.\r
+    //\r
+    if (OverRun != 0) {\r
+      WorkingBufferSize -= OverRun;\r
+    }\r
+    //\r
+    // Check buffer alignment\r
+    //\r
+    IsBufferAligned = (UINTN) WorkingBuffer & (UINTN) (Media->IoAlign - 1);\r
+\r
+    if (Media->IoAlign <= 1 || IsBufferAligned == 0) {\r
+      //\r
+      // Alignment is satisfied, so write them together\r
+      //\r
+      Status = BlockIo->WriteBlocks (\r
+                          BlockIo,\r
+                          MediaId,\r
+                          Lba,\r
+                          WorkingBufferSize,\r
+                          WorkingBuffer\r
+                          );\r
+\r
+      if (EFI_ERROR (Status)) {\r
+        goto Done;\r
+      }\r
+\r
+      WorkingBuffer += WorkingBufferSize;\r
+\r
+    } else {\r
+      //\r
+      // The buffer parameter is not aligned with the request\r
+      // So use the allocated instead.\r
+      // It can fit almost all the cases.\r
+      //\r
+      LastWrite = FALSE;\r
+      do {\r
+        if (WorkingBufferSize <= DataBufferSize) {\r
+          //\r
+          // It is the last calling to writeblocks in this loop\r
+          //\r
+          DataBufferSize  = WorkingBufferSize;\r
+          LastWrite       = TRUE;\r
+        }\r
+\r
+        CopyMem (Data, WorkingBuffer, DataBufferSize);\r
+        Status = BlockIo->WriteBlocks (\r
+                            BlockIo,\r
+                            MediaId,\r
+                            Lba,\r
+                            DataBufferSize,\r
+                            Data\r
+                            );\r
+        if (EFI_ERROR (Status)) {\r
+          goto Done;\r
+        }\r
+\r
+        WorkingBufferSize -= DataBufferSize;\r
+        WorkingBuffer += DataBufferSize;\r
+        Lba += DATA_BUFFER_BLOCK_NUM;\r
+      } while (!LastWrite);\r
+    }\r
+  }\r
+\r
+  if (!TransactionComplete && OverRun != 0) {\r
+    //\r
+    // Last bit is not a complete block, so do a read modify write.\r
+    //\r
+    Status = BlockIo->ReadBlocks (\r
+                        BlockIo,\r
+                        MediaId,\r
+                        OverRunLba,\r
+                        BlockSize,\r
+                        Data\r
+                        );\r
+\r
+    if (EFI_ERROR (Status)) {\r
+      goto Done;\r
+    }\r
+\r
+    CopyMem (Data, WorkingBuffer, OverRun);\r
+\r
+    Status = BlockIo->WriteBlocks (\r
+                        BlockIo,\r
+                        MediaId,\r
+                        OverRunLba,\r
+                        BlockSize,\r
+                        Data\r
+                        );\r
+    if (EFI_ERROR (Status)) {\r
+      goto Done;\r
+    }\r
+  }\r
+\r
+Done:\r
+  if (PreData != NULL) {\r
+    gBS->FreePool (PreData);\r
+  }\r
+\r
+  return Status;\r
+}\r
index 5bb54a201ee2a6d9f868a7f4267e33fa22ce204a..43fe3fdfda6c47e05b73d6f3a9a2dbcce850701a 100644 (file)
@@ -27,7 +27,7 @@
                         This includes information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity.  \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time.  \r
                         This includes information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity.  \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time.  \r
-                        Type EFI_STATUS_CODE_VALUE is defined in ¡°Related Definitions¡± below.  \r
+                        Type EFI_STATUS_CODE_VALUE is defined in "Related Definitions" below.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
                         A system may contain multiple entities that match a class/subclass pairing.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
                         A system may contain multiple entities that match a class/subclass pairing.  \r
@@ -122,7 +122,7 @@ DxeStatusCodeDriverEntry (
                         This includes information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity.  \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time.  \r
                         This includes information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity.  \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time.  \r
-                        Type EFI_STATUS_CODE_VALUE is defined in ¡°Related Definitions¡± below.  \r
+                        Type EFI_STATUS_CODE_VALUE is defined in "Related Definitions" below.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
                         A system may contain multiple entities that match a class/subclass pairing.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
                         A system may contain multiple entities that match a class/subclass pairing.  \r
@@ -206,7 +206,7 @@ ReportDispatcher (
   to virtual address.\r
 \r
   @param  Event         Event whose notification function is being invoked.\r
   to virtual address.\r
 \r
   @param  Event         Event whose notification function is being invoked.\r
-  @param  Context       Pointer to the notification function¡¯s context, which is\r
+  @param  Context       Pointer to the notification function's context, which is\r
                         always zero in current implementation.\r
 \r
 **/\r
                         always zero in current implementation.\r
 \r
 **/\r
index 1598397209dc9d666010da4df2c69d90eef15945..c5da3220ce4f34c4bc05ceca8c61bad3e4496aa5 100644 (file)
@@ -88,13 +88,13 @@ FreeRecordBuffer (
 /**\r
   Report status code into DataHub.\r
  \r
 /**\r
   Report status code into DataHub.\r
  \r
-  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions¡± below.\r
+  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions" below.\r
  \r
   @param  Value         Describes the current status of a hardware or software entity.  \r
                         This included information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity. \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time. \r
  \r
   @param  Value         Describes the current status of a hardware or software entity.  \r
                         This included information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity. \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time. \r
-                        Type EFI_STATUS_CODE_VALUE is defined in ¡°Related Definitions¡± below.  \r
+                        Type EFI_STATUS_CODE_VALUE is defined in "Related Definitions" below.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
  \r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
  \r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
index 16fa3e8097ceabd032c9248c310cdbbe4dacb29c..e03dc372415f09bfa3dd39c73c1f3adb4eb4fb21 100644 (file)
@@ -102,13 +102,13 @@ EfiSerialStatusCodeInitializeWorker (
 /**\r
   Convert status code value and extended data to readable ASCII string, send string to serial I/O device.\r
  \r
 /**\r
   Convert status code value and extended data to readable ASCII string, send string to serial I/O device.\r
  \r
-  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions¡± below.\r
+  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions" below.\r
  \r
   @param  Value         Describes the current status of a hardware or software entity.  \r
                         This included information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity. \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time. \r
  \r
   @param  Value         Describes the current status of a hardware or software entity.  \r
                         This included information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity. \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time. \r
-                        Type EFI_STATUS_CODE_VALUE is defined in ¡°Related Definitions¡± below.  \r
+                        Type EFI_STATUS_CODE_VALUE is defined in "Related Definitions" below.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
  \r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
  \r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
@@ -155,13 +155,13 @@ RtMemoryStatusCodeInitializeWorker (
   @param  RtMemoryStatusCodeTable      \r
                         Point to Runtime memory table header.\r
 \r
   @param  RtMemoryStatusCodeTable      \r
                         Point to Runtime memory table header.\r
 \r
-  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions¡± below.\r
+  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions" below.\r
  \r
   @param  Value         Describes the current status of a hardware or software entity.  \r
                         This included information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity. \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time. \r
  \r
   @param  Value         Describes the current status of a hardware or software entity.  \r
                         This included information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity. \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time. \r
-                        Type EFI_STATUS_CODE_VALUE is defined in ¡°Related Definitions¡± below.  \r
+                        Type EFI_STATUS_CODE_VALUE is defined in "Related Definitions" below.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
  \r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
  \r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
@@ -196,13 +196,13 @@ DataHubStatusCodeInitializeWorker (
 /**\r
   Report status code into DataHub.\r
  \r
 /**\r
   Report status code into DataHub.\r
  \r
-  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions¡± below.\r
+  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions" below.\r
  \r
   @param  Value         Describes the current status of a hardware or software entity.  \r
                         This included information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity. \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time. \r
  \r
   @param  Value         Describes the current status of a hardware or software entity.  \r
                         This included information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity. \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time. \r
-                        Type EFI_STATUS_CODE_VALUE is defined in ¡°Related Definitions¡± below.  \r
+                        Type EFI_STATUS_CODE_VALUE is defined in "Related Definitions" below.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
  \r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
  \r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
index 3838069bb57764f3cecaa3c8ce3e165c93ef682f..614ad5094e8704f338550e3bbc4d2cf2004acde1 100644 (file)
@@ -178,7 +178,7 @@ DxeStatusCodeDriverEntry (
   virtual mode.\r
 \r
   @param  Event         Event whose notification function is being invoked.\r
   virtual mode.\r
 \r
   @param  Event         Event whose notification function is being invoked.\r
-  @param  Context       Pointer to the notification function¡¯s context, which is\r
+  @param  Context       Pointer to the notification function's context, which is\r
                         always zero in current implementation.\r
 \r
 **/\r
                         always zero in current implementation.\r
 \r
 **/\r
index c0c9edd93960b943d4f410b7708e1ab0348be536..532ea819ec14b0190dfbf230f59345d6f3604c20 100644 (file)
@@ -58,13 +58,13 @@ RtMemoryStatusCodeInitializeWorker (
   @param  RtMemoryStatusCodeTable      \r
                         Point to Runtime memory table header.\r
 \r
   @param  RtMemoryStatusCodeTable      \r
                         Point to Runtime memory table header.\r
 \r
-  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions¡± below.\r
+  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions" below.\r
  \r
   @param  Value         Describes the current status of a hardware or software entity.  \r
                         This included information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity. \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time. \r
  \r
   @param  Value         Describes the current status of a hardware or software entity.  \r
                         This included information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity. \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time. \r
-                        Type EFI_STATUS_CODE_VALUE is defined in ¡°Related Definitions¡± below.  \r
+                        Type EFI_STATUS_CODE_VALUE is defined in "Related Definitions" below.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
  \r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
  \r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
index 69e3e10757b749636b351d027165347005cc00e5..d4912836bccb020658d042b775c2c5181f671f66 100644 (file)
@@ -46,13 +46,13 @@ EfiSerialStatusCodeInitializeWorker (
 /**\r
   Convert status code value and extended data to readable ASCII string, send string to serial I/O device.\r
  \r
 /**\r
   Convert status code value and extended data to readable ASCII string, send string to serial I/O device.\r
  \r
-  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions¡± below.\r
+  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions" below.\r
  \r
   @param  Value         Describes the current status of a hardware or software entity.  \r
                         This included information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity. \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time. \r
  \r
   @param  Value         Describes the current status of a hardware or software entity.  \r
                         This included information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity. \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time. \r
-                        Type EFI_STATUS_CODE_VALUE is defined in ¡°Related Definitions¡± below.  \r
+                        Type EFI_STATUS_CODE_VALUE is defined in "Related Definitions" below.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
  \r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
  \r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
index 5614d80c6a7feb3dde41a9e341fc6a1b3936ed2a..9b703878fdd641a2c0f08747da7728f2d11c149d 100644 (file)
@@ -76,13 +76,13 @@ MemoryStatusCodeInitializeWorker (
 /**\r
   Report status code into GUID'ed HOB..\r
  \r
 /**\r
   Report status code into GUID'ed HOB..\r
  \r
-  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions¡± below.\r
+  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions" below.\r
  \r
   @param  Value         Describes the current status of a hardware or software entity.  \r
                         This included information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity. \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time. \r
  \r
   @param  Value         Describes the current status of a hardware or software entity.  \r
                         This included information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity. \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time. \r
-                        Type EFI_STATUS_CODE_VALUE is defined in ¡°Related Definitions¡± below.  \r
+                        Type EFI_STATUS_CODE_VALUE is defined in "Related Definitions" below.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
  \r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
  \r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
index 29db86d4d32e7798916f89e6f3af1b3796b1cdfd..0671201233b6cf2872ae7a1f6a2207edcd46c3dd 100644 (file)
@@ -29,7 +29,7 @@
                         This includes information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity.  \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time.  \r
                         This includes information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity.  \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time.  \r
-                        Type EFI_STATUS_CODE_VALUE is defined in ¡°Related Definitions¡± below.  \r
+                        Type EFI_STATUS_CODE_VALUE is defined in "Related Definitions" below.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
                         A system may contain multiple entities that match a class/subclass pairing.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
                         A system may contain multiple entities that match a class/subclass pairing.  \r
@@ -80,7 +80,7 @@ EFI_PEI_PPI_DESCRIPTOR        mStatusCodePpiDescriptor = {
                         This includes information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity.  \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time.  \r
                         This includes information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity.  \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time.  \r
-                        Type EFI_STATUS_CODE_VALUE is defined in ¡°Related Definitions¡± below.  \r
+                        Type EFI_STATUS_CODE_VALUE is defined in "Related Definitions" below.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
                         A system may contain multiple entities that match a class/subclass pairing.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
                         A system may contain multiple entities that match a class/subclass pairing.  \r
index f27ae88fcf8398ebebf6f74f2461be48d1b8f052..88ea9ce260f592956a05a65b5006603241e2a292 100644 (file)
 /**\r
   Convert status code value and extended data to readable ASCII string, send string to serial I/O device.\r
  \r
 /**\r
   Convert status code value and extended data to readable ASCII string, send string to serial I/O device.\r
  \r
-  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions¡± below.\r
+  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions" below.\r
  \r
   @param  Value         Describes the current status of a hardware or software entity.  \r
                         This included information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity. \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time. \r
  \r
   @param  Value         Describes the current status of a hardware or software entity.  \r
                         This included information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity. \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time. \r
-                        Type EFI_STATUS_CODE_VALUE is defined in ¡°Related Definitions¡± below.  \r
+                        Type EFI_STATUS_CODE_VALUE is defined in "Related Definitions" below.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
  \r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
  \r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
@@ -73,13 +73,13 @@ MemoryStatusCodeInitializeWorker (
 /**\r
   Report status code into GUID'ed HOB.\r
  \r
 /**\r
   Report status code into GUID'ed HOB.\r
  \r
-  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions¡± below.\r
+  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions" below.\r
  \r
   @param  Value         Describes the current status of a hardware or software entity.  \r
                         This included information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity. \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time. \r
  \r
   @param  Value         Describes the current status of a hardware or software entity.  \r
                         This included information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity. \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time. \r
-                        Type EFI_STATUS_CODE_VALUE is defined in ¡°Related Definitions¡± below.  \r
+                        Type EFI_STATUS_CODE_VALUE is defined in "Related Definitions" below.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
  \r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
  \r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
index b63692a68d1e19add65c30db9e334ebc4a1171ff..3cd072ca2c078c77172e6c65051308f55ea7d6c7 100644 (file)
 /**\r
   Convert status code value and extended data to readable ASCII string, send string to serial I/O device.\r
  \r
 /**\r
   Convert status code value and extended data to readable ASCII string, send string to serial I/O device.\r
  \r
-  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions¡± below.\r
+  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions" below.\r
  \r
   @param  Value         Describes the current status of a hardware or software entity.  \r
                         This included information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity. \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time. \r
  \r
   @param  Value         Describes the current status of a hardware or software entity.  \r
                         This included information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity. \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time. \r
-                        Type EFI_STATUS_CODE_VALUE is defined in ¡°Related Definitions¡± below.  \r
+                        Type EFI_STATUS_CODE_VALUE is defined in "Related Definitions" below.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
  \r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
  \r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
index a0a9619197795a20ac30e1a990df64e84cb4b7c1..2c625fe86e2008a2b3cf52f36b840e67ffaab575 100644 (file)
@@ -144,11 +144,11 @@ Routine Description:
   \r
 Arguments:\r
 \r
   \r
 Arguments:\r
 \r
-  DataTable       ¨C On input, this parameter point to the EFI_HII_DATA_TABLE structure\r
+  DataTable       - On input, this parameter point to the EFI_HII_DATA_TABLE structure\r
                     of the final data buffer for the EFI_HII_EXPORT interface. This function\r
                     update the NumberOfVariableData attribute.\r
   IfrData         - It points to a staring address of a EFI_HII_IFR_PACK structure.\r
                     of the final data buffer for the EFI_HII_EXPORT interface. This function\r
                     update the NumberOfVariableData attribute.\r
   IfrData         - It points to a staring address of a EFI_HII_IFR_PACK structure.\r
-  ExportBufferPtr ¨C On input, it points the starting address of the data buffer to \r
+  ExportBufferPtr - On input, it points the starting address of the data buffer to \r
                     host the variable pack. On output, it is the starting address\r
                     of data buffer for the next extraction operation.\r
 Returns: \r
                     host the variable pack. On output, it is the starting address\r
                     of data buffer for the next extraction operation.\r
 Returns: \r
index 8352b10172f04ee12f4dd06bf18cb667993cb4dd..d2a3e3d30e674923d530562fd89227dd30ef2f41 100644 (file)
@@ -346,8 +346,8 @@ typedef struct {
   //\r
   // Driver Option Add Handle page storage\r
   //\r
   //\r
   // Driver Option Add Handle page storage\r
   //\r
-  UINT16  DriverAddHandleDesc[75];\r
-  UINT16  DriverAddHandleOptionalData[75];\r
+  UINT16  DriverAddHandleDesc[100];\r
+  UINT16  DriverAddHandleOptionalData[100];\r
   UINT8   DriverAddActive;\r
   UINT8   DriverAddForceReconnect;\r
 \r
   UINT8   DriverAddActive;\r
   UINT8   DriverAddForceReconnect;\r
 \r
index e2260273928bc68b0dc1cb47ceafed28fa51e086..25f2c3c81ec12ecefd50f75e33ffde70bcab8093 100644 (file)
@@ -79,13 +79,13 @@ OemHookStatusCodeInitialize (
 /**\r
   Report status code to OEM device.\r
  \r
 /**\r
   Report status code to OEM device.\r
  \r
-  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions¡± below.\r
+  @param  CodeType      Indicates the type of status code being reported.  Type EFI_STATUS_CODE_TYPE is defined in "Related Definitions" below.\r
  \r
   @param  Value         Describes the current status of a hardware or software entity.  \r
                         This included information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity. \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time. \r
  \r
   @param  Value         Describes the current status of a hardware or software entity.  \r
                         This included information about the class and subclass that is used to classify the entity \r
                         as well as an operation.  For progress codes, the operation is the current activity. \r
                         For error codes, it is the exception.  For debug codes, it is not defined at this time. \r
-                        Type EFI_STATUS_CODE_VALUE is defined in ¡°Related Definitions¡± below.  \r
+                        Type EFI_STATUS_CODE_VALUE is defined in "Related Definitions" below.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
  \r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
                         Specific values are discussed in the Intel? Platform Innovation Framework for EFI Status Code Specification.\r
  \r
   @param  Instance      The enumeration of a hardware or software entity within the system.  \r
index af3e1ecfafa78c5fd5e483f33841ab2c78224fbc..66051525ec513459f213239a7b7c1a5149818e2e 100644 (file)
@@ -45,7 +45,7 @@ CopyMem (
   Fills a target buffer with a byte value, and returns the target buffer.\r
 \r
   This function fills Length bytes of Buffer with Value, and returns Buffer.\r
   Fills a target buffer with a byte value, and returns the target buffer.\r
 \r
   This function fills Length bytes of Buffer with Value, and returns Buffer.\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer    Memory to set.\r
   @param  Length    Number of bytes to set.\r
 \r
   @param  Buffer    Memory to set.\r
   @param  Length    Number of bytes to set.\r
@@ -148,7 +148,7 @@ SetMem64 (
 \r
   This function fills Length bytes of Buffer with zeros, and returns Buffer.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
 \r
   This function fills Length bytes of Buffer with zeros, and returns Buffer.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to fill with zeros.\r
   @param  Length      Number of bytes in Buffer to fill with zeros.\r
 \r
   @param  Buffer      Pointer to the target buffer to fill with zeros.\r
   @param  Length      Number of bytes in Buffer to fill with zeros.\r
@@ -201,7 +201,7 @@ CompareMem (
   then a pointer to the matching byte in the target buffer is returned.  If no match is found,\r
   then NULL is returned.  If Length is 0, then NULL is returned.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   then a pointer to the matching byte in the target buffer is returned.  If no match is found,\r
   then NULL is returned.  If Length is 0, then NULL is returned.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
@@ -229,7 +229,7 @@ ScanMem8 (
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 16-bit boundary, then ASSERT().\r
   If Length is not aligned on a 16-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 16-bit boundary, then ASSERT().\r
   If Length is not aligned on a 16-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
@@ -257,7 +257,7 @@ ScanMem16 (
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 32-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
@@ -285,7 +285,7 @@ ScanMem32 (
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 64-bit boundary, then ASSERT().\r
   If Length is not aligned on a 64-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 64-bit boundary, then ASSERT().\r
   If Length is not aligned on a 64-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
@@ -357,7 +357,7 @@ CompareGuid (
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 128-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 128-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer  Pointer to the target buffer to scan.\r
   @param  Length  Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer  Pointer to the target buffer to scan.\r
   @param  Length  Number of bytes in Buffer to scan.\r
index d8bbe383872275293c47f9ca259009c168ca4aa4..a2aafcfd7ac9a20b0a34d06d18053abe080db1b0 100644 (file)
@@ -306,7 +306,7 @@ AllocateReservedZeroPool (
   allocated buffer.  If AllocationSize is 0, then a valid buffer of 0 size is returned.  If there\r
   is not enough memory remaining to satisfy the request, then NULL is returned.\r
   If Buffer is NULL, then ASSERT().\r
   allocated buffer.  If AllocationSize is 0, then a valid buffer of 0 size is returned.  If there\r
   is not enough memory remaining to satisfy the request, then NULL is returned.\r
   If Buffer is NULL, then ASSERT().\r
-  If AllocationSize is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If AllocationSize is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  AllocationSize        The number of bytes to allocate and zero.\r
   @param  Buffer                The buffer to copy to the allocated buffer.\r
 \r
   @param  AllocationSize        The number of bytes to allocate and zero.\r
   @param  Buffer                The buffer to copy to the allocated buffer.\r
@@ -329,7 +329,7 @@ AllocateCopyPool (
   allocated buffer.  If AllocationSize is 0, then a valid buffer of 0 size is returned.  If there\r
   is not enough memory remaining to satisfy the request, then NULL is returned.\r
   If Buffer is NULL, then ASSERT().\r
   allocated buffer.  If AllocationSize is 0, then a valid buffer of 0 size is returned.  If there\r
   is not enough memory remaining to satisfy the request, then NULL is returned.\r
   If Buffer is NULL, then ASSERT().\r
-  If AllocationSize is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If AllocationSize is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  AllocationSize        The number of bytes to allocate and zero.\r
   @param  Buffer                The buffer to copy to the allocated buffer.\r
 \r
   @param  AllocationSize        The number of bytes to allocate and zero.\r
   @param  Buffer                The buffer to copy to the allocated buffer.\r
@@ -352,7 +352,7 @@ AllocateRuntimeCopyPool (
   allocated buffer.  If AllocationSize is 0, then a valid buffer of 0 size is returned.  If there\r
   is not enough memory remaining to satisfy the request, then NULL is returned.\r
   If Buffer is NULL, then ASSERT().\r
   allocated buffer.  If AllocationSize is 0, then a valid buffer of 0 size is returned.  If there\r
   is not enough memory remaining to satisfy the request, then NULL is returned.\r
   If Buffer is NULL, then ASSERT().\r
-  If AllocationSize is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If AllocationSize is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  AllocationSize        The number of bytes to allocate and zero.\r
   @param  Buffer                The buffer to copy to the allocated buffer.\r
 \r
   @param  AllocationSize        The number of bytes to allocate and zero.\r
   @param  Buffer                The buffer to copy to the allocated buffer.\r
index f744abc7eb864fd1cd47ed2b57b754026e032942..d08a6eb3a0138798378866ec5c1d032771e3466e 100644 (file)
@@ -64,7 +64,7 @@ UefiDecompressGetInfo (
 \r
   This function is designed so that the decompression algorithm can be implemented\r
   without using any memory services.  As a result, this function is not allowed to\r
 \r
   This function is designed so that the decompression algorithm can be implemented\r
   without using any memory services.  As a result, this function is not allowed to\r
-  call any memory allocation services in its implementation.  It is the caller¡¯s r\r
+  call any memory allocation services in its implementation.  It is the caller's r\r
   esponsibility to allocate and free the Destination and Scratch buffers.\r
   If the compressed source data specified by Source is sucessfully decompressed \r
   into Destination, then RETURN_SUCCESS is returned.  If the compressed source data \r
   esponsibility to allocate and free the Destination and Scratch buffers.\r
   If the compressed source data specified by Source is sucessfully decompressed \r
   into Destination, then RETURN_SUCCESS is returned.  If the compressed source data \r
index dd270783968dd7b2797f0e711a88c4fa8fce27e8..18be1b6347d217c0f6126083154ee628fd58a037 100644 (file)
@@ -189,7 +189,7 @@ EfiInitializeLock (
 \r
 \r
 /**\r
 \r
 \r
 /**\r
-  This function raises the system¡¯s current task priority level to the task \r
+  This function raises the system's current task priority level to the task \r
   priority level of the mutual exclusion lock.  Then, it places the lock in the \r
   acquired state.\r
 \r
   priority level of the mutual exclusion lock.  Then, it places the lock in the \r
   acquired state.\r
 \r
@@ -203,7 +203,7 @@ EfiAcquireLock (
   );\r
 \r
 /**\r
   );\r
 \r
 /**\r
-  This function raises the system¡¯s current task priority level to the task \r
+  This function raises the system's current task priority level to the task \r
   priority level of the mutual exclusion lock.  Then, it attempts to place the \r
   lock in the acquired state.\r
 \r
   priority level of the mutual exclusion lock.  Then, it attempts to place the \r
   lock in the acquired state.\r
 \r
@@ -221,7 +221,7 @@ EfiAcquireLockOrFail (
 \r
 /**\r
   This function transitions a mutual exclusion lock from the acquired state to \r
 \r
 /**\r
   This function transitions a mutual exclusion lock from the acquired state to \r
-  the released state, and restores the system¡¯s task priority level to its \r
+  the released state, and restores the system's task priority level to its \r
   previous level.\r
 \r
   @param  Lock  A pointer to the lock to release.\r
   previous level.\r
 \r
   @param  Lock  A pointer to the lock to release.\r
index 921b959548949085808a982865d94e8da8fbcf29..b1d6af43dac5a14aa0702021764f06b630c75bb2 100644 (file)
@@ -55,7 +55,7 @@ EfiGoneVirtual (
   capabilities of hardware platform.\r
 \r
   @param  Time         A pointer to storage to receive a snapshot of the current time.\r
   capabilities of hardware platform.\r
 \r
   @param  Time         A pointer to storage to receive a snapshot of the current time.\r
-  @param  Capabilities An optional pointer to a buffer to receive the real time clock device¡¯s\r
+  @param  Capabilities An optional pointer to a buffer to receive the real time clock device's\r
                        capabilities.\r
  \r
   @retval  EFI_SUCCESS  Success to execute the function.\r
                        capabilities.\r
  \r
   @retval  EFI_SUCCESS  Success to execute the function.\r
index 5578648a9ca9761bab6e98f5944f4a53b73fde6e..5bf71eb6b9735345fd4e9e128fad70a82581f51a 100644 (file)
@@ -259,7 +259,7 @@ EFI_STATUS
   );\r
 \r
 /**\r
   );\r
 \r
 /**\r
-  This service published by the PEI Foundation abstracts the creation of a Hand-Off Block's (HOB¡¯s) headers.\r
+  This service published by the PEI Foundation abstracts the creation of a Hand-Off Block's (HOB's) headers.\r
 \r
   @param  PeiServices      An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.\r
   @param  Type             The type of HOB to be installed.\r
 \r
   @param  PeiServices      An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.\r
   @param  Type             The type of HOB to be installed.\r
index 4bb029ff43327dc0207edfa8581583f18a199df7..5809c478e26bc5864a5e292c9267ce51596738c9 100644 (file)
@@ -64,7 +64,7 @@ EFI_STATUS
   );\r
 \r
 /**\r
   );\r
 \r
 /**\r
-  Gets a block device¡¯s media information.\r
+  Gets a block device's media information.\r
 \r
   @param  PeiServices    General-purpose services that are available to every PEIM\r
   @param  This           Indicates the EFI_PEI_RECOVERY_BLOCK_IO_PPI instance.\r
 \r
   @param  PeiServices    General-purpose services that are available to every PEIM\r
   @param  This           Indicates the EFI_PEI_RECOVERY_BLOCK_IO_PPI instance.\r
index d87b351a2852b1335a3d335b568c103513db2a4f..38b04bfc98ba487bd71bc66ebdab13541f29ea15 100644 (file)
@@ -767,7 +767,7 @@ EFI_STATUS
   @param[in]  Guid The 128-bit unique value that designates the namespace from which to extract the value.\r
   @param[in, out]  TokenNumber A pointer to the PCD token number to use to find the subsequent token number.\r
                     If the input token namespace or token number does not exist on the platform, an error is \r
   @param[in]  Guid The 128-bit unique value that designates the namespace from which to extract the value.\r
   @param[in, out]  TokenNumber A pointer to the PCD token number to use to find the subsequent token number.\r
                     If the input token namespace or token number does not exist on the platform, an error is \r
-                    returned and the value of *TokenNumber is undefined. To retrieve the ¡°first¡± token, \r
+                    returned and the value of *TokenNumber is undefined. To retrieve the "first" token, \r
                     have the pointer reference a TokenNumber value of 0. If the input token number is 0 \r
                     and there is no valid token number for this token namespace,  *TokenNumber will be \r
                     assigned to 0 and the function return EFI_SUCCESS. If the token number is the last valid \r
                     have the pointer reference a TokenNumber value of 0. If the input token number is 0 \r
                     and there is no valid token number for this token namespace,  *TokenNumber will be \r
                     assigned to 0 and the function return EFI_SUCCESS. If the token number is the last valid \r
index e730ce8493f42c635104758fa3aa1e618a0fe87c..ee00e14147a6ec24881d4af527a6ef7c68ad3ee4 100644 (file)
@@ -40,7 +40,7 @@ typedef struct _EFI_PEI_READ_ONLY_VARIABLE_PPI  EFI_PEI_READ_ONLY_VARIABLE_PPI;
   Get Variable value by Name and GUID pair\r
 \r
   @param  PeiServices    An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
   Get Variable value by Name and GUID pair\r
 \r
   @param  PeiServices    An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
-  @param  VariableName   A NULL-terminated Unicode string that is the name of the vendor¡¯s variable.\r
+  @param  VariableName   A NULL-terminated Unicode string that is the name of the vendor's variable.\r
   @param  VendorGuid     A unique identifier for the vendor.\r
   @param  Attributes     If not NULL, a pointer to the memory location to return\r
                          the attributes bitmask for the variable.\r
   @param  VendorGuid     A unique identifier for the vendor.\r
   @param  Attributes     If not NULL, a pointer to the memory location to return\r
                          the attributes bitmask for the variable.\r
index b0f06264063a714fbb1576b0495fc42f8ef2aa63..0be9b4a32d90645b4884048660c6a8192035bc18 100644 (file)
@@ -56,7 +56,7 @@ EFI_STATUS
 /**\r
   @par Ppi Description:\r
   This PPI is installed by some platform PEIM that abstracts the security \r
 /**\r
   @par Ppi Description:\r
   This PPI is installed by some platform PEIM that abstracts the security \r
-  policy to the PEI Foundation, namely the case of a PEIM¡¯s authentication \r
+  policy to the PEI Foundation, namely the case of a PEIM's authentication \r
   state being returned during the PEI section extraction process. \r
 \r
   @param AuthenticationState\r
   state being returned during the PEI section extraction process. \r
 \r
   @param AuthenticationState\r
index 7394f3fb6afa9a29884b5230e7005fe9d7e946ad..ddcc740eb48755b583899c082e63f3fafa06f810 100644 (file)
@@ -73,8 +73,8 @@ EFI_STATUS
   Inserts an entry to the ARP cache.\r
 \r
   @param  This            A pointer to the EFI_ARP_PROTOCOL instance.  \r
   Inserts an entry to the ARP cache.\r
 \r
   @param  This            A pointer to the EFI_ARP_PROTOCOL instance.  \r
-  @param  DenyFlag        Set to TRUE if this entry is a ¡°deny¡± entry. Set to FALSE if this\r
-                          entry is a ¡°normal¡± entry.\r
+  @param  DenyFlag        Set to TRUE if this entry is a "deny" entry. Set to FALSE if this\r
+                          entry is a "normal" entry.\r
   @param  TargetSwAddress Pointer to a protocol address to add (or deny). May be set to\r
                           NULL if DenyFlag is TRUE.\r
   @param  TargetHwAddress Pointer to a hardware address to add (or deny). May be set to\r
   @param  TargetSwAddress Pointer to a protocol address to add (or deny). May be set to\r
                           NULL if DenyFlag is TRUE.\r
   @param  TargetHwAddress Pointer to a hardware address to add (or deny). May be set to\r
index 138a3270fa6238b54fc39ab38ce66c8524fcf31d..37d1952c17a63326c61991c6385aa70ad3e68ae4 100644 (file)
@@ -161,7 +161,7 @@ EFI_STATUS
 /**                                                                 \r
   Frees memory structures allocated and returned by other functions in the EFI_BIS protocol.  \r
       \r
 /**                                                                 \r
   Frees memory structures allocated and returned by other functions in the EFI_BIS protocol.  \r
       \r
-  @param  AppHandle                An opaque handle that identifies the caller¡¯s instance of initialization\r
+  @param  AppHandle                An opaque handle that identifies the caller's instance of initialization\r
                                    of the BIS service.                                                                                         \r
   @param  ToFree                   An EFI_BIS_DATA* and associated memory block to be freed.\r
 \r
                                    of the BIS service.                                                                                         \r
   @param  ToFree                   An EFI_BIS_DATA* and associated memory block to be freed.\r
 \r
@@ -181,10 +181,10 @@ EFI_STATUS
   );\r
 \r
 /**                                                                 \r
   );\r
 \r
 /**                                                                 \r
-  Shuts down an application¡¯s instance of the BIS service, invalidating the application handle. After\r
+  Shuts down an application's instance of the BIS service, invalidating the application handle. After\r
   this call, other BIS functions may no longer be invoked using the application handle value.         \r
       \r
   this call, other BIS functions may no longer be invoked using the application handle value.         \r
       \r
-  @param  AppHandle                An opaque handle that identifies the caller¡¯s instance of initialization\r
+  @param  AppHandle                An opaque handle that identifies the caller's instance of initialization\r
                                    of the BIS service.                                                                                           \r
 \r
   @retval EFI_SUCCESS              The function completed successfully.\r
                                    of the BIS service.                                                                                           \r
 \r
   @retval EFI_SUCCESS              The function completed successfully.\r
@@ -204,7 +204,7 @@ EFI_STATUS
   Retrieves the certificate that has been configured as the identity of the organization designated as\r
   the source of authorization for signatures of boot objects.\r
       \r
   Retrieves the certificate that has been configured as the identity of the organization designated as\r
   the source of authorization for signatures of boot objects.\r
       \r
-  @param  AppHandle                An opaque handle that identifies the caller¡¯s instance of initialization\r
+  @param  AppHandle                An opaque handle that identifies the caller's instance of initialization\r
                                    of the BIS service.                                                                                           \r
   @param  Certificate              The function writes an allocated EFI_BIS_DATA* containing the Boot\r
                                    Object Authorization Certificate object.                            \r
                                    of the BIS service.                                                                                           \r
   @param  Certificate              The function writes an allocated EFI_BIS_DATA* containing the Boot\r
                                    Object Authorization Certificate object.                            \r
@@ -229,7 +229,7 @@ EFI_STATUS
   Verifies the integrity and authorization of the indicated data object according to the\r
   indicated credentials.                                                                \r
       \r
   Verifies the integrity and authorization of the indicated data object according to the\r
   indicated credentials.                                                                \r
       \r
-  @param  AppHandle                An opaque handle that identifies the caller¡¯s instance of initialization\r
+  @param  AppHandle                An opaque handle that identifies the caller's instance of initialization\r
                                    of the BIS service.                                                                                           \r
   @param  Credentials              A Signed Manifest containing verification information for the indicated\r
                                    data object.                                                            \r
                                    of the BIS service.                                                                                           \r
   @param  Credentials              A Signed Manifest containing verification information for the indicated\r
                                    data object.                                                            \r
@@ -259,7 +259,7 @@ EFI_STATUS
 /**                                                                 \r
   Retrieves the current status of the Boot Authorization Check Flag.\r
       \r
 /**                                                                 \r
   Retrieves the current status of the Boot Authorization Check Flag.\r
       \r
-  @param  AppHandle                An opaque handle that identifies the caller¡¯s instance of initialization\r
+  @param  AppHandle                An opaque handle that identifies the caller's instance of initialization\r
                                    of the BIS service.                                                                                           \r
   @param  CheckIsRequired          The function writes the value TRUE if a Boot Authorization Check is\r
                                    currently required on this platform, otherwise the function writes \r
                                    of the BIS service.                                                                                           \r
   @param  CheckIsRequired          The function writes the value TRUE if a Boot Authorization Check is\r
                                    currently required on this platform, otherwise the function writes \r
@@ -284,7 +284,7 @@ EFI_STATUS
   Retrieves a unique token value to be included in the request credential for the next update of any\r
   parameter in the Boot Object Authorization set                                                    \r
       \r
   Retrieves a unique token value to be included in the request credential for the next update of any\r
   parameter in the Boot Object Authorization set                                                    \r
       \r
-  @param  AppHandle                An opaque handle that identifies the caller¡¯s instance of initialization\r
+  @param  AppHandle                An opaque handle that identifies the caller's instance of initialization\r
                                    of the BIS service.                                                                                           \r
   @param  UpdateToken              The function writes an allocated EFI_BIS_DATA* containing the new\r
                                    unique update token value.                                                                          \r
                                    of the BIS service.                                                                                           \r
   @param  UpdateToken              The function writes an allocated EFI_BIS_DATA* containing the new\r
                                    unique update token value.                                                                          \r
@@ -308,7 +308,7 @@ EFI_STATUS
 /**                                                                 \r
   Updates one of the configurable parameters of the Boot Object Authorization set.\r
       \r
 /**                                                                 \r
   Updates one of the configurable parameters of the Boot Object Authorization set.\r
       \r
-  @param  AppHandle                An opaque handle that identifies the caller¡¯s instance of initialization\r
+  @param  AppHandle                An opaque handle that identifies the caller's instance of initialization\r
                                    of the BIS service.                                                                                           \r
   @param  RequestCredential        This is a Signed Manifest with embedded attributes that carry the details\r
                                    of the requested update.                                                 \r
                                    of the BIS service.                                                                                           \r
   @param  RequestCredential        This is a Signed Manifest with embedded attributes that carry the details\r
                                    of the requested update.                                                 \r
@@ -337,7 +337,7 @@ EFI_STATUS
   Verifies the integrity and authorization of the indicated data object according to the indicated\r
   credentials and authority certificate.                                                          \r
       \r
   Verifies the integrity and authorization of the indicated data object according to the indicated\r
   credentials and authority certificate.                                                          \r
       \r
-  @param  AppHandle                An opaque handle that identifies the caller¡¯s instance of initialization\r
+  @param  AppHandle                An opaque handle that identifies the caller's instance of initialization\r
                                    of the BIS service.                                                                                           \r
   @param  Credentials              A Signed Manifest containing verification information for the\r
                                    indicated data object.                                       \r
                                    of the BIS service.                                                                                           \r
   @param  Credentials              A Signed Manifest containing verification information for the\r
                                    indicated data object.                                       \r
@@ -345,7 +345,7 @@ EFI_STATUS
   @param  SectionName              An ASCII (not Unicode) string giving the section name in the  \r
                                    manifest holding the verification information (in other words,\r
                                    hash value) that corresponds to DataObject.                             \r
   @param  SectionName              An ASCII (not Unicode) string giving the section name in the  \r
                                    manifest holding the verification information (in other words,\r
                                    hash value) that corresponds to DataObject.                             \r
-  @param  AuthorityCertificate     A digital certificate whose public key must match the signer¡¯s                              \r
+  @param  AuthorityCertificate     A digital certificate whose public key must match the signer's                              \r
                                    public key which is found in the credentials.                  \r
   @param  IsVerified               The function writes TRUE if the verification was successful.\r
                                    Otherwise, the function writes FALSE.                       \r
                                    public key which is found in the credentials.                  \r
   @param  IsVerified               The function writes TRUE if the verification was successful.\r
                                    Otherwise, the function writes FALSE.                       \r
@@ -377,7 +377,7 @@ EFI_STATUS
   Retrieves a list of digital certificate identifier, digital signature algorithm, hash algorithm, and keylength\r
   combinations that the platform supports.                                                                      \r
       \r
   Retrieves a list of digital certificate identifier, digital signature algorithm, hash algorithm, and keylength\r
   combinations that the platform supports.                                                                      \r
       \r
-  @param  AppHandle                An opaque handle that identifies the caller¡¯s instance of initialization\r
+  @param  AppHandle                An opaque handle that identifies the caller's instance of initialization\r
                                    of the BIS service.                                                                                           \r
   @param  SignatureInfo            The function writes an allocated EFI_BIS_DATA* containing the array\r
                                    of EFI_BIS_SIGNATURE_INFO structures representing the supported    \r
                                    of the BIS service.                                                                                           \r
   @param  SignatureInfo            The function writes an allocated EFI_BIS_DATA* containing the array\r
                                    of EFI_BIS_SIGNATURE_INFO structures representing the supported    \r
index 4f7d3d138a457ead34eeac4893d6829c101a2333..5b8ec4b0f4448eb49c6774e9279501f6c50af3b2 100644 (file)
@@ -512,7 +512,7 @@ VOID
   );\r
 \r
 /**                                                                 \r
   );\r
 \r
 /**                                                                 \r
-  Registers and enables the on-target debug agent¡¯s periodic entry point.\r
+  Registers and enables the on-target debug agent's periodic entry point.\r
       \r
   @param  SystemContext         Exception content.\r
                                    \r
       \r
   @param  SystemContext         Exception content.\r
                                    \r
@@ -609,9 +609,9 @@ EFI_STATUS
   causes a fresh memory fetch to retrieve code to be executed.                                  \r
     \r
   @param  This                  A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.\r
   causes a fresh memory fetch to retrieve code to be executed.                                  \r
     \r
   @param  This                  A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.\r
-  @param  ProcessorIndex        Specifies which processor¡¯s instruction cache is to be invalidated.\r
+  @param  ProcessorIndex        Specifies which processor's instruction cache is to be invalidated.\r
   @param  Start                 Specifies the physical base of the memory range to be invalidated.                                \r
   @param  Start                 Specifies the physical base of the memory range to be invalidated.                                \r
-  @param  Length                Specifies the minimum number of bytes in the processor¡¯s instruction\r
+  @param  Length                Specifies the minimum number of bytes in the processor's instruction\r
                                 cache to invalidate.                                                 \r
                                 \r
   @retval EFI_SUCCESS           The function completed successfully.  \r
                                 cache to invalidate.                                                 \r
                                 \r
   @retval EFI_SUCCESS           The function completed successfully.  \r
index 0e52f1edaabb613c74ced7948281fad709710e93..a16331bf2cfcf2443400d249b2e66d12bdef4f6f 100644 (file)
@@ -53,7 +53,7 @@ typedef struct {
 /**\r
   Provides direction to the configuration driver whether to use the HII \r
   database or a passed-in set of data. This function also establishes a \r
 /**\r
   Provides direction to the configuration driver whether to use the HII \r
   database or a passed-in set of data. This function also establishes a \r
-  pointer to the calling driver¡¯s callback interface. \r
+  pointer to the calling driver's callback interface. \r
 \r
   @param  This                  A pointer to the EFI_FORM_BROWSER_PROTOCOL instance.\r
   @param  UseDatabase           Determines whether the HII database is to be\r
 \r
   @param  This                  A pointer to the EFI_FORM_BROWSER_PROTOCOL instance.\r
   @param  UseDatabase           Determines whether the HII database is to be\r
@@ -65,7 +65,7 @@ typedef struct {
   @param  HandleCount           The number of handles in the array specified by Handle.\r
   @param  Packet                A pointer to a set of data containing pointers to IFR\r
                                 and/or string data.\r
   @param  HandleCount           The number of handles in the array specified by Handle.\r
   @param  Packet                A pointer to a set of data containing pointers to IFR\r
                                 and/or string data.\r
-  @param  CallbackHandle        The handle to the driver¡¯s callback interface.\r
+  @param  CallbackHandle        The handle to the driver's callback interface.\r
                                 This parameter is used only when the UseDatabase parameter is FALSE\r
                                 and an application wants to register a callback with the browser\r
   @param  NvMapOverride         This buffer is used only when there is no NV variable\r
                                 This parameter is used only when the UseDatabase parameter is FALSE\r
                                 and an application wants to register a callback with the browser\r
   @param  NvMapOverride         This buffer is used only when there is no NV variable\r
@@ -143,7 +143,7 @@ EFI_STATUS
   @param SendForm\r
   Provides direction to the configuration driver whether to use the HII \r
   database or to use a passed-in set of data. This functions also establishes \r
   @param SendForm\r
   Provides direction to the configuration driver whether to use the HII \r
   database or to use a passed-in set of data. This functions also establishes \r
-  a pointer to the calling driver¡¯s callback interface. \r
+  a pointer to the calling driver's callback interface. \r
 \r
   @param CreatePopUp\r
   Routine used to abstract a generic dialog interface and return the \r
 \r
   @param CreatePopUp\r
   Routine used to abstract a generic dialog interface and return the \r
index 2f3a5278739e47ccdd8cdd5ef802cea74f68b193..8845864be31acd5569f4e86179f7e68b4ed88cf6 100644 (file)
@@ -90,7 +90,7 @@ typedef struct {
 \r
   @param  This                  A pointer to the EFI_FORM_CALLBACK_PROTOCOL instance.\r
   @param  VariableName          A NULL-terminated Unicode string that is the\r
 \r
   @param  This                  A pointer to the EFI_FORM_CALLBACK_PROTOCOL instance.\r
   @param  VariableName          A NULL-terminated Unicode string that is the\r
-                                name of the vendor¡¯s variable.\r
+                                name of the vendor's variable.\r
   @param  VendorGuid            A unique identifier for the vendor.\r
   @param  Attributes            If not NULL, a pointer to the memory location to\r
                                 return the attribute's bit-mask for the variable.\r
   @param  VendorGuid            A unique identifier for the vendor.\r
   @param  Attributes            If not NULL, a pointer to the memory location to\r
                                 return the attribute's bit-mask for the variable.\r
index 7007c78142c3e8cd9b0d7e71898cc280b794834e..9355da4fffe4a39a34db42f66e0cc8d9e8687393 100644 (file)
@@ -85,7 +85,7 @@ typedef union {
 \r
   @param  This                  Points to this instance of EFI_HASH_PROTOCOL.\r
   @param  HashAlgorithm         Points to the EFI_GUID which identifies the algorithm to use.\r
 \r
   @param  This                  Points to this instance of EFI_HASH_PROTOCOL.\r
   @param  HashAlgorithm         Points to the EFI_GUID which identifies the algorithm to use.\r
-  @param  HashSize              Holds the returned size of the algorithm¡¯s hash.\r
+  @param  HashSize              Holds the returned size of the algorithm's hash.\r
 \r
   @retval EFI_SUCCESS           Hash size returned successfully.\r
   @retval EFI_INVALID_PARAMETER HashSize is NULL\r
 \r
   @retval EFI_SUCCESS           Hash size returned successfully.\r
   @retval EFI_INVALID_PARAMETER HashSize is NULL\r
@@ -117,7 +117,7 @@ EFI_STATUS
   @retval EFI_SUCCESS           Hash returned successfully.\r
   @retval EFI_INVALID_PARAMETER Message or Hash is NULL\r
   @retval EFI_UNSUPPORTED       The algorithm specified by HashAlgorithm is not supported by this\r
   @retval EFI_SUCCESS           Hash returned successfully.\r
   @retval EFI_INVALID_PARAMETER Message or Hash is NULL\r
   @retval EFI_UNSUPPORTED       The algorithm specified by HashAlgorithm is not supported by this\r
-                                 driver. Or extend is TRUE and the algorithm doesn¡¯t support extending the hash.\r
+                                 driver. Or extend is TRUE and the algorithm doesn't support extending the hash.\r
 \r
 **/\r
 typedef\r
 \r
 **/\r
 typedef\r
index bb213d8d5758955a0bd3f614248ea20c2b3b9cbf..04e74a019ee87487c286803ef44f14ca68a866a1 100644 (file)
@@ -526,7 +526,7 @@ EFI_STATUS
                                 terminator of the string.\r
   @param  GlyphBufferSize       A pointer to a value. On output, if the function\r
                                 returns EFI_SUCCESS, it contains the amount of memory that is required to\r
                                 terminator of the string.\r
   @param  GlyphBufferSize       A pointer to a value. On output, if the function\r
                                 returns EFI_SUCCESS, it contains the amount of memory that is required to\r
-                                store the string¡¯s glyph equivalent.\r
+                                store the string's glyph equivalent.\r
 \r
   @retval EFI_SUCCESS           All glyphs are available. Note that an empty string\r
                                 always returns this value.\r
 \r
   @retval EFI_SUCCESS           All glyphs are available. Note that an empty string\r
                                 always returns this value.\r
index 0249055bc5017783ccec55c22fbcded02a63c071..d43ee0baf98587e5fa43f27aed26ac49efa66568 100644 (file)
@@ -311,7 +311,7 @@ EFI_STATUS
   @param  This                  Pointer to the EFI_IDE_CONTROLLER_INIT_PROTOCOL instance.\r
   @param  Channel               Zero-based channel number.\r
   @param  Device                Zero-based device number on the Channel.\r
   @param  This                  Pointer to the EFI_IDE_CONTROLLER_INIT_PROTOCOL instance.\r
   @param  Channel               Zero-based channel number.\r
   @param  Device                Zero-based device number on the Channel.\r
-  @param  IdentifyData          The device¡¯s response to the ATA IDENTIFY_DEVICE command.\r
+  @param  IdentifyData          The device's response to the ATA IDENTIFY_DEVICE command.\r
 \r
   @retval EFI_SUCCESS           The information was accepted without any errors.\r
   @retval EFI_INVALID_PARAMETER Channel is invalid (Channel >= ChannelCount).\r
 \r
   @retval EFI_SUCCESS           The information was accepted without any errors.\r
   @retval EFI_INVALID_PARAMETER Channel is invalid (Channel >= ChannelCount).\r
index 8a0604f5d0481e54e9d0cb56177981bdb418b092..8c394f2ea59eb5bcd468fe150ffdd1aa14a92e9a 100644 (file)
@@ -168,7 +168,7 @@ EFI_STATUS
   @param  DeviceHandle          List of PCI devices in the system.\r
   @param  ShadowAddress         First free OpROM area, after other OpROMs have been dispatched.\r
   @param  Compatibility16Table  Pointer to Compatibility16Table.\r
   @param  DeviceHandle          List of PCI devices in the system.\r
   @param  ShadowAddress         First free OpROM area, after other OpROMs have been dispatched.\r
   @param  Compatibility16Table  Pointer to Compatibility16Table.\r
-  @param  AdditionalData        Mode specific Pointer to additional data returned ¨C mode specific.\r
+  @param  AdditionalData        Mode specific Pointer to additional data returned - mode specific.\r
 \r
   @retval EFI_SUCCESS           RomImage is valid\r
   @retval EFI_UNSUPPORTED       Mode is not supported on the platform.\r
 \r
   @retval EFI_SUCCESS           RomImage is valid\r
   @retval EFI_UNSUPPORTED       Mode is not supported on the platform.\r
index 9016ecbf327cee0cae5f9fb4c004f4a655ab6d05..e7e24ad3a57345ee4c64b5702f21fde235178fd2 100644 (file)
@@ -111,7 +111,7 @@ EFI_STATUS
 \r
 /**\r
   @par Protocol Description:\r
 \r
 /**\r
   @par Protocol Description:\r
-  Abstracts the hardware control of the physical address region 0xC0000¨C0xFFFFF \r
+  Abstracts the hardware control of the physical address region 0xC0000-C0xFFFFF \r
   for the traditional BIOS.\r
 \r
   @param Decode\r
   for the traditional BIOS.\r
 \r
   @param Decode\r
index cb2f3f5451d7a839fffaf825380dfce96580d1d1..9c0e0734b78286b10c18a1cd7cab2a612a97161a 100644 (file)
@@ -291,7 +291,7 @@ EFI_STATUS
                        the default parameters that were set in the\r
                        EFI_MTFTP4_PROTOCOL.Configure() function are used.\r
   @param  Filename     Pointer to ASCIIZ file name string.\r
                        the default parameters that were set in the\r
                        EFI_MTFTP4_PROTOCOL.Configure() function are used.\r
   @param  Filename     Pointer to ASCIIZ file name string.\r
-  @param  ModeStr      Pointer to ASCIIZ mode string. If NULL, ¡°octet¡± will be used.\r
+  @param  ModeStr      Pointer to ASCIIZ mode string. If NULL, "octet" will be used.\r
   @param  OptionCount  Number of option/value string pairs in OptionList.\r
   @param  OptionList   Pointer to array of option/value string pairs. Ignored if\r
                        OptionCount is zero.\r
   @param  OptionCount  Number of option/value string pairs in OptionList.\r
   @param  OptionList   Pointer to array of option/value string pairs. Ignored if\r
                        OptionCount is zero.\r
@@ -422,7 +422,7 @@ EFI_STATUS
   \r
 \r
 /**\r
   \r
 \r
 /**\r
-  Downloads a data file ¡°directory¡± from an MTFTPv4 server. May be unsupported in some EFI\r
+  Downloads a data file "directory" from an MTFTPv4 server. May be unsupported in some EFI\r
   implementations.                                                                                                                                                                                 \r
 \r
   @param  This  Pointer to the EFI_MTFTP4_PROTOCOL instance.\r
   implementations.                                                                                                                                                                                 \r
 \r
   @param  This  Pointer to the EFI_MTFTP4_PROTOCOL instance.\r
index f0710362204ea5501e90a3a22d2240252014ba1a..7741df17eab303b83275ce695a319b90e51df21c 100644 (file)
@@ -765,7 +765,7 @@ EFI_STATUS
   @param[in]  Guid The 128-bit unique value that designates the namespace from which to extract the value.\r
   @param[in,out]  TokenNumber A pointer to the PCD token number to use to find the subsequent token number.  \r
                   If the input token namespace or token number does not exist on the platform, \r
   @param[in]  Guid The 128-bit unique value that designates the namespace from which to extract the value.\r
   @param[in,out]  TokenNumber A pointer to the PCD token number to use to find the subsequent token number.  \r
                   If the input token namespace or token number does not exist on the platform, \r
-                  an error is returned and the value of *TokenNumber is undefined. To retrieve the ¡°first¡± token, \r
+                  an error is returned and the value of *TokenNumber is undefined. To retrieve the "first" token, \r
                   have the pointer reference a TokenNumber value of 0. If the input token number is 0 and \r
                   there is no valid token number for this token namespace,  *TokenNumber will be assigned to \r
                   0 and the function return EFI_SUCCESS. If the token number is the last valid token number, \r
                   have the pointer reference a TokenNumber value of 0. If the input token number is 0 and \r
                   there is no valid token number for this token namespace,  *TokenNumber will be assigned to \r
                   0 and the function return EFI_SUCCESS. If the token number is the last valid token number, \r
index 18494b3394eaf0c85513b2a819cc90b7f60f9a34..147f6b2441c627b2686f457857af8cca8c2fcc66 100644 (file)
@@ -245,7 +245,7 @@ EFI_STATUS
   );\r
 \r
 /**                                                                 \r
   );\r
 \r
 /**                                                                 \r
-  Provides the PCI controller¨Cspecific addresses needed to access system memory.\r
+  Provides the PCI controller-Cspecific addresses needed to access system memory.\r
             \r
   @param  This                  A pointer to the EFI_PCI_IO_PROTOCOL instance.\r
   @param  Operation             Indicates if the bus master is going to read or write to system memory.\r
             \r
   @param  This                  A pointer to the EFI_PCI_IO_PROTOCOL instance.\r
   @param  Operation             Indicates if the bus master is going to read or write to system memory.\r
@@ -360,13 +360,13 @@ EFI_STATUS
   );\r
 \r
 /**                                                                 \r
   );\r
 \r
 /**                                                                 \r
-  Retrieves this PCI controller¡¯s current PCI bus number, device number, and function number.\r
+  Retrieves this PCI controller's current PCI bus number, device number, and function number.\r
             \r
   @param  This                  A pointer to the EFI_PCI_IO_PROTOCOL instance.  \r
             \r
   @param  This                  A pointer to the EFI_PCI_IO_PROTOCOL instance.  \r
-  @param  SegmentNumber         The PCI controller¡¯s current PCI segment number.\r
-  @param  BusNumber             The PCI controller¡¯s current PCI bus number.\r
-  @param  DeviceNumber          The PCI controller¡¯s current PCI device number.\r
-  @param  FunctionNumber        The PCI controller¡¯s current PCI function number.\r
+  @param  SegmentNumber         The PCI controller's current PCI segment number.\r
+  @param  BusNumber             The PCI controller's current PCI bus number.\r
+  @param  DeviceNumber          The PCI controller's current PCI device number.\r
+  @param  FunctionNumber        The PCI controller's current PCI function number.\r
                                   \r
   @retval EFI_SUCCESS           The PCI controller location was returned.                                                       \r
   @retval EFI_INVALID_PARAMETER One or more parameters are invalid.                              \r
                                   \r
   @retval EFI_SUCCESS           The PCI controller location was returned.                                                       \r
   @retval EFI_INVALID_PARAMETER One or more parameters are invalid.                              \r
index c9491097e3c17b8474ad5e295396198b8e6753ef..1c1a6c31fcb0583729725dde895de6b5f93dc936 100644 (file)
@@ -191,7 +191,7 @@ EFI_STATUS
   Retrieves the platform policy regarding enumeration.\r
 \r
   @param GetPciRom\r
   Retrieves the platform policy regarding enumeration.\r
 \r
   @param GetPciRom\r
-  Gets the PCI device¡¯s option ROM from a platform-specific location.\r
+  Gets the PCI device's option ROM from a platform-specific location.\r
 \r
 **/\r
 struct _EFI_PCI_PLATFORM_PROTOCOL {\r
 \r
 **/\r
 struct _EFI_PCI_PLATFORM_PROTOCOL {\r
index 06912da2830936179f0e963f29ff89aa874fd191..db0a4eed5f3a97770af65a6673fb72154443ad99 100644 (file)
@@ -167,7 +167,7 @@ EFI_STATUS
   );\r
 \r
 /**                                                                 \r
   );\r
 \r
 /**                                                                 \r
-  Provides the PCI controller¨Cspecific addresses required to access system memory from a\r
+  Provides the PCI controller-Cspecific addresses required to access system memory from a\r
   DMA bus master.                                                                        \r
             \r
   @param  This                  A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.\r
   DMA bus master.                                                                        \r
             \r
   @param  This                  A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.\r
index 14a68482558ec1470be179b00143082a97c84b19..7fb2a80c4233a10d46f179f5309079aa5aaeb5f0 100644 (file)
@@ -506,9 +506,9 @@ EFI_STATUS
   @param  NewSendGUID           If not NULL, a pointer to a value that specifies whether to replace the\r
                                 current value of SendGUID.                                             \r
   @param  NewTTL                If not NULL, a pointer to be used in place of the current value of TTL,\r
   @param  NewSendGUID           If not NULL, a pointer to a value that specifies whether to replace the\r
                                 current value of SendGUID.                                             \r
   @param  NewTTL                If not NULL, a pointer to be used in place of the current value of TTL,\r
-                                the ¡°time to live¡± field of the IP header.                           \r
+                                the "time to live" field of the IP header.                           \r
   @param  NewToS                If not NULL, a pointer to be used in place of the current value of ToS,\r
   @param  NewToS                If not NULL, a pointer to be used in place of the current value of ToS,\r
-                                the ¡°type of service¡± field of the IP header.                        \r
+                                the "type of service" field of the IP header.                        \r
   @param  NewMakeCallback       If not NULL, a pointer to a value that specifies whether to replace the\r
                                 current value of the MakeCallback field of the Mode structure.                                                                \r
                                   \r
   @param  NewMakeCallback       If not NULL, a pointer to a value that specifies whether to replace the\r
                                 current value of the MakeCallback field of the Mode structure.                                                                \r
                                   \r
index 4d6811f3fc19b15e8d7eabcfce5906e7d5067bf4..43570aa425017ebc8f6856d2a9c3e3be0bb952fe 100644 (file)
@@ -61,7 +61,7 @@ typedef struct {
   Dispatch function for a Sx state SMI handler.\r
 \r
   @param  DispatchHandle        Handle of this dispatch function.\r
   Dispatch function for a Sx state SMI handler.\r
 \r
   @param  DispatchHandle        Handle of this dispatch function.\r
-  @param  DispatchContext       Pointer to the dispatch function¡¯s context.\r
+  @param  DispatchContext       Pointer to the dispatch function's context.\r
                                 The Type and Phase fields are filled in by the Sx dispatch driver\r
                                 prior to invoking this dispatch function. For this interface,\r
                                 the Sx driver will call the dispatch function for all Sx type\r
                                 The Type and Phase fields are filled in by the Sx dispatch driver\r
                                 prior to invoking this dispatch function. For this interface,\r
                                 the Sx driver will call the dispatch function for all Sx type\r
index 8f15b3a2aa9be9028a131e10b059f8f46bed529a..919c95bc7072bffa6c130d4286cafef75ed881e8 100644 (file)
@@ -67,7 +67,7 @@ typedef struct {
   @retval EFI_INVALID_PARAMETER A NULL Buffer was specified with a non-zero\r
                                 BufferSize or the device is operating in fixed block\r
                                 size mode and the BufferSize was not a multiple of\r
   @retval EFI_INVALID_PARAMETER A NULL Buffer was specified with a non-zero\r
                                 BufferSize or the device is operating in fixed block\r
                                 size mode and the BufferSize was not a multiple of\r
-                                device¡¯s fixed block size\r
+                                device's fixed block size\r
   @retval EFI_DEVICE_ERROR      A device error occurred while attempting to transfer data\r
                                 from the media.\r
 \r
   @retval EFI_DEVICE_ERROR      A device error occurred while attempting to transfer data\r
                                 from the media.\r
 \r
@@ -104,7 +104,7 @@ EFI_STATUS
   @retval EFI_INVALID_PARAMETER A NULL Buffer was specified with a non-zero\r
                                 BufferSize or the device is operating in fixed block\r
                                 size mode and the BufferSize was not a multiple of\r
   @retval EFI_INVALID_PARAMETER A NULL Buffer was specified with a non-zero\r
                                 BufferSize or the device is operating in fixed block\r
                                 size mode and the BufferSize was not a multiple of\r
-                                device¡¯s fixed block size\r
+                                device's fixed block size\r
   @retval EFI_DEVICE_ERROR      A device error occurred while attempting to transfer data\r
                                 from the media.\r
 \r
   @retval EFI_DEVICE_ERROR      A device error occurred while attempting to transfer data\r
                                 from the media.\r
 \r
index 87dea25e32004b0bc4380aeda68707cb3e111e40..11354b577ee9b3d904fb83637420af7d7fe7a285 100644 (file)
@@ -171,7 +171,7 @@ typedef struct {
 \r
   @retval EFI_SUCCESS           The mode data was read.\r
   @retval EFI_INVALID_PARAMETER This is NULL.\r
 \r
   @retval EFI_SUCCESS           The mode data was read.\r
   @retval EFI_INVALID_PARAMETER This is NULL.\r
-  @retval EFI_NOT_STARTED       No configuration data is available because this instance hasn¡¯t\r
+  @retval EFI_NOT_STARTED       No configuration data is available because this instance hasn't\r
                                  been started.\r
 \r
 **/\r
                                  been started.\r
 \r
 **/\r
@@ -278,7 +278,7 @@ EFI_STATUS
                                 - This is NULL.\r
                                 - ConnectionToken is NULL.\r
                                 - ConnectionToken->CompletionToken.Event is NULL.\r
                                 - This is NULL.\r
                                 - ConnectionToken is NULL.\r
                                 - ConnectionToken->CompletionToken.Event is NULL.\r
-  @retval EFI_OUT_OF_RESOURCES  The driver can¡¯t allocate enough resource to initiate the activeopen.\r
+  @retval EFI_OUT_OF_RESOURCES  The driver can't allocate enough resource to initiate the activeopen.\r
   @retval EFI_DEVICE_ERROR      An unexpected system or network error occurred.\r
 \r
 **/\r
   @retval EFI_DEVICE_ERROR      An unexpected system or network error occurred.\r
 \r
 **/\r
index 1b1245cb8b15c8a6baa368d084c40f8cc9756703..15742281b7b278dd54e66e294f960a97c82dde72 100644 (file)
@@ -101,7 +101,7 @@ EFI_STATUS
   @retval EFI_SUCCESS           The state information of the host controller was returned in State.\r
   @retval EFI_INVALID_PARAMETER State is NULL.\r
   @retval EFI_DEVICE_ERROR      An error was encountered while attempting to retrieve the\r
   @retval EFI_SUCCESS           The state information of the host controller was returned in State.\r
   @retval EFI_INVALID_PARAMETER State is NULL.\r
   @retval EFI_DEVICE_ERROR      An error was encountered while attempting to retrieve the\r
-                                host controller¡¯s current state.\r
+                                host controller's current state.\r
 \r
 **/\r
 typedef\r
 \r
 **/\r
 typedef\r
index cab9bcdd45cc2169305e6bba51ca569abf374020..20e6fccb4c1b41125206c73b0aa505726531bb19 100644 (file)
@@ -60,7 +60,7 @@ EFI_STATUS
                                 \r
   @retval EFI_SUCCESS           The state information of the host controller was returned in State.\r
   @retval EFI_INVALID_PARAMETER State is NULL.\r
                                 \r
   @retval EFI_SUCCESS           The state information of the host controller was returned in State.\r
   @retval EFI_INVALID_PARAMETER State is NULL.\r
-  @retval EFI_DEVICE_ERROR      An error was encountered while attempting to retrieve the host controller¡¯s\r
+  @retval EFI_DEVICE_ERROR      An error was encountered while attempting to retrieve the host controller's\r
                                 current state.                                                                 \r
                                 \r
 **/\r
                                 current state.                                                                 \r
                                 \r
 **/\r
index 30309e303552a5d30aa096de28627e1d1e3983f2..47de143d852e900b2117e0b3229a7c809b094e33 100644 (file)
@@ -123,7 +123,7 @@ EFI_STATUS
 \r
 /**                                                                 \r
   This function is used to manage a USB device with an interrupt transfer pipe. An Asynchronous   \r
 \r
 /**                                                                 \r
   This function is used to manage a USB device with an interrupt transfer pipe. An Asynchronous   \r
-  Interrupt Transfer is typically used to query a device¡¯s status at a fixed rate. For example,  \r
+  Interrupt Transfer is typically used to query a device's status at a fixed rate. For example,  \r
   keyboard, mouse, and hub devices use this type of transfer to query their interrupt endpoints at\r
   a fixed rate.                                                                                   \r
     \r
   keyboard, mouse, and hub devices use this type of transfer to query their interrupt endpoints at\r
   a fixed rate.                                                                                   \r
     \r
@@ -131,7 +131,7 @@ EFI_STATUS
   @param  DeviceEndpoint        A pointer to the USB device request that will be sent to the USB\r
                                 device.                                                         \r
   @param  IsNewTransfer         If TRUE, a new transfer will be submitted to USB controller. If                             \r
   @param  DeviceEndpoint        A pointer to the USB device request that will be sent to the USB\r
                                 device.                                                         \r
   @param  IsNewTransfer         If TRUE, a new transfer will be submitted to USB controller. If                             \r
-                                FALSE, the interrupt transfer is deleted from the device¡¯s interrupt\r
+                                FALSE, the interrupt transfer is deleted from the device's interrupt\r
                                 transfer queue.                                                      \r
   @param  PollingInterval       Indicates the periodic rate, in milliseconds, that the transfer is to be                        \r
                                 executed.                                                                 \r
                                 transfer queue.                                                      \r
   @param  PollingInterval       Indicates the periodic rate, in milliseconds, that the transfer is to be                        \r
                                 executed.                                                                 \r
index 53d601bbf0041eb15507b6184c0ca17052832987..8c5b22e2acb6954213c5fde6ecde8b6666aa2598 100644 (file)
@@ -381,7 +381,7 @@ EFI_STATUS
   Invoke a notification event\r
                                                                                                       \r
   @param  Event                 Event whose notification function is being invoked.\r
   Invoke a notification event\r
                                                                                                       \r
   @param  Event                 Event whose notification function is being invoked.\r
-  @param  Context               Pointer to the notification function¡¯s context, \r
+  @param  Context               Pointer to the notification function's context, \r
                                 which is implementation-dependent.                                                  \r
                                                                                                       \r
 **/                                                                                                   \r
                                 which is implementation-dependent.                                                  \r
                                                                                                       \r
 **/                                                                                                   \r
@@ -396,9 +396,9 @@ VOID
   Creates an event.\r
                                                                                                       \r
   @param  Type                  The type of event to create and its mode and attributes.\r
   Creates an event.\r
                                                                                                       \r
   @param  Type                  The type of event to create and its mode and attributes.\r
-  @param  NotifyTpl             Pointer to the notification function¡¯s context.\r
-  @param  NotifyFunction        Pointer to the event¡¯s notification function, if any.  \r
-  @param  NotifyContext         Pointer to the notification function¡¯s context; corresponds to parameter\r
+  @param  NotifyTpl             Pointer to the notification function's context.\r
+  @param  NotifyFunction        Pointer to the event's notification function, if any.  \r
+  @param  NotifyContext         Pointer to the notification function's context; corresponds to parameter\r
                                 Context in the notification function.                                                                                                          \r
   @param  Event                 Pointer to the newly created event if the call succeeds; undefined  \r
                                 otherwise.                                                          \r
                                 Context in the notification function.                                                                                                          \r
   @param  Event                 Pointer to the newly created event if the call succeeds; undefined  \r
                                 otherwise.                                                          \r
@@ -422,9 +422,9 @@ EFI_STATUS
   Creates an event in a group.\r
                                                                                                       \r
   @param  Type                  The type of event to create and its mode and attributes.\r
   Creates an event in a group.\r
                                                                                                       \r
   @param  Type                  The type of event to create and its mode and attributes.\r
-  @param  NotifyTpl             Pointer to the notification function¡¯s context.\r
-  @param  NotifyFunction        Pointer to the event¡¯s notification function, if any.  \r
-  @param  NotifyContext         Pointer to the notification function¡¯s context; corresponds to parameter\r
+  @param  NotifyTpl             Pointer to the notification function's context.\r
+  @param  NotifyFunction        Pointer to the event's notification function, if any.  \r
+  @param  NotifyContext         Pointer to the notification function's context; corresponds to parameter\r
                                 Context in the notification function.          \r
   @param  EventGroup            Pointer to the unique identifier of the group to which this event belongs.                                                                                                                                \r
   @param  Event                 Pointer to the newly created event if the call succeeds; undefined  \r
                                 Context in the notification function.          \r
   @param  EventGroup            Pointer to the unique identifier of the group to which this event belongs.                                                                                                                                \r
   @param  Event                 Pointer to the newly created event if the call succeeds; undefined  \r
@@ -554,7 +554,7 @@ EFI_STATUS
 #define EFI_TPL_HIGH_LEVEL    TPL_HIGH_LEVEL\r
 \r
 /**                                                 \r
 #define EFI_TPL_HIGH_LEVEL    TPL_HIGH_LEVEL\r
 \r
 /**                                                 \r
-  Raises a task¡¯s priority level and returns its previous level.\r
+  Raises a task's priority level and returns its previous level.\r
                                                     \r
   @param  NewTpl                The new task priority level.\r
   \r
                                                     \r
   @param  NewTpl                The new task priority level.\r
   \r
@@ -568,7 +568,7 @@ EFI_TPL
   );\r
 \r
 /**                                                 \r
   );\r
 \r
 /**                                                 \r
-  Restores a task¡¯s priority level to its previous value.\r
+  Restores a task's priority level to its previous value.\r
                                                     \r
   @param  OldTpl                The previous task priority level to restore    \r
   \r
                                                     \r
   @param  OldTpl                The previous task priority level to restore    \r
   \r
@@ -590,7 +590,7 @@ VOID
   Returns the value of a variable.\r
                                                     \r
   @param  VariableName          A Null-terminated Unicode string that is the name of the\r
   Returns the value of a variable.\r
                                                     \r
   @param  VariableName          A Null-terminated Unicode string that is the name of the\r
-                                vendor¡¯s variable.                                     \r
+                                vendor's variable.                                     \r
   @param  VendorGuid            A unique identifier for the vendor.                    \r
   @param  Attributes            If not NULL, a pointer to the memory location to return the\r
                                 attributes bitmask for the variable.                       \r
   @param  VendorGuid            A unique identifier for the vendor.                    \r
   @param  Attributes            If not NULL, a pointer to the memory location to return the\r
                                 attributes bitmask for the variable.                       \r
@@ -645,7 +645,7 @@ EFI_STATUS
   Sets the value of a variable.\r
                                                                                                     \r
   @param  VariableName          A Null-terminated Unicode string that is the name of the\r
   Sets the value of a variable.\r
                                                                                                     \r
   @param  VariableName          A Null-terminated Unicode string that is the name of the\r
-                                vendor¡¯s variable.                                     \r
+                                vendor's variable.                                     \r
   @param  VendorGuid            A unique identifier for the vendor.                                \r
   @param  Attributes            Attributes bitmask to set for the variable.                                \r
   @param  DataSize              The size in bytes of the Data buffer.\r
   @param  VendorGuid            A unique identifier for the vendor.                                \r
   @param  Attributes            Attributes bitmask to set for the variable.                                \r
   @param  DataSize              The size in bytes of the Data buffer.\r
@@ -684,7 +684,7 @@ typedef struct {
                                                                     \r
   @param  Time                  A pointer to storage to receive a snapshot of the current time.                                \r
   @param  Capabilities          An optional pointer to a buffer to receive the real time clock \r
                                                                     \r
   @param  Time                  A pointer to storage to receive a snapshot of the current time.                                \r
   @param  Capabilities          An optional pointer to a buffer to receive the real time clock \r
-                                device¡¯s capabilities.                                  \r
+                                device's capabilities.                                  \r
                                                                     \r
   @retval EFI_SUCCESS           The operation completed successfully.     \r
   @retval EFI_INVALID_PARAMETER Time is NULL.\r
                                                                     \r
   @retval EFI_SUCCESS           The operation completed successfully.     \r
   @retval EFI_INVALID_PARAMETER Time is NULL.\r
@@ -778,7 +778,7 @@ EFI_STATUS
                                 manager, and that the boot manager is attempting to load    \r
                                 FilePath as a boot selection. Ignored if SourceBuffer is    \r
                                 not NULL.                                                   \r
                                 manager, and that the boot manager is attempting to load    \r
                                 FilePath as a boot selection. Ignored if SourceBuffer is    \r
                                 not NULL.                                                   \r
-  @param  ParentImageHandle     The caller¡¯s image handle.\r
+  @param  ParentImageHandle     The caller's image handle.\r
   @param  FilePath              The DeviceHandle specific file path from which the image is\r
                                 loaded.                                                     \r
   @param  SourceBuffer          If not NULL, a pointer to the memory location containing a copy\r
   @param  FilePath              The DeviceHandle specific file path from which the image is\r
                                 loaded.                                                     \r
   @param  SourceBuffer          If not NULL, a pointer to the memory location containing a copy\r
@@ -809,7 +809,7 @@ EFI_STATUS
   );\r
 \r
 /**                                                                 \r
   );\r
 \r
 /**                                                                 \r
-  Transfers control to a loaded image¡¯s entry point.\r
+  Transfers control to a loaded image's entry point.\r
   \r
   @param  ImageHandle           Handle of image to be started.  \r
   @param  ExitDataSize          Pointer to the size, in bytes, of ExitData.\r
   \r
   @param  ImageHandle           Handle of image to be started.  \r
   @param  ExitDataSize          Pointer to the size, in bytes, of ExitData.\r
@@ -833,7 +833,7 @@ EFI_STATUS
   Terminates a loaded EFI image and returns control to boot services.\r
   \r
   @param  ImageHandle           Handle that identifies the image.\r
   Terminates a loaded EFI image and returns control to boot services.\r
   \r
   @param  ImageHandle           Handle that identifies the image.\r
-  @param  ExitStatus            The image¡¯s exit code.\r
+  @param  ExitStatus            The image's exit code.\r
   @param  ExitDataSize          The size, in bytes, of ExitData.\r
   @param  ExitData              Pointer to a data buffer that includes a Null-terminated Unicode string,                    \r
                                 optionally followed by additional binary data.                                                                            \r
   @param  ExitDataSize          The size, in bytes, of ExitData.\r
   @param  ExitData              Pointer to a data buffer that includes a Null-terminated Unicode string,                    \r
                                 optionally followed by additional binary data.                                                                            \r
@@ -903,7 +903,7 @@ EFI_STATUS
   );\r
 \r
 /**                                                                 \r
   );\r
 \r
 /**                                                                 \r
-  Sets the system¡¯s watchdog timer.\r
+  Sets the system's watchdog timer.\r
   \r
   @param  Timeout               The number of seconds to set the watchdog timer to.\r
   @param  WatchdogCode          The numeric code to log on a watchdog timer timeout event.\r
   \r
   @param  Timeout               The number of seconds to set the watchdog timer to.\r
   @param  WatchdogCode          The numeric code to log on a watchdog timer timeout event.\r
@@ -976,7 +976,7 @@ EFI_STATUS
   );\r
 \r
 /**                                                                 \r
   );\r
 \r
 /**                                                                 \r
-  Returns the next high 32 bits of the platform¡¯s monotonic counter.\r
+  Returns the next high 32 bits of the platform's monotonic counter.\r
   \r
   @param  HighCount             Pointer to returned value.\r
                                 \r
   \r
   @param  HighCount             Pointer to returned value.\r
                                 \r
index db0b0a97a72ebbedb736093678570c018e33edc2..eeaf7859d311ee68eccfd42c1c1bb8d41917a5b3 100644 (file)
@@ -114,7 +114,7 @@ DebugAssert (
 \r
   If Buffer is NULL, then ASSERT().\r
 \r
 \r
   If Buffer is NULL, then ASSERT().\r
 \r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param   Buffer  Pointer to the target buffer to fill with PcdDebugClearMemoryValue.\r
   @param   Length  Number of bytes in Buffer to fill with zeros PcdDebugClearMemoryValue. \r
 \r
   @param   Buffer  Pointer to the target buffer to fill with PcdDebugClearMemoryValue.\r
   @param   Length  Number of bytes in Buffer to fill with zeros PcdDebugClearMemoryValue. \r
index 8932af7083ebfbf5b36d45b53b9be140a48c9333..6f50340bd764beb315e103e6611204a2fd81494a 100644 (file)
@@ -97,7 +97,7 @@ CompareGuid (
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 128-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 128-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer  Pointer to the target buffer to scan.\r
   @param  Length  Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer  Pointer to the target buffer to scan.\r
   @param  Length  Number of bytes in Buffer to scan.\r
index 29170594d33fa795450d8873ddf72df7252092df..95f134bbda63539802092ea8b28e755cc5a3014f 100644 (file)
@@ -36,7 +36,7 @@
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 16-bit boundary, then ASSERT().\r
   If Length is not aligned on a 16-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 16-bit boundary, then ASSERT().\r
   If Length is not aligned on a 16-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
index b54d5da07c7b3777d3036e646c37ef796d33eb3b..6a3dcd7ad233762130bab066ae5d18df222c0f83 100644 (file)
@@ -36,7 +36,7 @@
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 32-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
index 7bfc7d721e50045264af5ef8d06174ebfa315ac7..b355fe647cd9e1d4cee9cbad80aa5193f34340a7 100644 (file)
@@ -36,7 +36,7 @@
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 64-bit boundary, then ASSERT().\r
   If Length is not aligned on a 64-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 64-bit boundary, then ASSERT().\r
   If Length is not aligned on a 64-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
index 0f7289d3df3726dc1f7f0f09bd89cb221f1d1368..2b21b22166ddd7d8afaa353bb8c576c51e5153ad 100644 (file)
@@ -34,7 +34,7 @@
   then a pointer to the matching byte in the target buffer is returned.  If no match is found,\r
   then NULL is returned.  If Length is 0, then NULL is returned.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   then a pointer to the matching byte in the target buffer is returned.  If no match is found,\r
   then NULL is returned.  If Length is 0, then NULL is returned.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
index c73168841bb9989e166237530144f12f0b698d20..e74ce8d65b8f086259f70c7605bec2d4b2d89778 100644 (file)
@@ -29,7 +29,7 @@
   Fills a target buffer with a byte value, and returns the target buffer.\r
 \r
   This function fills Length bytes of Buffer with Value, and returns Buffer.\r
   Fills a target buffer with a byte value, and returns the target buffer.\r
 \r
   This function fills Length bytes of Buffer with Value, and returns Buffer.\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer    Memory to set.\r
   @param  Length    Number of bytes to set.\r
 \r
   @param  Buffer    Memory to set.\r
   @param  Length    Number of bytes to set.\r
index e2ffb5c3c2d3f83a6c63db2cc45a1921471f264a..90e607c0ce790b1890746c9d5eedf8f94e18efbe 100644 (file)
@@ -30,7 +30,7 @@
 \r
   This function fills Length bytes of Buffer with zeros, and returns Buffer.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
 \r
   This function fills Length bytes of Buffer with zeros, and returns Buffer.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT().\r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT().\r
 \r
   @param  Buffer      Pointer to the target buffer to fill with zeros.\r
   @param  Length      Number of bytes in Buffer to fill with zeros.\r
 \r
   @param  Buffer      Pointer to the target buffer to fill with zeros.\r
   @param  Length      Number of bytes in Buffer to fill with zeros.\r
index 8932af7083ebfbf5b36d45b53b9be140a48c9333..6f50340bd764beb315e103e6611204a2fd81494a 100644 (file)
@@ -97,7 +97,7 @@ CompareGuid (
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 128-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 128-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer  Pointer to the target buffer to scan.\r
   @param  Length  Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer  Pointer to the target buffer to scan.\r
   @param  Length  Number of bytes in Buffer to scan.\r
index 29170594d33fa795450d8873ddf72df7252092df..95f134bbda63539802092ea8b28e755cc5a3014f 100644 (file)
@@ -36,7 +36,7 @@
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 16-bit boundary, then ASSERT().\r
   If Length is not aligned on a 16-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 16-bit boundary, then ASSERT().\r
   If Length is not aligned on a 16-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
index b54d5da07c7b3777d3036e646c37ef796d33eb3b..6a3dcd7ad233762130bab066ae5d18df222c0f83 100644 (file)
@@ -36,7 +36,7 @@
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 32-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
index 7bfc7d721e50045264af5ef8d06174ebfa315ac7..b355fe647cd9e1d4cee9cbad80aa5193f34340a7 100644 (file)
@@ -36,7 +36,7 @@
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 64-bit boundary, then ASSERT().\r
   If Length is not aligned on a 64-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 64-bit boundary, then ASSERT().\r
   If Length is not aligned on a 64-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
index 0f7289d3df3726dc1f7f0f09bd89cb221f1d1368..2b21b22166ddd7d8afaa353bb8c576c51e5153ad 100644 (file)
@@ -34,7 +34,7 @@
   then a pointer to the matching byte in the target buffer is returned.  If no match is found,\r
   then NULL is returned.  If Length is 0, then NULL is returned.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   then a pointer to the matching byte in the target buffer is returned.  If no match is found,\r
   then NULL is returned.  If Length is 0, then NULL is returned.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
index c73168841bb9989e166237530144f12f0b698d20..e74ce8d65b8f086259f70c7605bec2d4b2d89778 100644 (file)
@@ -29,7 +29,7 @@
   Fills a target buffer with a byte value, and returns the target buffer.\r
 \r
   This function fills Length bytes of Buffer with Value, and returns Buffer.\r
   Fills a target buffer with a byte value, and returns the target buffer.\r
 \r
   This function fills Length bytes of Buffer with Value, and returns Buffer.\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer    Memory to set.\r
   @param  Length    Number of bytes to set.\r
 \r
   @param  Buffer    Memory to set.\r
   @param  Length    Number of bytes to set.\r
index e2ffb5c3c2d3f83a6c63db2cc45a1921471f264a..90e607c0ce790b1890746c9d5eedf8f94e18efbe 100644 (file)
@@ -30,7 +30,7 @@
 \r
   This function fills Length bytes of Buffer with zeros, and returns Buffer.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
 \r
   This function fills Length bytes of Buffer with zeros, and returns Buffer.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT().\r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT().\r
 \r
   @param  Buffer      Pointer to the target buffer to fill with zeros.\r
   @param  Length      Number of bytes in Buffer to fill with zeros.\r
 \r
   @param  Buffer      Pointer to the target buffer to fill with zeros.\r
   @param  Length      Number of bytes in Buffer to fill with zeros.\r
index 8932af7083ebfbf5b36d45b53b9be140a48c9333..6f50340bd764beb315e103e6611204a2fd81494a 100644 (file)
@@ -97,7 +97,7 @@ CompareGuid (
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 128-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 128-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer  Pointer to the target buffer to scan.\r
   @param  Length  Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer  Pointer to the target buffer to scan.\r
   @param  Length  Number of bytes in Buffer to scan.\r
index 29170594d33fa795450d8873ddf72df7252092df..95f134bbda63539802092ea8b28e755cc5a3014f 100644 (file)
@@ -36,7 +36,7 @@
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 16-bit boundary, then ASSERT().\r
   If Length is not aligned on a 16-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 16-bit boundary, then ASSERT().\r
   If Length is not aligned on a 16-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
index b54d5da07c7b3777d3036e646c37ef796d33eb3b..6a3dcd7ad233762130bab066ae5d18df222c0f83 100644 (file)
@@ -36,7 +36,7 @@
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 32-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
index 7bfc7d721e50045264af5ef8d06174ebfa315ac7..b355fe647cd9e1d4cee9cbad80aa5193f34340a7 100644 (file)
@@ -36,7 +36,7 @@
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 64-bit boundary, then ASSERT().\r
   If Length is not aligned on a 64-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 64-bit boundary, then ASSERT().\r
   If Length is not aligned on a 64-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
index 0f7289d3df3726dc1f7f0f09bd89cb221f1d1368..2b21b22166ddd7d8afaa353bb8c576c51e5153ad 100644 (file)
@@ -34,7 +34,7 @@
   then a pointer to the matching byte in the target buffer is returned.  If no match is found,\r
   then NULL is returned.  If Length is 0, then NULL is returned.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   then a pointer to the matching byte in the target buffer is returned.  If no match is found,\r
   then NULL is returned.  If Length is 0, then NULL is returned.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
index c73168841bb9989e166237530144f12f0b698d20..e74ce8d65b8f086259f70c7605bec2d4b2d89778 100644 (file)
@@ -29,7 +29,7 @@
   Fills a target buffer with a byte value, and returns the target buffer.\r
 \r
   This function fills Length bytes of Buffer with Value, and returns Buffer.\r
   Fills a target buffer with a byte value, and returns the target buffer.\r
 \r
   This function fills Length bytes of Buffer with Value, and returns Buffer.\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer    Memory to set.\r
   @param  Length    Number of bytes to set.\r
 \r
   @param  Buffer    Memory to set.\r
   @param  Length    Number of bytes to set.\r
index e2ffb5c3c2d3f83a6c63db2cc45a1921471f264a..90e607c0ce790b1890746c9d5eedf8f94e18efbe 100644 (file)
@@ -30,7 +30,7 @@
 \r
   This function fills Length bytes of Buffer with zeros, and returns Buffer.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
 \r
   This function fills Length bytes of Buffer with zeros, and returns Buffer.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT().\r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT().\r
 \r
   @param  Buffer      Pointer to the target buffer to fill with zeros.\r
   @param  Length      Number of bytes in Buffer to fill with zeros.\r
 \r
   @param  Buffer      Pointer to the target buffer to fill with zeros.\r
   @param  Length      Number of bytes in Buffer to fill with zeros.\r
index 8932af7083ebfbf5b36d45b53b9be140a48c9333..6f50340bd764beb315e103e6611204a2fd81494a 100644 (file)
@@ -97,7 +97,7 @@ CompareGuid (
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 128-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 128-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer  Pointer to the target buffer to scan.\r
   @param  Length  Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer  Pointer to the target buffer to scan.\r
   @param  Length  Number of bytes in Buffer to scan.\r
index 29170594d33fa795450d8873ddf72df7252092df..95f134bbda63539802092ea8b28e755cc5a3014f 100644 (file)
@@ -36,7 +36,7 @@
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 16-bit boundary, then ASSERT().\r
   If Length is not aligned on a 16-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 16-bit boundary, then ASSERT().\r
   If Length is not aligned on a 16-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
index b54d5da07c7b3777d3036e646c37ef796d33eb3b..6a3dcd7ad233762130bab066ae5d18df222c0f83 100644 (file)
@@ -36,7 +36,7 @@
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 32-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
index 7bfc7d721e50045264af5ef8d06174ebfa315ac7..b355fe647cd9e1d4cee9cbad80aa5193f34340a7 100644 (file)
@@ -36,7 +36,7 @@
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 64-bit boundary, then ASSERT().\r
   If Length is not aligned on a 64-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 64-bit boundary, then ASSERT().\r
   If Length is not aligned on a 64-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
index 0f7289d3df3726dc1f7f0f09bd89cb221f1d1368..2b21b22166ddd7d8afaa353bb8c576c51e5153ad 100644 (file)
@@ -34,7 +34,7 @@
   then a pointer to the matching byte in the target buffer is returned.  If no match is found,\r
   then NULL is returned.  If Length is 0, then NULL is returned.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   then a pointer to the matching byte in the target buffer is returned.  If no match is found,\r
   then NULL is returned.  If Length is 0, then NULL is returned.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
index c73168841bb9989e166237530144f12f0b698d20..e74ce8d65b8f086259f70c7605bec2d4b2d89778 100644 (file)
@@ -29,7 +29,7 @@
   Fills a target buffer with a byte value, and returns the target buffer.\r
 \r
   This function fills Length bytes of Buffer with Value, and returns Buffer.\r
   Fills a target buffer with a byte value, and returns the target buffer.\r
 \r
   This function fills Length bytes of Buffer with Value, and returns Buffer.\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer    Memory to set.\r
   @param  Length    Number of bytes to set.\r
 \r
   @param  Buffer    Memory to set.\r
   @param  Length    Number of bytes to set.\r
index e2ffb5c3c2d3f83a6c63db2cc45a1921471f264a..90e607c0ce790b1890746c9d5eedf8f94e18efbe 100644 (file)
@@ -30,7 +30,7 @@
 \r
   This function fills Length bytes of Buffer with zeros, and returns Buffer.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
 \r
   This function fills Length bytes of Buffer with zeros, and returns Buffer.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT().\r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT().\r
 \r
   @param  Buffer      Pointer to the target buffer to fill with zeros.\r
   @param  Length      Number of bytes in Buffer to fill with zeros.\r
 \r
   @param  Buffer      Pointer to the target buffer to fill with zeros.\r
   @param  Length      Number of bytes in Buffer to fill with zeros.\r
index c0c79c7c4a87097e2caa99f6f95df2ef194671d5..a33641776085adfac13368b46aee2cecc6008a56 100644 (file)
@@ -746,7 +746,7 @@ UefiDecompressGetInfo (
 \r
   This function is designed so that the decompression algorithm can be implemented\r
   without using any memory services.  As a result, this function is not allowed to\r
 \r
   This function is designed so that the decompression algorithm can be implemented\r
   without using any memory services.  As a result, this function is not allowed to\r
-  call any memory allocation services in its implementation.  It is the caller¡¯s r\r
+  call any memory allocation services in its implementation.  It is the caller's r\r
   esponsibility to allocate and free the Destination and Scratch buffers.\r
   If the compressed source data specified by Source is sucessfully decompressed \r
   into Destination, then RETURN_SUCCESS is returned.  If the compressed source data \r
   esponsibility to allocate and free the Destination and Scratch buffers.\r
   If the compressed source data specified by Source is sucessfully decompressed \r
   into Destination, then RETURN_SUCCESS is returned.  If the compressed source data \r
index c8ac8b49521e1ff45502da6d9e9e02ab3358d226..43889df497f2b3adf077963f96e27af1c9922b5e 100644 (file)
@@ -175,7 +175,7 @@ GetFirstGuidHob (
   @param  ModuleName              The GUID File Name of the module.\r
   @param  MemoryAllocationModule  The 64 bit physical address of the module.\r
   @param  ModuleLength            The length of the module in bytes.\r
   @param  ModuleName              The GUID File Name of the module.\r
   @param  MemoryAllocationModule  The 64 bit physical address of the module.\r
   @param  ModuleLength            The length of the module in bytes.\r
-  @param  EntryPoint              The 64 bit physical address of the module\92s entry point.\r
+  @param  EntryPoint              The 64 bit physical address of the module's entry point.\r
 \r
 **/\r
 VOID\r
 \r
 **/\r
 VOID\r
index fd2d145419718dd2252dc0f4e2240ab454a4a5aa..b4ad4ff2f0448d362ec3ab14ceb42436604241e3 100644 (file)
@@ -201,7 +201,7 @@ GetFirstGuidHob (
   @param  ModuleName              The GUID File Name of the module.\r
   @param  MemoryAllocationModule  The 64 bit physical address of the module.\r
   @param  ModuleLength            The length of the module in bytes.\r
   @param  ModuleName              The GUID File Name of the module.\r
   @param  MemoryAllocationModule  The 64 bit physical address of the module.\r
   @param  ModuleLength            The length of the module in bytes.\r
-  @param  EntryPoint              The 64 bit physical address of the module\92s entry point.\r
+  @param  EntryPoint              The 64 bit physical address of the module's entry point.\r
 \r
 **/\r
 VOID\r
 \r
 **/\r
 VOID\r
index 36acc1ab9c4e7d09e9369e22b52ee73746e5dc57..ab020ddc95514cbd821f52b709df1757f14b2d98 100644 (file)
@@ -530,7 +530,7 @@ AllocateReservedZeroPool (
   allocated buffer.  If AllocationSize is 0, then a valid buffer of 0 size is returned.  If there\r
   is not enough memory remaining to satisfy the request, then NULL is returned.\r
   If Buffer is NULL, then ASSERT().\r
   allocated buffer.  If AllocationSize is 0, then a valid buffer of 0 size is returned.  If there\r
   is not enough memory remaining to satisfy the request, then NULL is returned.\r
   If Buffer is NULL, then ASSERT().\r
-  If AllocationSize is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If AllocationSize is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  PoolType              The type of pool to allocate.\r
   @param  AllocationSize        The number of bytes to allocate and zero.\r
 \r
   @param  PoolType              The type of pool to allocate.\r
   @param  AllocationSize        The number of bytes to allocate and zero.\r
@@ -566,7 +566,7 @@ InternalAllocateCopyPool (
   allocated buffer.  If AllocationSize is 0, then a valid buffer of 0 size is returned.  If there\r
   is not enough memory remaining to satisfy the request, then NULL is returned.\r
   If Buffer is NULL, then ASSERT().\r
   allocated buffer.  If AllocationSize is 0, then a valid buffer of 0 size is returned.  If there\r
   is not enough memory remaining to satisfy the request, then NULL is returned.\r
   If Buffer is NULL, then ASSERT().\r
-  If AllocationSize is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If AllocationSize is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  AllocationSize        The number of bytes to allocate and zero.\r
   @param  Buffer                The buffer to copy to the allocated buffer.\r
 \r
   @param  AllocationSize        The number of bytes to allocate and zero.\r
   @param  Buffer                The buffer to copy to the allocated buffer.\r
@@ -592,7 +592,7 @@ AllocateCopyPool (
   allocated buffer.  If AllocationSize is 0, then a valid buffer of 0 size is returned.  If there\r
   is not enough memory remaining to satisfy the request, then NULL is returned.\r
   If Buffer is NULL, then ASSERT().\r
   allocated buffer.  If AllocationSize is 0, then a valid buffer of 0 size is returned.  If there\r
   is not enough memory remaining to satisfy the request, then NULL is returned.\r
   If Buffer is NULL, then ASSERT().\r
-  If AllocationSize is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If AllocationSize is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  AllocationSize        The number of bytes to allocate and zero.\r
   @param  Buffer                The buffer to copy to the allocated buffer.\r
 \r
   @param  AllocationSize        The number of bytes to allocate and zero.\r
   @param  Buffer                The buffer to copy to the allocated buffer.\r
@@ -618,7 +618,7 @@ AllocateRuntimeCopyPool (
   allocated buffer.  If AllocationSize is 0, then a valid buffer of 0 size is returned.  If there\r
   is not enough memory remaining to satisfy the request, then NULL is returned.\r
   If Buffer is NULL, then ASSERT().\r
   allocated buffer.  If AllocationSize is 0, then a valid buffer of 0 size is returned.  If there\r
   is not enough memory remaining to satisfy the request, then NULL is returned.\r
   If Buffer is NULL, then ASSERT().\r
-  If AllocationSize is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If AllocationSize is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  AllocationSize        The number of bytes to allocate and zero.\r
   @param  Buffer                The buffer to copy to the allocated buffer.\r
 \r
   @param  AllocationSize        The number of bytes to allocate and zero.\r
   @param  Buffer                The buffer to copy to the allocated buffer.\r
index 8932af7083ebfbf5b36d45b53b9be140a48c9333..6f50340bd764beb315e103e6611204a2fd81494a 100644 (file)
@@ -97,7 +97,7 @@ CompareGuid (
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 128-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 128-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer  Pointer to the target buffer to scan.\r
   @param  Length  Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer  Pointer to the target buffer to scan.\r
   @param  Length  Number of bytes in Buffer to scan.\r
index 29170594d33fa795450d8873ddf72df7252092df..95f134bbda63539802092ea8b28e755cc5a3014f 100644 (file)
@@ -36,7 +36,7 @@
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 16-bit boundary, then ASSERT().\r
   If Length is not aligned on a 16-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 16-bit boundary, then ASSERT().\r
   If Length is not aligned on a 16-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
index b54d5da07c7b3777d3036e646c37ef796d33eb3b..6a3dcd7ad233762130bab066ae5d18df222c0f83 100644 (file)
@@ -36,7 +36,7 @@
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 32-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
index 7bfc7d721e50045264af5ef8d06174ebfa315ac7..b355fe647cd9e1d4cee9cbad80aa5193f34340a7 100644 (file)
@@ -36,7 +36,7 @@
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 64-bit boundary, then ASSERT().\r
   If Length is not aligned on a 64-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 64-bit boundary, then ASSERT().\r
   If Length is not aligned on a 64-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
index 0f7289d3df3726dc1f7f0f09bd89cb221f1d1368..2b21b22166ddd7d8afaa353bb8c576c51e5153ad 100644 (file)
@@ -34,7 +34,7 @@
   then a pointer to the matching byte in the target buffer is returned.  If no match is found,\r
   then NULL is returned.  If Length is 0, then NULL is returned.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   then a pointer to the matching byte in the target buffer is returned.  If no match is found,\r
   then NULL is returned.  If Length is 0, then NULL is returned.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
index c73168841bb9989e166237530144f12f0b698d20..e74ce8d65b8f086259f70c7605bec2d4b2d89778 100644 (file)
@@ -29,7 +29,7 @@
   Fills a target buffer with a byte value, and returns the target buffer.\r
 \r
   This function fills Length bytes of Buffer with Value, and returns Buffer.\r
   Fills a target buffer with a byte value, and returns the target buffer.\r
 \r
   This function fills Length bytes of Buffer with Value, and returns Buffer.\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer    Memory to set.\r
   @param  Length    Number of bytes to set.\r
 \r
   @param  Buffer    Memory to set.\r
   @param  Length    Number of bytes to set.\r
index e2ffb5c3c2d3f83a6c63db2cc45a1921471f264a..90e607c0ce790b1890746c9d5eedf8f94e18efbe 100644 (file)
@@ -30,7 +30,7 @@
 \r
   This function fills Length bytes of Buffer with zeros, and returns Buffer.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
 \r
   This function fills Length bytes of Buffer with zeros, and returns Buffer.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT().\r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT().\r
 \r
   @param  Buffer      Pointer to the target buffer to fill with zeros.\r
   @param  Length      Number of bytes in Buffer to fill with zeros.\r
 \r
   @param  Buffer      Pointer to the target buffer to fill with zeros.\r
   @param  Length      Number of bytes in Buffer to fill with zeros.\r
index 8c8bbc27198999a4ca360f482568ea9a83740e92..f2ce95ddff6a3e548947e34050eb9b845c243d8c 100644 (file)
@@ -172,7 +172,7 @@ DebugAssert (
 \r
   If Buffer is NULL, then ASSERT().\r
 \r
 \r
   If Buffer is NULL, then ASSERT().\r
 \r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param   Buffer  Pointer to the target buffer to fill with PcdDebugClearMemoryValue.\r
   @param   Length  Number of bytes in Buffer to fill with zeros PcdDebugClearMemoryValue. \r
 \r
   @param   Buffer  Pointer to the target buffer to fill with PcdDebugClearMemoryValue.\r
   @param   Length  Number of bytes in Buffer to fill with zeros PcdDebugClearMemoryValue. \r
index 60a0e8c5da6951a64526a96f3168c463a10ee663..3765d47cdb3d7b4cfe59c516e7c69282934a9c13 100644 (file)
@@ -207,7 +207,7 @@ InternalPeiCreateHob (
   @param  ModuleName              The GUID File Name of the module.\r
   @param  MemoryAllocationModule  The 64 bit physical address of the module.\r
   @param  ModuleLength            The length of the module in bytes.\r
   @param  ModuleName              The GUID File Name of the module.\r
   @param  MemoryAllocationModule  The 64 bit physical address of the module.\r
   @param  ModuleLength            The length of the module in bytes.\r
-  @param  EntryPoint              The 64 bit physical address of the module\92s entry point.\r
+  @param  EntryPoint              The 64 bit physical address of the module's entry point.\r
 \r
 **/\r
 VOID\r
 \r
 **/\r
 VOID\r
index b4f84cb4d2b2a0c7706673e8c794e4eca64490ff..ae3481d19c9fc9c22898e16f6f7147328a2775df 100644 (file)
@@ -508,7 +508,7 @@ AllocateReservedZeroPool (
   allocated buffer.  If AllocationSize is 0, then a valid buffer of 0 size is returned.  If there\r
   is not enough memory remaining to satisfy the request, then NULL is returned.\r
   If Buffer is NULL, then ASSERT().\r
   allocated buffer.  If AllocationSize is 0, then a valid buffer of 0 size is returned.  If there\r
   is not enough memory remaining to satisfy the request, then NULL is returned.\r
   If Buffer is NULL, then ASSERT().\r
-  If AllocationSize is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If AllocationSize is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  PoolType              The type of pool to allocate.\r
   @param  AllocationSize        The number of bytes to allocate and zero.\r
 \r
   @param  PoolType              The type of pool to allocate.\r
   @param  AllocationSize        The number of bytes to allocate and zero.\r
@@ -544,7 +544,7 @@ InternalAllocateCopyPool (
   allocated buffer.  If AllocationSize is 0, then a valid buffer of 0 size is returned.  If there\r
   is not enough memory remaining to satisfy the request, then NULL is returned.\r
   If Buffer is NULL, then ASSERT().\r
   allocated buffer.  If AllocationSize is 0, then a valid buffer of 0 size is returned.  If there\r
   is not enough memory remaining to satisfy the request, then NULL is returned.\r
   If Buffer is NULL, then ASSERT().\r
-  If AllocationSize is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If AllocationSize is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  AllocationSize        The number of bytes to allocate and zero.\r
   @param  Buffer                The buffer to copy to the allocated buffer.\r
 \r
   @param  AllocationSize        The number of bytes to allocate and zero.\r
   @param  Buffer                The buffer to copy to the allocated buffer.\r
@@ -579,7 +579,7 @@ AllocateCopyPool (
   allocated buffer.  If AllocationSize is 0, then a valid buffer of 0 size is returned.  If there\r
   is not enough memory remaining to satisfy the request, then NULL is returned.\r
   If Buffer is NULL, then ASSERT().\r
   allocated buffer.  If AllocationSize is 0, then a valid buffer of 0 size is returned.  If there\r
   is not enough memory remaining to satisfy the request, then NULL is returned.\r
   If Buffer is NULL, then ASSERT().\r
-  If AllocationSize is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If AllocationSize is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  AllocationSize        The number of bytes to allocate and zero.\r
   @param  Buffer                The buffer to copy to the allocated buffer.\r
 \r
   @param  AllocationSize        The number of bytes to allocate and zero.\r
   @param  Buffer                The buffer to copy to the allocated buffer.\r
@@ -605,7 +605,7 @@ AllocateRuntimeCopyPool (
   allocated buffer.  If AllocationSize is 0, then a valid buffer of 0 size is returned.  If there\r
   is not enough memory remaining to satisfy the request, then NULL is returned.\r
   If Buffer is NULL, then ASSERT().\r
   allocated buffer.  If AllocationSize is 0, then a valid buffer of 0 size is returned.  If there\r
   is not enough memory remaining to satisfy the request, then NULL is returned.\r
   If Buffer is NULL, then ASSERT().\r
-  If AllocationSize is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If AllocationSize is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  AllocationSize        The number of bytes to allocate and zero.\r
   @param  Buffer                The buffer to copy to the allocated buffer.\r
 \r
   @param  AllocationSize        The number of bytes to allocate and zero.\r
   @param  Buffer                The buffer to copy to the allocated buffer.\r
index 8932af7083ebfbf5b36d45b53b9be140a48c9333..6f50340bd764beb315e103e6611204a2fd81494a 100644 (file)
@@ -97,7 +97,7 @@ CompareGuid (
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 128-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 128-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer  Pointer to the target buffer to scan.\r
   @param  Length  Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer  Pointer to the target buffer to scan.\r
   @param  Length  Number of bytes in Buffer to scan.\r
index 29170594d33fa795450d8873ddf72df7252092df..95f134bbda63539802092ea8b28e755cc5a3014f 100644 (file)
@@ -36,7 +36,7 @@
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 16-bit boundary, then ASSERT().\r
   If Length is not aligned on a 16-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 16-bit boundary, then ASSERT().\r
   If Length is not aligned on a 16-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
index b54d5da07c7b3777d3036e646c37ef796d33eb3b..6a3dcd7ad233762130bab066ae5d18df222c0f83 100644 (file)
@@ -36,7 +36,7 @@
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 32-bit boundary, then ASSERT().\r
   If Length is not aligned on a 32-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
index 7bfc7d721e50045264af5ef8d06174ebfa315ac7..b355fe647cd9e1d4cee9cbad80aa5193f34340a7 100644 (file)
@@ -36,7 +36,7 @@
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 64-bit boundary, then ASSERT().\r
   If Length is not aligned on a 64-bit boundary, then ASSERT().\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   If Buffer is not aligned on a 64-bit boundary, then ASSERT().\r
   If Length is not aligned on a 64-bit boundary, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
index 0f7289d3df3726dc1f7f0f09bd89cb221f1d1368..2b21b22166ddd7d8afaa353bb8c576c51e5153ad 100644 (file)
@@ -34,7 +34,7 @@
   then a pointer to the matching byte in the target buffer is returned.  If no match is found,\r
   then NULL is returned.  If Length is 0, then NULL is returned.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
   then a pointer to the matching byte in the target buffer is returned.  If no match is found,\r
   then NULL is returned.  If Length is 0, then NULL is returned.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
 \r
   @param  Buffer      Pointer to the target buffer to scan.\r
   @param  Length      Number of bytes in Buffer to scan.\r
index c73168841bb9989e166237530144f12f0b698d20..e74ce8d65b8f086259f70c7605bec2d4b2d89778 100644 (file)
@@ -29,7 +29,7 @@
   Fills a target buffer with a byte value, and returns the target buffer.\r
 \r
   This function fills Length bytes of Buffer with Value, and returns Buffer.\r
   Fills a target buffer with a byte value, and returns the target buffer.\r
 \r
   This function fills Length bytes of Buffer with Value, and returns Buffer.\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param  Buffer    Memory to set.\r
   @param  Length    Number of bytes to set.\r
 \r
   @param  Buffer    Memory to set.\r
   @param  Length    Number of bytes to set.\r
index e2ffb5c3c2d3f83a6c63db2cc45a1921471f264a..90e607c0ce790b1890746c9d5eedf8f94e18efbe 100644 (file)
@@ -30,7 +30,7 @@
 \r
   This function fills Length bytes of Buffer with zeros, and returns Buffer.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
 \r
   This function fills Length bytes of Buffer with zeros, and returns Buffer.\r
   If Length > 0 and Buffer is NULL, then ASSERT().\r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT().\r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT().\r
 \r
   @param  Buffer      Pointer to the target buffer to fill with zeros.\r
   @param  Length      Number of bytes in Buffer to fill with zeros.\r
 \r
   @param  Buffer      Pointer to the target buffer to fill with zeros.\r
   @param  Length      Number of bytes in Buffer to fill with zeros.\r
index 5e828b4c6a8906362715edf0dcced769497ca193..1494607309e6542110575730ed5bbf21f060bdfc 100644 (file)
@@ -136,7 +136,7 @@ DebugAssert (
 \r
   If Buffer is NULL, then ASSERT().\r
 \r
 \r
   If Buffer is NULL, then ASSERT().\r
 \r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param   Buffer  Pointer to the target buffer to fill with PcdDebugClearMemoryValue.\r
   @param   Length  Number of bytes in Buffer to fill with zeros PcdDebugClearMemoryValue. \r
 \r
   @param   Buffer  Pointer to the target buffer to fill with PcdDebugClearMemoryValue.\r
   @param   Length  Number of bytes in Buffer to fill with zeros PcdDebugClearMemoryValue. \r
index 6b834ec3e6bbca255e319272af54364200a2a93e..041fbc72f0f661c76c0b17f21e7b4b166982326b 100644 (file)
@@ -136,7 +136,7 @@ DebugAssert (
 \r
   If Buffer is NULL, then ASSERT().\r
 \r
 \r
   If Buffer is NULL, then ASSERT().\r
 \r
-  If Length is greater than (MAX_ADDRESS \96 Buffer + 1), then ASSERT(). \r
+  If Length is greater than (MAX_ADDRESS ? Buffer + 1), then ASSERT(). \r
 \r
   @param   Buffer  Pointer to the target buffer to fill with PcdDebugClearMemoryValue.\r
   @param   Length  Number of bytes in Buffer to fill with zeros PcdDebugClearMemoryValue. \r
 \r
   @param   Buffer  Pointer to the target buffer to fill with PcdDebugClearMemoryValue.\r
   @param   Length  Number of bytes in Buffer to fill with zeros PcdDebugClearMemoryValue. \r
index 5280d659ac978fb77f08aa12cafd43a9e455d3d1..85fdc6ebe3e43a114f3f48418d4814a6b8179593 100644 (file)
@@ -266,7 +266,7 @@ EfiInitializeLock (
 }\r
 \r
 /**\r
 }\r
 \r
 /**\r
-  This function raises the system¡¯s current task priority level to the task \r
+  This function raises the system's current task priority level to the task \r
   priority level of the mutual exclusion lock.  Then, it places the lock in the \r
   acquired state.\r
 \r
   priority level of the mutual exclusion lock.  Then, it places the lock in the \r
   acquired state.\r
 \r
@@ -287,7 +287,7 @@ EfiAcquireLock (
 }\r
 \r
 /**\r
 }\r
 \r
 /**\r
-  This function raises the system¡¯s current task priority level to the task \r
+  This function raises the system's current task priority level to the task \r
   priority level of the mutual exclusion lock.  Then, it attempts to place the \r
   lock in the acquired state.\r
 \r
   priority level of the mutual exclusion lock.  Then, it attempts to place the \r
   lock in the acquired state.\r
 \r
@@ -323,7 +323,7 @@ EfiAcquireLockOrFail (
 \r
 /**\r
   This function transitions a mutual exclusion lock from the acquired state to \r
 \r
 /**\r
   This function transitions a mutual exclusion lock from the acquired state to \r
-  the released state, and restores the system¡¯s task priority level to its \r
+  the released state, and restores the system's task priority level to its \r
   previous level.\r
 \r
   @param  Lock  A pointer to the lock to release.\r
   previous level.\r
 \r
   @param  Lock  A pointer to the lock to release.\r
index 7797608b13023de5494599b66bb856ff1fc0e4ca..9342da9744e383fa8b97a4632ce32b03f86dbf8f 100644 (file)
@@ -21,18 +21,18 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 /**\r
   An empty function to pass error checking of CreateEventEx (). \r
   \r
 /**\r
   An empty function to pass error checking of CreateEventEx (). \r
   \r
-  This empty function ensures that EFI_EVENT_NOTIFY_SIGNAL_ALL is error
-  checked correctly since it is now mapped into CreateEventEx() in UEFI 2.0.
+  This empty function ensures that EFI_EVENT_NOTIFY_SIGNAL_ALL is error\r
+  checked correctly since it is now mapped into CreateEventEx() in UEFI 2.0.\r
   \r
 **/\r
   \r
 **/\r
-VOID
-EFIAPI
-InternalEmptyFuntion (
-  IN EFI_EVENT                Event,
-  IN VOID                     *Context
-  )
-{
-  return;
+VOID\r
+EFIAPI\r
+InternalEmptyFuntion (\r
+  IN EFI_EVENT                Event,\r
+  IN VOID                     *Context\r
+  )\r
+{\r
+  return;\r
 }\r
 \r
 /**\r
 }\r
 \r
 /**\r
index ceeba1c7fb2ee595881b50f1fb3fff1712551521..d1c3c252d6d9d9d110a31006e25834fee5d11ff9 100644 (file)
@@ -543,7 +543,7 @@ EFI_STATUS
   \r
   @param  GlyphBufferSize A pointer to a value. On output, if the function \r
   returns EFI_SUCCESS, it contains the amount of memory that is required to \r
   \r
   @param  GlyphBufferSize A pointer to a value. On output, if the function \r
   returns EFI_SUCCESS, it contains the amount of memory that is required to \r
-  store the string¡¯s glyph equivalent.\r
+  store the string's glyph equivalent.\r
 \r
   @retval EFI_SUCCESS All glyphs are available. Note that an empty string \r
   always returns this value.\r
 \r
   @retval EFI_SUCCESS All glyphs are available. Note that an empty string \r
   always returns this value.\r