bug in filter manager on IoVolumeDeviceToDosName call?

I’m getting a bugcheck when I use IoVolumeDeviceToDosName. As you can see
from the stack text below, it appears that the filter manager is rolling an
IRP without a file object which causes IoIsOperationSynchronous to bugcheck
(I am familiar with this symptom since I’ve done it myself). This is all
happening in a worker thread at a low irql. I checked the volume device
object in windbg and it looks good before the call. The device object was
just created with a successful FltGetDeviceObject call using a FLT_VOLUME
structure that is known good.

STACK_TEXT:
f9e4d9d0 f9687f3a 81cb91f8 f9e4da10 80a21a49 nt!IoIsOperationSynchronous+0xe
f9e4d9dc 80a21a49 82367770 81cb91f8 82367020 Ntfs!NtfsFsdDispatch+0xe
f9e4d9f4 f96d86cd 00000001 00000001 00000001 nt!IopfCallDriver+0x51
f9e4da10 80a21a49 82367020 81cb91f8 00000000 sr!SrPassThrough+0x16d
f9e4da28 f9749bc3 82253a98 81cb91f8 81d2b000 nt!IopfCallDriver+0x51
f9e4da3c f974b255 81cb93ac 82253a98 81cb91f8 fltmgr!FltpPassThrough+0x359
f9e4da70 80a21a49 82253a98 81cb91f8 82253a98 fltmgr!FltpDispatch+0x187
f9e4da88 80a255c3 00000000 82252020 00000000 nt!IopfCallDriver+0x51
f9e4dcd8 f5138185 82253a98 f9e4dd74 00000000 nt!IoVolumeDeviceToDosName+0xa5

Can someone see any fault in my logic? Should I register this as a bug?
How does one do this?

Does anyone know a different way to get a drive letter for a volume?

Mark:

You need to call FltGetDiskDeviceObject(), not FltGetDeviceObject(). The
IoVolumeDeviceToDosName() call requires the VDO of the storage class driver,
not the Filter Manager’s volume device object for a given volume.

BTW, you might consider using RtlVolumeDeviceToDosName() since
IoVolumeDeviceToDosName() is only XP and higher.

Ken

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Mark Hahn
Sent: Tuesday, March 22, 2005 4:22 PM
To: Windows File Systems Devs Interest List
Subject: [ntfsd] bug in filter manager on IoVolumeDeviceToDosName call?

I’m getting a bugcheck when I use IoVolumeDeviceToDosName. As you can see
from the stack text below, it appears that the filter manager is rolling an
IRP without a file object which causes IoIsOperationSynchronous to bugcheck
(I am familiar with this symptom since I’ve done it myself). This is all
happening in a worker thread at a low irql. I checked the volume device
object in windbg and it looks good before the call. The device object was
just created with a successful FltGetDeviceObject call using a FLT_VOLUME
structure that is known good.

STACK_TEXT:
f9e4d9d0 f9687f3a 81cb91f8 f9e4da10 80a21a49 nt!IoIsOperationSynchronous+0xe
f9e4d9dc 80a21a49 82367770 81cb91f8 82367020 Ntfs!NtfsFsdDispatch+0xe
f9e4d9f4 f96d86cd 00000001 00000001 00000001 nt!IopfCallDriver+0x51
f9e4da10 80a21a49 82367020 81cb91f8 00000000 sr!SrPassThrough+0x16d
f9e4da28 f9749bc3 82253a98 81cb91f8 81d2b000 nt!IopfCallDriver+0x51
f9e4da3c f974b255 81cb93ac 82253a98 81cb91f8 fltmgr!FltpPassThrough+0x359
f9e4da70 80a21a49 82253a98 81cb91f8 82253a98 fltmgr!FltpDispatch+0x187
f9e4da88 80a255c3 00000000 82252020 00000000 nt!IopfCallDriver+0x51
f9e4dcd8 f5138185 82253a98 f9e4dd74 00000000 nt!IoVolumeDeviceToDosName+0xa5

Can someone see any fault in my logic? Should I register this as a bug?
How does one do this?

Does anyone know a different way to get a drive letter for a volume?


Questions? First check the IFS FAQ at
https://www.osronline.com/article.cfm?id=17

You are currently subscribed to ntfsd as: xxxxx@comcast.net
To unsubscribe send a blank email to xxxxx@lists.osr.com

Thx, that is two more I owe you…

“Ken Cross” wrote in message news:xxxxx@ntfsd…
> Mark:
>
> You need to call FltGetDiskDeviceObject(), not FltGetDeviceObject(). The
> IoVolumeDeviceToDosName() call requires the VDO of the storage class
> driver,
> not the Filter Manager’s volume device object for a given volume.
>
> BTW, you might consider using RtlVolumeDeviceToDosName() since
> IoVolumeDeviceToDosName() is only XP and higher.
>
> Ken
>
>
> -----Original Message-----
> From: xxxxx@lists.osr.com
> [mailto:xxxxx@lists.osr.com] On Behalf Of Mark Hahn
> Sent: Tuesday, March 22, 2005 4:22 PM
> To: Windows File Systems Devs Interest List
> Subject: [ntfsd] bug in filter manager on IoVolumeDeviceToDosName call?
>
> I’m getting a bugcheck when I use IoVolumeDeviceToDosName. As you can see
> from the stack text below, it appears that the filter manager is rolling
> an
> IRP without a file object which causes IoIsOperationSynchronous to
> bugcheck
> (I am familiar with this symptom since I’ve done it myself). This is all
> happening in a worker thread at a low irql. I checked the volume device
> object in windbg and it looks good before the call. The device object was
> just created with a successful FltGetDeviceObject call using a FLT_VOLUME
> structure that is known good.
>
> STACK_TEXT:
> f9e4d9d0 f9687f3a 81cb91f8 f9e4da10 80a21a49
> nt!IoIsOperationSynchronous+0xe
> f9e4d9dc 80a21a49 82367770 81cb91f8 82367020 Ntfs!NtfsFsdDispatch+0xe
> f9e4d9f4 f96d86cd 00000001 00000001 00000001 nt!IopfCallDriver+0x51
> f9e4da10 80a21a49 82367020 81cb91f8 00000000 sr!SrPassThrough+0x16d
> f9e4da28 f9749bc3 82253a98 81cb91f8 81d2b000 nt!IopfCallDriver+0x51
> f9e4da3c f974b255 81cb93ac 82253a98 81cb91f8 fltmgr!FltpPassThrough+0x359
> f9e4da70 80a21a49 82253a98 81cb91f8 82253a98 fltmgr!FltpDispatch+0x187
> f9e4da88 80a255c3 00000000 82252020 00000000 nt!IopfCallDriver+0x51
> f9e4dcd8 f5138185 82253a98 f9e4dd74 00000000
> nt!IoVolumeDeviceToDosName+0xa5
>
> Can someone see any fault in my logic? Should I register this as a bug?
> How does one do this?
>
> Does anyone know a different way to get a drive letter for a volume?
>
>
>
> —
> Questions? First check the IFS FAQ at
> https://www.osronline.com/article.cfm?id=17
>
> You are currently subscribed to ntfsd as: xxxxx@comcast.net
> To unsubscribe send a blank email to xxxxx@lists.osr.com
>
>