+// Construct filename for all valid icon extensions and try to load it.
+// Returns image data or NULL if it can't be found.
+static EG_IMAGE * LoadIconAnyFormat(IN CHAR16 *IconsDir, IN CHAR16 *BaseName, IN CHAR16 *OsName) {
+ CHAR16 FileName[256];
+ CHAR16 *Extension;
+ EG_IMAGE *Image = NULL;
+ UINTN Index = 0;
+
+ while (((Extension = FindCommaDelimited(ICON_EXTENSIONS, Index++)) != NULL) && (Image == NULL)) {
+ SPrint(FileName, 255, L"%s\\%s_%s.%s", IconsDir, BaseName, OsName, Extension);
+
+ // try to load it
+ Image = egLoadIcon(SelfDir, FileName, 128);
+ MyFreePool(Extension);
+ } // while()
+ return Image;
+} // EG_IMAGE * LoadIconAnyFormat()
+