- ZeroMem (LunUnitStr, sizeof (LunUnitStr));\r
-\r
- Index = 0;\r
- LunUnitStr[0] = Str;\r
-\r
- if (!IsHexDigit ((UINT8 *) &Digit, *Str)) {\r
- return EFI_INVALID_PARAMETER;\r
- }\r
-\r
- while (*Str != '\0') {\r
- //\r
- // Legal representations of LUN:\r
- // 4752-3A4F-6b7e-2F99,\r
- // 6734-9-156f-127,\r
- // 4186-9\r
- //\r
- if (*Str == '-') {\r
- *Str = '\0';\r
- Index++;\r
-\r
- if (*(Str + 1) != '\0') {\r
- if (!IsHexDigit ((UINT8 *) &Digit, *(Str + 1))) {\r
- return EFI_INVALID_PARAMETER;\r
- }\r
-\r
- LunUnitStr[Index] = Str + 1;\r
+ ZeroMem (TemStr, 2);\r
+ ZeroMem ((UINT8 *) Value, sizeof (Value));\r
+ SizeStr = AsciiStrLen (Str); \r
+ IndexValue = 0;\r
+ IndexNum = 0;\r
+\r
+ for (Index = 0; Index < SizeStr; Index ++) {\r
+ TemStr[0] = Str[Index];\r
+ TemValue = (UINT8) AsciiStrHexToUint64 (TemStr);\r
+ if (TemValue == 0 && TemStr[0] != '0') {\r
+ if ((TemStr[0] != '-') || (IndexNum == 0)) {\r
+ //\r
+ // Invalid Lun Char\r
+ //\r
+ return EFI_INVALID_PARAMETER;\r