Hi Guys,
Sending this again assuming ntfsd may be appropriate forum.
I try to find some clues on this issue, but i could not get anything either
from forums or windows internals book.
My driver is a virtual volume driver which mounts RO volumes by sending an
IOCTL IOCTL_MOUNTMGR_VOLUME_ARRIVAL_NOTIFICATION to mountmanager and
responding to subsequent IOCTLs.
My source and vsnap volumes are on the same machine.
But I am seeing strange issue, if my source volume has mount point :
Here Mount operation creates duplicate of orginal mount point. But Dismount
operation corrupts the mount point name
space(I guess).
Original mount point is properly accessible from explorer. But utilities
like Mountvol and disk management(Right click on mount point partition)
complains with error “Device Attached to the system is not functioning”.
e.g :
Let’s say my source volume is D:\ which has mount point d:\mnt1
Let’s say my virtual volume is c:\vitual1 which has duplicate mountpoint
c:\virtual1\mnt1.
After Dismount, When i try to list original d:\mnt1 partition through
mountvol or diskmgmt.msc, throws above error.
As part of dismount operation, I properly cleanup Deviceextension and
delete device using IODeleteDevice(). Looks like unmounting virtual volume
also dereferences original mount point and throws above error.
Here are more details how my device object look after mount and dismount
operation…
After Mount :
0: kd> !devobj fffffa8002fdcb90
Device object (fffffa8002fdcb90) is for:
VVolume0{49be0592-8989-11e1-9b62-00188b8c168f} \Driver\virvol DriverObject
fffffa800264b290
Current Irp 00000000 RefCount 32 Type 00000007 Flags 00000050
Vpb fffffa80028ceea0 Dacl fffff9a100301740 DevExt fffffa8002fdcce0
DevObjExt fffffa8002fdce20 Dope fffffa80026f8260
ExtensionFlags (0xc0000800) DOE_BOTTOM_OF_FDO_STACK, DOE_DESIGNATED_FDO
Unknown flags 0x00000800
Device queue is not busy.
0: kd> !object fffffa8002fdcb90
Object: fffffa8002fdcb90 Type: (fffffa8000ccd080) Device
ObjectHeader: fffffa8002fdcb60 (new version)
HandleCount: 0 PointerCount: 5
Directory Object: fffff8a012db6bc0 Name:
VVolume0{49be0592-8989-11e1-9b62-00188b8c168f}
After Dismount :
0: kd> !devobj fffffa8002fdcb90
Device object (fffffa8002fdcb90) is for:
\Driver\virvol DriverObject fffffa800264b290
Current Irp 00000000 RefCount 0 Type 00000007 Flags 00000050
Dacl fffff9a100301740 DevExt fffffa8002fdcce0 DevObjExt fffffa8002fdce20
ExtensionFlags (0xc4000802) DOE_DELETE_PENDING, DOE_BOTTOM_OF_FDO_STACK,
DOE_DESIGNATED_FDO
Unknown flags 0x04000800
Device queue is not busy.
0: kd> !object fffffa8002fdcb90
Object: fffffa8002fdcb90 Type: (bad0b0b0)
ObjectHeader: fffffa8002fdcb60 (new version)
HandleCount: 0 PointerCount: 0
Directory Object: fffffa8002e0fca0 Name: (*** Name not accessible ***)
Please suggest some way to debug this?
Thanks,
Suresh
NTDEV is sponsored by OSR
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars
To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer