36 IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FileSystem
41 EFI_FILE_HANDLE Volume;
42 EFI_FILE_SYSTEM_VOLUME_LABEL *VolumeInfo;
43 UINTN VolumeLabelSize;
45 ASSERT (FileSystem != NULL);
48 Status = FileSystem->OpenVolume (
53 if (EFI_ERROR (Status)) {
60 sizeof (EFI_FILE_SYSTEM_VOLUME_LABEL),
64 Volume->Close (Volume);
67 OFFSET_OF (EFI_FILE_SYSTEM_VOLUME_LABEL, VolumeLabel) == 0,
68 "Expected EFI_FILE_SYSTEM_VOLUME_LABEL to represent CHAR16 string!"
71 if (VolumeInfo != NULL) {
72 if ((VolumeLabelSize >=
sizeof (CHAR16)) && (VolumeInfo->VolumeLabel[0] != L
'\0')) {
81 || (VolumeInfo->VolumeLabel[VolumeLabelSize / sizeof (CHAR16) - 1] !=
'\0'))
83 DEBUG ((DEBUG_INFO,
"OCFS: Found unterminated or too long volume label!"));
84 FreePool (VolumeInfo);
85 return AllocateCopyPool (
sizeof (L
"INVALID"), L
"INVALID");
88 return VolumeInfo->VolumeLabel;
92 FreePool (VolumeInfo);
95 return AllocateCopyPool (
sizeof (L
"NO NAME"), L
"NO NAME");