/* Gets 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 "0,3" */
CHAR16* SplitStr(CHAR16 **List, CHAR16 Separator)
/* Gets 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 "0,3" */
CHAR16* SplitStr(CHAR16 **List, CHAR16 Separator)
{
  CHAR16  *Str;
  CHAR16  *ReturnStr;
  Str = *List;
  ReturnStr = Str;
  if (IS_NULL (*Str)) {
    return ReturnStr;
  }
  while (!IS_NULL (*Str)) {
    if (*Str == Separator) {
      break;
    }
    Str++;
  }
  if (*Str == Separator) {
    *Str = L'\0';
    Str++;
  }
  *List = Str;
  return ReturnStr;
}