+/**\r
+ Converts a text device path node to text ram disk device path structure.\r
+\r
+ @param TextDeviceNode The input Text device path node.\r
+\r
+ @return A pointer to the newly-created Text device path structure.\r
+\r
+**/\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextRamDisk (\r
+ IN CHAR16 *TextDeviceNode\r
+ )\r
+{\r
+ CHAR16 *StartingAddrStr;\r
+ CHAR16 *EndingAddrStr;\r
+ CHAR16 *TypeGuidStr;\r
+ CHAR16 *InstanceStr;\r
+ MEDIA_RAM_DISK_DEVICE_PATH *RamDisk;\r
+ UINT64 StartingAddr;\r
+ UINT64 EndingAddr;\r
+\r
+ StartingAddrStr = GetNextParamStr (&TextDeviceNode);\r
+ EndingAddrStr = GetNextParamStr (&TextDeviceNode);\r
+ InstanceStr = GetNextParamStr (&TextDeviceNode);\r
+ TypeGuidStr = GetNextParamStr (&TextDeviceNode);\r
+ RamDisk = (MEDIA_RAM_DISK_DEVICE_PATH *) CreateDeviceNode (\r
+ MEDIA_DEVICE_PATH,\r
+ MEDIA_RAM_DISK_DP,\r
+ (UINT16) sizeof (MEDIA_RAM_DISK_DEVICE_PATH)\r
+ );\r
+\r
+ Strtoi64 (StartingAddrStr, &StartingAddr);\r
+ WriteUnaligned64 ((UINT64 *) &(RamDisk->StartingAddr[0]), StartingAddr);\r
+ Strtoi64 (EndingAddrStr, &EndingAddr);\r
+ WriteUnaligned64 ((UINT64 *) &(RamDisk->EndingAddr[0]), EndingAddr);\r
+ RamDisk->Instance = (UINT16) Strtoi (InstanceStr);\r
+ StrToGuid (TypeGuidStr, &RamDisk->TypeGuid);\r
+\r
+ return (EFI_DEVICE_PATH_PROTOCOL *) RamDisk;\r
+}\r
+\r
+/**\r
+ Converts a text device path node to text virtual disk device path structure.\r
+\r
+ @param TextDeviceNode The input Text device path node.\r
+\r
+ @return A pointer to the newly-created Text device path structure.\r
+\r
+**/\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextVirtualDisk (\r
+ IN CHAR16 *TextDeviceNode\r
+ )\r
+{\r
+ CHAR16 *StartingAddrStr;\r
+ CHAR16 *EndingAddrStr;\r
+ CHAR16 *InstanceStr;\r
+ MEDIA_RAM_DISK_DEVICE_PATH *RamDisk;\r
+ UINT64 StartingAddr;\r
+ UINT64 EndingAddr;\r
+\r
+ StartingAddrStr = GetNextParamStr (&TextDeviceNode);\r
+ EndingAddrStr = GetNextParamStr (&TextDeviceNode);\r
+ InstanceStr = GetNextParamStr (&TextDeviceNode);\r
+\r
+ RamDisk = (MEDIA_RAM_DISK_DEVICE_PATH *) CreateDeviceNode (\r
+ MEDIA_DEVICE_PATH,\r
+ MEDIA_RAM_DISK_DP,\r
+ (UINT16) sizeof (MEDIA_RAM_DISK_DEVICE_PATH)\r
+ );\r
+\r
+ Strtoi64 (StartingAddrStr, &StartingAddr);\r
+ WriteUnaligned64 ((UINT64 *) &(RamDisk->StartingAddr[0]), StartingAddr);\r
+ Strtoi64 (EndingAddrStr, &EndingAddr);\r
+ WriteUnaligned64 ((UINT64 *) &(RamDisk->EndingAddr[0]), EndingAddr);\r
+ RamDisk->Instance = (UINT16) Strtoi (InstanceStr);\r
+ CopyGuid (&RamDisk->TypeGuid, &gEfiVirtualDiskGuid);\r
+\r
+ return (EFI_DEVICE_PATH_PROTOCOL *) RamDisk;\r
+}\r
+\r
+/**\r
+ Converts a text device path node to text virtual cd device path structure.\r
+\r
+ @param TextDeviceNode The input Text device path node.\r
+\r
+ @return A pointer to the newly-created Text device path structure.\r
+\r
+**/\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextVirtualCd (\r
+ IN CHAR16 *TextDeviceNode\r
+ )\r
+{\r
+ CHAR16 *StartingAddrStr;\r
+ CHAR16 *EndingAddrStr;\r
+ CHAR16 *InstanceStr;\r
+ MEDIA_RAM_DISK_DEVICE_PATH *RamDisk;\r
+ UINT64 StartingAddr;\r
+ UINT64 EndingAddr;\r
+\r
+ StartingAddrStr = GetNextParamStr (&TextDeviceNode);\r
+ EndingAddrStr = GetNextParamStr (&TextDeviceNode);\r
+ InstanceStr = GetNextParamStr (&TextDeviceNode);\r
+\r
+ RamDisk = (MEDIA_RAM_DISK_DEVICE_PATH *) CreateDeviceNode (\r
+ MEDIA_DEVICE_PATH,\r
+ MEDIA_RAM_DISK_DP,\r
+ (UINT16) sizeof (MEDIA_RAM_DISK_DEVICE_PATH)\r
+ );\r
+\r
+ Strtoi64 (StartingAddrStr, &StartingAddr);\r
+ WriteUnaligned64 ((UINT64 *) &(RamDisk->StartingAddr[0]), StartingAddr);\r
+ Strtoi64 (EndingAddrStr, &EndingAddr);\r
+ WriteUnaligned64 ((UINT64 *) &(RamDisk->EndingAddr[0]), EndingAddr);\r
+ RamDisk->Instance = (UINT16) Strtoi (InstanceStr);\r
+ CopyGuid (&RamDisk->TypeGuid, &gEfiVirtualCdGuid);\r
+\r
+ return (EFI_DEVICE_PATH_PROTOCOL *) RamDisk;\r
+}\r
+\r
+/**\r
+ Converts a text device path node to text persistent virtual disk device path structure.\r
+\r
+ @param TextDeviceNode The input Text device path node.\r
+\r
+ @return A pointer to the newly-created Text device path structure.\r
+\r
+**/\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextPersistentVirtualDisk (\r
+ IN CHAR16 *TextDeviceNode\r
+ )\r
+{\r
+ CHAR16 *StartingAddrStr;\r
+ CHAR16 *EndingAddrStr;\r
+ CHAR16 *InstanceStr;\r
+ MEDIA_RAM_DISK_DEVICE_PATH *RamDisk;\r
+ UINT64 StartingAddr;\r
+ UINT64 EndingAddr;\r
+\r
+ StartingAddrStr = GetNextParamStr (&TextDeviceNode);\r
+ EndingAddrStr = GetNextParamStr (&TextDeviceNode);\r
+ InstanceStr = GetNextParamStr (&TextDeviceNode);\r
+\r
+ RamDisk = (MEDIA_RAM_DISK_DEVICE_PATH *) CreateDeviceNode (\r
+ MEDIA_DEVICE_PATH,\r
+ MEDIA_RAM_DISK_DP,\r
+ (UINT16) sizeof (MEDIA_RAM_DISK_DEVICE_PATH)\r
+ );\r
+\r
+ Strtoi64 (StartingAddrStr, &StartingAddr);\r
+ WriteUnaligned64 ((UINT64 *) &(RamDisk->StartingAddr[0]), StartingAddr);\r
+ Strtoi64 (EndingAddrStr, &EndingAddr);\r
+ WriteUnaligned64 ((UINT64 *) &(RamDisk->EndingAddr[0]), EndingAddr);\r
+ RamDisk->Instance = (UINT16) Strtoi (InstanceStr);\r
+ CopyGuid (&RamDisk->TypeGuid, &gEfiPersistentVirtualDiskGuid);\r
+\r
+ return (EFI_DEVICE_PATH_PROTOCOL *) RamDisk;\r
+}\r
+\r
+/**\r
+ Converts a text device path node to text persistent virtual cd device path structure.\r
+\r
+ @param TextDeviceNode The input Text device path node.\r
+\r
+ @return A pointer to the newly-created Text device path structure.\r
+\r
+**/\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextPersistentVirtualCd (\r
+ IN CHAR16 *TextDeviceNode\r
+ )\r
+{\r
+ CHAR16 *StartingAddrStr;\r
+ CHAR16 *EndingAddrStr;\r
+ CHAR16 *InstanceStr;\r
+ MEDIA_RAM_DISK_DEVICE_PATH *RamDisk;\r
+ UINT64 StartingAddr;\r
+ UINT64 EndingAddr;\r
+\r
+ StartingAddrStr = GetNextParamStr (&TextDeviceNode);\r
+ EndingAddrStr = GetNextParamStr (&TextDeviceNode);\r
+ InstanceStr = GetNextParamStr (&TextDeviceNode);\r
+\r
+ RamDisk = (MEDIA_RAM_DISK_DEVICE_PATH *) CreateDeviceNode (\r
+ MEDIA_DEVICE_PATH,\r
+ MEDIA_RAM_DISK_DP,\r
+ (UINT16) sizeof (MEDIA_RAM_DISK_DEVICE_PATH)\r
+ );\r
+\r
+ Strtoi64 (StartingAddrStr, &StartingAddr);\r
+ WriteUnaligned64 ((UINT64 *) &(RamDisk->StartingAddr[0]), StartingAddr);\r
+ Strtoi64 (EndingAddrStr, &EndingAddr);\r
+ WriteUnaligned64 ((UINT64 *) &(RamDisk->EndingAddr[0]), EndingAddr);\r
+ RamDisk->Instance = (UINT16) Strtoi (InstanceStr);\r
+ CopyGuid (&RamDisk->TypeGuid, &gEfiPersistentVirtualCdGuid);\r
+\r
+ return (EFI_DEVICE_PATH_PROTOCOL *) RamDisk;\r
+}\r