IOCTL_MOUNTMGR_QUERY_POINTS to volume in FS mount path, IoCallDriver blocks

All,

I have a volume filter with me and I needed volume’s symbolic link (unique
persistent volume guid value) before file system is mounted on the system.

Hence, I am trying to obtain this volume guid by sending
IOCTL_MOUNTMGR_QUERY_POINTS to “\Device\MountPointManager” and input triple
contains
only device name (\Device\HarddiskVolumeX).

On receiving IRP_MN_MOUNT_VOLUME on my FS CDO filter device for a volume, I
send IOCTL_MOUNTMGR_QUERY_POINTS to “\Device\MountPointManager”.

I am getting the mount points in triple form for my system volume
(\Device\HarddiskVolume1) correctly in MN_MOUNT_VOLUME code path.

However my IoCallDriver (tried both IoBuildDeviceIoControlRequest and
IoAllocateIrp) to MountPointManager device just get blocked for volume
devices other than system volume (\Device\HarddiskVolume1).

I used *!stacks *to get all kernel stacks and found that one of the stack
had MountManagers IOCTL handler (MountMgr!MountMgrDeviceControl) on top of
stack and waiting on an object, hence blocked.

Also same function works correctly when system is booted up for all volume
devices and it returns mount triplets correctly.

Question:–

  1. Is this known issue, if yes any suggestions on how to get around this?
  2. If not a known issue, any suggestions what could be the cause of hangs
    and what I am doing wrong here.

I can paste fragments of code and blocked callstack if required.

Regards
Deepak