What is way to mount Virtual file system with Virtual Disk

I have mounted file system by making a symbolic link to dirver letter e.g \??\Global\X:. ANd I have set the parameter of VPB of Virtual Disk by using the Following Code

VirtualDiskDevice->Vpb->DeviceObject = VolumeDevice;
VirtualDiskDevice->Vpb->RealDevice = VolumeDevice;
VirtualDiskDevice->Vpb->Flags |= VPB_MOUNTED;
VirtualDiskDevice->Vpb->VolumeLabelLength = PtrVolumeState->LabelName.Length / (sizeof(WCHAR))>32 ? 32 * sizeof(WCHAR) : PtrVolumeState->LabelName.Length;

RtlCopyMemory(VirtualDiskDevice->Vpb->VolumeLabel, PtrVolumeState->LabelName.Buffer, VirtualDiskDevice->Vpb->VolumeLabelLength);

Its working drive is accesible but I am getting Lots of Request with IOCTL_QUERY_DEVICE_NAME and repeated open root directory operation.

I think there is some problem with mounting process.Can you tell me what’s going wrong why mount manager not accepting my reply of IO.

I am using this code to complete the Mount manager IOCTL_MOUNTDEV_QUERY_DEVICE_NAME

UNICODE_STRING deviceName = GET_DISK_STATE(DeviceObject)->DevicePath;

RtlInitUnicodeString(&ProcessedIOCTLStr, L"IOCTL_MOUNTDEV_QUERY_DEVICE_NAME");
if (PtrIoStackLocation->Parameters.DeviceIoControl.OutputBufferLength < sizeof (MOUNTDEV_NAME))
{
Information = sizeof (MOUNTDEV_NAME);
Status = STATUS_BUFFER_OVERFLOW;
break;
}
else
{
PMOUNTDEV_NAME devName = (PMOUNTDEV_NAME)Irp->AssociatedIrp.SystemBuffer;

devName->NameLength = deviceName.Length;
USHORT outLength = sizeof(USHORT)+deviceName.Length;
if (PtrIoStackLocation->Parameters.DeviceIoControl.OutputBufferLength < outLength)
{
Status = STATUS_BUFFER_OVERFLOW;
Information = sizeof(MOUNTDEV_NAME);
break;
}

RtlCopyMemory(devName->Name, deviceName.Buffer, deviceName.Length);

Status = STATUS_SUCCESS;
Information = outLength;
}
break;

Please help me…!!