mirror of
https://github.com/winfsp/winfsp.git
synced 2025-06-14 15:52:47 -05:00
sys: FspVolumeGetName: now return concat of VolumeName and VolumePrefix (if network mount)
This commit is contained in:
@ -700,7 +700,6 @@ VOID FspWqPostIrpWorkItem(PIRP Irp);
|
||||
FspWqCreateAndPostIrpWorkItem(I, RW, RF, TRUE)
|
||||
|
||||
/* device management */
|
||||
#define FSP_DEVICE_VOLUME_NAME_LENMAX (FSP_FSCTL_VOLUME_NAME_SIZEMAX - sizeof(WCHAR))
|
||||
enum
|
||||
{
|
||||
FspFsvolDeviceSecurityCacheCapacity = 100,
|
||||
@ -766,7 +765,7 @@ typedef struct
|
||||
RTL_AVL_TABLE ContextByNameTable;
|
||||
PVOID ContextByNameTableElementStorage;
|
||||
UNICODE_STRING VolumeName;
|
||||
WCHAR VolumeNameBuf[FSP_DEVICE_VOLUME_NAME_LENMAX / sizeof(WCHAR)];
|
||||
WCHAR VolumeNameBuf[FSP_FSCTL_VOLUME_NAME_SIZE / sizeof(WCHAR)];
|
||||
KSPIN_LOCK InfoSpinLock;
|
||||
UINT64 InfoExpirationTime;
|
||||
FSP_FSCTL_VOLUME_INFO VolumeInfo;
|
||||
|
@ -68,7 +68,7 @@ NTSTATUS FspVolumeCreate(
|
||||
GUID Guid;
|
||||
UNICODE_STRING DeviceSddl;
|
||||
UNICODE_STRING VolumeName;
|
||||
WCHAR VolumeNameBuf[FSP_DEVICE_VOLUME_NAME_LENMAX / sizeof(WCHAR)];
|
||||
WCHAR VolumeNameBuf[FSP_FSCTL_VOLUME_NAME_SIZE / sizeof(WCHAR)];
|
||||
PDEVICE_OBJECT FsvolDeviceObject;
|
||||
PDEVICE_OBJECT FsvrtDeviceObject;
|
||||
FSP_FSVOL_DEVICE_EXTENSION *FsvolDeviceExtension;
|
||||
@ -146,6 +146,7 @@ NTSTATUS FspVolumeCreate(
|
||||
Guid.Data4[0], Guid.Data4[1], Guid.Data4[2], Guid.Data4[3],
|
||||
Guid.Data4[4], Guid.Data4[5], Guid.Data4[6], Guid.Data4[7]);
|
||||
ASSERT(NT_SUCCESS(Result));
|
||||
VolumeName.MaximumLength = VolumeName.Length;
|
||||
|
||||
/* create the volume (and virtual disk) device(s) */
|
||||
Result = FspDeviceCreate(FspFsvolDeviceExtensionKind, 0,
|
||||
@ -495,10 +496,14 @@ NTSTATUS FspVolumeGetName(
|
||||
UNICODE_STRING VolumeName;
|
||||
|
||||
ASSERT(FSP_FSCTL_VOLUME_NAME_SIZEMAX >=
|
||||
FsvolDeviceExtension->VolumeName.MaximumLength + sizeof(WCHAR));
|
||||
FsvolDeviceExtension->VolumeName.MaximumLength +
|
||||
FsvolDeviceExtension->VolumePrefix.MaximumLength +
|
||||
sizeof(WCHAR));
|
||||
|
||||
RtlInitEmptyUnicodeString(&VolumeName, SystemBuffer, FSP_FSCTL_VOLUME_NAME_SIZEMAX);
|
||||
RtlCopyUnicodeString(&VolumeName, &FsvolDeviceExtension->VolumeName);
|
||||
if (FILE_DEVICE_NETWORK_FILE_SYSTEM == FsctlDeviceObject->DeviceType)
|
||||
RtlAppendUnicodeStringToString(&VolumeName, &FsvolDeviceExtension->VolumePrefix);
|
||||
VolumeName.Buffer[VolumeName.Length / sizeof(WCHAR)] = L'\0';
|
||||
|
||||
Irp->IoStatus.Information = VolumeName.Length + sizeof(WCHAR);
|
||||
|
Reference in New Issue
Block a user