Hello,
I’m in the process of porting a 32-bit device driver from Windows XP to
Windows
Vista. It’s not going too bad but I encountered what looks like a Vista
quirk (bug?).
I noticed (after spending some time with Windbg) that calls to
IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS still work in Windows Vista in user
mode but *not in kernel mode.
When done in kernel mode I get a C000000E error message
(STATUS_NO_SUCH_DEVICE)
after doing a call like this
Irp = IoBuildDeviceIoControlRequest(
IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS,
DeviceObject,
NULL,
0,
pVolumeDiskExtents,
OutputBufferLength,
FALSE,
&Event,
&IoStatusBlock);
I use this code to identify RAIDs (pVolumeDiskExtents ->NumberOfDiskExtents
1),
but it fails even when querying regular Volumes. This is driver that has
worked for
a long time in Windows 2000 and XP but is not longer working in Vista.
Any idea what could have changed?
Thank you very much for your help
Best Regards,
Earnesto Wong
What is the pnp state of the device. ?. Has it successfully gone through
a IRP_MN_START_DEVICE?
FtDisk shows different behavior than LDM for volumes that are not
started yet. For e.g IOCTL_MOUNTDEV_QUERY_UNIQUE_ID fails for FtDisk
(basic disk volumes) if the volume is not started.
Harish
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of E Wong
Sent: Wednesday, February 14, 2007 4:26 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS doesn’t work on
Vista in kernel mode
Hello,
I’m in the process of porting a 32-bit device driver from Windows XP to
Windows
Vista. It’s not going too bad but I encountered what looks like a Vista
quirk (bug?).
I noticed (after spending some time with Windbg) that calls to
IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS still work in Windows Vista in user
mode but *not in kernel mode.
When done in kernel mode I get a C000000E error message
(STATUS_NO_SUCH_DEVICE)
after doing a call like this
Irp = IoBuildDeviceIoControlRequest(
IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS,
DeviceObject,
NULL,
0,
pVolumeDiskExtents,
OutputBufferLength,
FALSE,
&Event,
&IoStatusBlock);
I use this code to identify RAIDs (pVolumeDiskExtents
->NumberOfDiskExtents > 1),
but it fails even when querying regular Volumes. This is driver that has
worked for
a long time in Windows 2000 and XP but is not longer working in Vista.
Any idea what could have changed?
Thank you very much for your help
Best Regards,
Earnesto Wong
— Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256 To unsubscribe, visit the
List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer