Changeset 78473 in vbox for trunk/src/VBox
- Timestamp:
- May 12, 2019 8:57:16 PM (6 years ago)
- svn:sync-xref-src-repo-rev:
- 130508
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/SharedFolders/driver/info.cpp
r78471 r78473 703 703 704 704 case FileFsLabelInformation: 705 { 706 PFILE_FS_LABEL_INFORMATION pInfo = (PFILE_FS_LABEL_INFORMATION)pInfoBuffer; 707 708 PMRX_NET_ROOT pNetRoot = capFcb->pNetRoot; 709 PMRX_SRV_CALL pSrvCall = pNetRoot->pSrvCall; 710 711 PWCHAR pRootName; 712 ULONG cbRootName; 713 714 Log(("VBOXSF: MrxQueryVolumeInfo: FileFsLabelInformation\n")); 715 716 cbRootName = pNetRoot->pNetRootName->Length - pSrvCall->pSrvCallName->Length; 717 cbRootName -= sizeof(WCHAR); /* Remove the leading backslash. */ 718 pRootName = pNetRoot->pNetRootName->Buffer + (pSrvCall->pSrvCallName->Length / sizeof(WCHAR)); 719 pRootName++; /* Remove the leading backslash. */ 720 721 Log(("VBOXSF: MrxQueryVolumeInfo: FileFsLabelInformation: Root name = %.*ls, %d bytes\n", 722 cbRootName / sizeof(WCHAR), pRootName, cbRootName)); 723 724 cbToCopy = FIELD_OFFSET(FILE_FS_LABEL_INFORMATION, VolumeLabel); 725 726 cbString = VBOX_VOLNAME_PREFIX_SIZE; 727 cbString += cbRootName; 728 cbString += sizeof(WCHAR); 729 730 if (cbInfoBuffer < cbToCopy) 731 { 732 Status = STATUS_BUFFER_TOO_SMALL; 733 break; 734 } 735 736 RtlZeroMemory(pInfo, cbToCopy); 737 738 if (cbInfoBuffer >= cbToCopy + cbString) 739 { 740 RtlCopyMemory(&pInfo->VolumeLabel[0], 741 VBOX_VOLNAME_PREFIX, 742 VBOX_VOLNAME_PREFIX_SIZE); 743 RtlCopyMemory(&pInfo->VolumeLabel[VBOX_VOLNAME_PREFIX_SIZE / sizeof(WCHAR)], 744 pRootName, 745 cbRootName); 746 pInfo->VolumeLabel[cbString / sizeof(WCHAR) - 1] = 0; 747 } 748 else 749 { 750 cbString = cbInfoBuffer - cbToCopy; 751 752 RtlCopyMemory(&pInfo->VolumeLabel[0], 753 VBOX_VOLNAME_PREFIX, 754 RT_MIN(cbString, VBOX_VOLNAME_PREFIX_SIZE)); 755 if (cbString > VBOX_VOLNAME_PREFIX_SIZE) 756 { 757 RtlCopyMemory(&pInfo->VolumeLabel[VBOX_VOLNAME_PREFIX_SIZE / sizeof(WCHAR)], 758 pRootName, 759 cbString - VBOX_VOLNAME_PREFIX_SIZE); 760 } 761 } 762 763 pInfo->VolumeLabelLength = cbString; 764 765 cbToCopy += cbString; 766 767 Log(("VBOXSF: MrxQueryVolumeInfo: FileFsLabelInformation: VolumeLabelLength %d\n", 768 pInfo->VolumeLabelLength)); 769 770 Status = STATUS_SUCCESS; 771 break; 772 } 705 AssertFailed(/* Only for setting, not for querying. */); 706 Status = STATUS_INVALID_INFO_CLASS; 707 break; 773 708 774 709 case FileFsFullSizeInformation:
Note:
See TracChangeset
for help on using the changeset viewer.