- PDEVICE_EXTENSION DeviceExt;
- PVOID Context = NULL;
- ULONG DirIndex = 0;
- PDIR_ENTRY Entry;
- PVFATFCB pRootFcb;
- LARGE_INTEGER FileOffset;
- BOOLEAN LabelFound = FALSE;
- DIR_ENTRY VolumeLabelDirEntry;
- ULONG VolumeLabelDirIndex;
- ULONG LabelLen;
- NTSTATUS Status = STATUS_UNSUCCESSFUL;
- OEM_STRING StringO;
- UNICODE_STRING StringW;
- CHAR cString[43];
- ULONG SizeDirEntry;
- ULONG EntriesPerPage;
-
- DPRINT("FsdSetFsLabelInformation()\n");
-
- DeviceExt = (PDEVICE_EXTENSION)DeviceObject->DeviceExtension;
-
- if (sizeof(DeviceObject->Vpb->VolumeLabel) < FsLabelInfo->VolumeLabelLength)
- {
- return STATUS_NAME_TOO_LONG;
- }
-
- if (DeviceExt->Flags & VCB_IS_FATX)
- {
- if (FsLabelInfo->VolumeLabelLength / sizeof(WCHAR) > 42)
- return STATUS_NAME_TOO_LONG;
- SizeDirEntry = sizeof(FATX_DIR_ENTRY);
- EntriesPerPage = FATX_ENTRIES_PER_PAGE;
- }
- else
- {
- if (FsLabelInfo->VolumeLabelLength / sizeof(WCHAR) > 11)
- return STATUS_NAME_TOO_LONG;
- SizeDirEntry = sizeof(FAT_DIR_ENTRY);
- EntriesPerPage = FAT_ENTRIES_PER_PAGE;
- }
-
- /* Create Volume label dir entry */
- LabelLen = FsLabelInfo->VolumeLabelLength / sizeof(WCHAR);
- RtlZeroMemory(&VolumeLabelDirEntry, SizeDirEntry);
- StringW.Buffer = FsLabelInfo->VolumeLabel;
- StringW.Length = StringW.MaximumLength = (USHORT)FsLabelInfo->VolumeLabelLength;
- StringO.Buffer = cString;
- StringO.Length = 0;
- StringO.MaximumLength = 42;
- Status = RtlUnicodeStringToOemString(&StringO, &StringW, FALSE);
- if (!NT_SUCCESS(Status))
- return Status;
- if (DeviceExt->Flags & VCB_IS_FATX)
- {
- RtlCopyMemory(VolumeLabelDirEntry.FatX.Filename, cString, LabelLen);
- memset(&VolumeLabelDirEntry.FatX.Filename[LabelLen], ' ', 42 - LabelLen);
- VolumeLabelDirEntry.FatX.Attrib = _A_VOLID;
- }
- else
- {
- RtlCopyMemory(VolumeLabelDirEntry.Fat.Filename, cString, max(sizeof(VolumeLabelDirEntry.Fat.Filename), LabelLen));
- if (LabelLen > sizeof(VolumeLabelDirEntry.Fat.Filename))
+ PDEVICE_EXTENSION DeviceExt;
+ PVOID Context = NULL;
+ ULONG DirIndex = 0;
+ PDIR_ENTRY Entry;
+ PVFATFCB pRootFcb;
+ LARGE_INTEGER FileOffset;
+ BOOLEAN LabelFound = FALSE;
+ DIR_ENTRY VolumeLabelDirEntry;
+ ULONG VolumeLabelDirIndex;
+ ULONG LabelLen;
+ NTSTATUS Status = STATUS_UNSUCCESSFUL;
+ OEM_STRING StringO;
+ UNICODE_STRING StringW;
+ CHAR cString[43];
+ ULONG SizeDirEntry;
+ ULONG EntriesPerPage;
+
+ DPRINT("FsdSetFsLabelInformation()\n");
+
+ DeviceExt = (PDEVICE_EXTENSION)DeviceObject->DeviceExtension;
+
+ if (sizeof(DeviceObject->Vpb->VolumeLabel) < FsLabelInfo->VolumeLabelLength)