Determine File System for Volume (W2K)

I have a PDEVICE_OBJECT (returned by IoGetDeviceObjectPointer) for a
volume. I am able to issue IoControl calls like
IOCTL_STORAGE_GET_DEVICE_NUMBER and IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS
but none of these structures tell me the file system (FAT32, FAT, CDFS,
NTFS). I also looked at DeviceObject->Vpb->Type but this is “10” for all
volumes.

I even tried opening the volume with ZwCreateFile (using the drive letter)
and successfully used IoQueryVolumeInformation with FileFsVolumeInformation
to obtain the FILE_FS_VOLUME_INFORMATION but this doesn’t tell me the file
system either.

How do I get the file system type (CDFS, FAT32, NTFS, etc) for a volume?

Thank you,
Ray Martin


You are currently subscribed to ntfsd as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com

You can try IOCTL_DISK_GET_PARTITION_INFO, the return structure has the
PartitiopnType. I think it won’t work on dynamic disks only on basic disks.

Read the boot sector ( first 512 bytes ) of volume, you can figure out the
type from there.

Regards,

Zoltan


Do You Yahoo!?

Get your free @yahoo.com address at http://mail.yahoo.com


You are currently subscribed to ntfsd as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Hello rmartin,

Use IoQueryVolumeInformation.(see in the ntifs.h).

redc> I have a PDEVICE_OBJECT (returned by IoGetDeviceObjectPointer) for a
redc> volume. I am able to issue IoControl calls like
redc> IOCTL_STORAGE_GET_DEVICE_NUMBER and IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS
redc> but none of these structures tell me the file system (FAT32, FAT, CDFS,
redc> NTFS). I also looked at DeviceObject->Vpb->Type but this is “10” for all
redc> volumes.

redc> I even tried opening the volume with ZwCreateFile (using the drive letter)
redc> and successfully used IoQueryVolumeInformation with FileFsVolumeInformation
redc> to obtain the FILE_FS_VOLUME_INFORMATION but this doesn’t tell me the file
redc> system either.

redc> How do I get the file system type (CDFS, FAT32, NTFS, etc) for a volume?

redc> Thank you,
redc> Ray Martin

redc> —
redc> You are currently subscribed to ntfsd as: xxxxx@chat.ru
redc> To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com


Best regards,
Ilia mailto:xxxxx@chat.ru


You are currently subscribed to ntfsd as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com

> and successfully used IoQueryVolumeInformation with
FileFsVolumeInformation

to obtain the FILE_FS_VOLUME_INFORMATION but this doesn’t tell me the file
system either.

How do I get the file system type (CDFS, FAT32, NTFS, etc) for a volume?

IoQueryVolumeInformation/FILE_FS_ATTRIBUTE_INFORMATION.

Max


You are currently subscribed to ntfsd as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Maybe you should try the FileFsAttributeInformation to get a
FILE_FS_ATTRIBUTE_INFORMATION structure filled. If you look at the FAT
sourcecodes of the 2000 IFS kit you’ll see that it will not fill the
filesystem name on FatQueryFsVolumeInfo. It will however on
FileFsAttributeInformation.

When all else fails you can always try around with
PDEVICE_OBJECT->DRIVER_OBJECT->DriverName.

Best regards,
Anders

Saturday, August 18, 2001, 2:14:51 AM, you wrote:

IR> Hello rmartin,

IR> Use IoQueryVolumeInformation.(see in the ntifs.h).

redc>> I have a PDEVICE_OBJECT (returned by IoGetDeviceObjectPointer) for a
redc>> volume. I am able to issue IoControl calls like
redc>> IOCTL_STORAGE_GET_DEVICE_NUMBER and IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS
redc>> but none of these structures tell me the file system (FAT32, FAT, CDFS,
redc>> NTFS). I also looked at DeviceObject->Vpb->Type but this is “10” for all
redc>> volumes.

redc>> I even tried opening the volume with ZwCreateFile (using the drive letter)
redc>> and successfully used IoQueryVolumeInformation with FileFsVolumeInformation
redc>> to obtain the FILE_FS_VOLUME_INFORMATION but this doesn’t tell me the file
redc>> system either.

redc>> How do I get the file system type (CDFS, FAT32, NTFS, etc) for a volume?

redc>> Thank you,
redc>> Ray Martin

redc>> —
redc>> You are currently subscribed to ntfsd as: xxxxx@chat.ru
redc>> To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com


Best regards,
Anders mailto:xxxxx@flaffer.com


You are currently subscribed to ntfsd as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Call ObQueryNameString() on the file system control device object; the one
you get on a FsNotification
call back. This will return the name of the file system (i.e.
\FileSystem\NTFS).

Jamey Kirby
StorageCraft, inc.
xxxxx@storagecraft.com
www.storagecraft.com

----- Original Message -----
From: “Anders Fogh”
To: “File Systems Developers”
Sent: Sunday, August 19, 2001 12:01 AM
Subject: [ntfsd] Re: Determine File System for Volume (W2K)

> Maybe you should try the FileFsAttributeInformation to get a
> FILE_FS_ATTRIBUTE_INFORMATION structure filled. If you look at the FAT
> sourcecodes of the 2000 IFS kit you’ll see that it will not fill the
> filesystem name on FatQueryFsVolumeInfo. It will however on
> FileFsAttributeInformation.
>
> When all else fails you can always try around with
> PDEVICE_OBJECT->DRIVER_OBJECT->DriverName.
>
> Best regards,
> Anders
>
>
> Saturday, August 18, 2001, 2:14:51 AM, you wrote:
>
> IR> Hello rmartin,
>
> IR> Use IoQueryVolumeInformation.(see in the ntifs.h).
>
> redc>> I have a PDEVICE_OBJECT (returned by IoGetDeviceObjectPointer) for
a
> redc>> volume. I am able to issue IoControl calls like
> redc>> IOCTL_STORAGE_GET_DEVICE_NUMBER and
IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS
> redc>> but none of these structures tell me the file system (FAT32, FAT,
CDFS,
> redc>> NTFS). I also looked at DeviceObject->Vpb->Type but this is “10”
for all
> redc>> volumes.
>
> redc>> I even tried opening the volume with ZwCreateFile (using the drive
letter)
> redc>> and successfully used IoQueryVolumeInformation with
FileFsVolumeInformation
> redc>> to obtain the FILE_FS_VOLUME_INFORMATION but this doesn’t tell me
the file
> redc>> system either.
>
> redc>> How do I get the file system type (CDFS, FAT32, NTFS, etc) for a
volume?
>
> redc>> Thank you,
> redc>> Ray Martin
>
> redc>> —
> redc>> You are currently subscribed to ntfsd as: xxxxx@chat.ru
> redc>> To unsubscribe send a blank email to
leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com
>
>
>
>
>
>
> –
> Best regards,
> Anders mailto:xxxxx@flaffer.com
>
>
>
> —
> You are currently subscribed to ntfsd as: xxxxx@storagecraft.com
> To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntfsd as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com

(more)…

POBJECT_NAME_INFORMATION NameInfo;
ULONG Length;
if ((NameInfo =
(POBJECT_NAME_INFORMATION)ExAllocatePoolWithTag(NonPagedPool, 1024,

‘mNsF’)) != NULL)
{
if (NT_SUCCESS(ObQueryNameString(DeviceObject, NameInfo, 1024, &Length)))
{
KdPrint(("%wZ is ", &nameInfo->Name));
}
ExFreePool(NameInfo);
}
if (FsActive == TRUE)
KdPrint((“loading\n”));
else
KdPrint((“unloading\n”));

This works for NT and Windows 2000.

Jamey Kirby
StorageCraft, inc.
xxxxx@storagecraft.com
www.storagecraft.com

----- Original Message -----
From: “Anders Fogh”
To: “File Systems Developers”
Sent: Sunday, August 19, 2001 12:01 AM
Subject: [ntfsd] Re: Determine File System for Volume (W2K)

> Maybe you should try the FileFsAttributeInformation to get a
> FILE_FS_ATTRIBUTE_INFORMATION structure filled. If you look at the FAT
> sourcecodes of the 2000 IFS kit you’ll see that it will not fill the
> filesystem name on FatQueryFsVolumeInfo. It will however on
> FileFsAttributeInformation.
>
> When all else fails you can always try around with
> PDEVICE_OBJECT->DRIVER_OBJECT->DriverName.
>
> Best regards,
> Anders
>
>
> Saturday, August 18, 2001, 2:14:51 AM, you wrote:
>
> IR> Hello rmartin,
>
> IR> Use IoQueryVolumeInformation.(see in the ntifs.h).
>
> redc>> I have a PDEVICE_OBJECT (returned by IoGetDeviceObjectPointer) for
a
> redc>> volume. I am able to issue IoControl calls like
> redc>> IOCTL_STORAGE_GET_DEVICE_NUMBER and
IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS
> redc>> but none of these structures tell me the file system (FAT32, FAT,
CDFS,
> redc>> NTFS). I also looked at DeviceObject->Vpb->Type but this is “10”
for all
> redc>> volumes.
>
> redc>> I even tried opening the volume with ZwCreateFile (using the drive
letter)
> redc>> and successfully used IoQueryVolumeInformation with
FileFsVolumeInformation
> redc>> to obtain the FILE_FS_VOLUME_INFORMATION but this doesn’t tell me
the file
> redc>> system either.
>
> redc>> How do I get the file system type (CDFS, FAT32, NTFS, etc) for a
volume?
>
> redc>> Thank you,
> redc>> Ray Martin
>
> redc>> —
> redc>> You are currently subscribed to ntfsd as: xxxxx@chat.ru
> redc>> To unsubscribe send a blank email to
leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com
>
>
>
>
>
>
> –
> Best regards,
> Anders mailto:xxxxx@flaffer.com
>
>
>
> —
> You are currently subscribed to ntfsd as: xxxxx@storagecraft.com
> To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntfsd as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Yet another way (from Max):

NTSTATUS GetFsKind(PDEVICE_OBJECT FsDeviceObject,
BOOLEAN* IsFat,
BOOLEAN* IsFat32)
{
NTSTATUS Status;
PIRP Irp;
PIO_STACK_LOCATION NextLoc;
PWSTR FsName;
ULONG FsNameLen;
// “FAT” or “FAT32” names will fit
UCHAR Buffer[ sizeof(FILE_FS_ATTRIBUTE_INFORMATION) + 4 *
sizeof(WCHAR) ];
// Send IRP_MJ_QUERY_VOLUME_INFORMATION/FileFsAttributeInformation IRP
// Allocate the IRP
Irp = IoAllocateIrp((CCHAR)(FsDeviceObject->StackSize + 1), FALSE);
if( Irp == NULL )
return STATUS_INSUFFICIENT_RESOURCES;
// Fill the IRP
// The majority of fields are not necessary since we use
STATUS_MORE_PROCESSING_REQUIRED
// and IopCompleteRequest will not be called for us
Irp->RequestorMode = KernelMode;
Irp->AssociatedIrp.SystemBuffer = Buffer;
// Fill the IRP stack location
// DeviceObject field is filled in IoCallDriver
NextLoc = IoGetNextIrpStackLocation(Irp);
NextLoc->MajorFunction = IRP_MJ_QUERY_VOLUME_INFORMATION;
NextLoc->FileObject = Store->FsFileObject;
NextLoc->Parameters.QueryVolume.FsInformationClass =
FileFsAttributeInformation;
NextLoc->Parameters.QueryVolume.Length = sizeof(Buffer);
// Do the operation
Status = CallDriverSync(FsDeviceObject, Irp);
// Set the default values
*IsFat = FALSE;
*IsFat32 = FALSE;
if( Status == STATUS_BUFFER_OVERFLOW )
// FS name too long
// Not a FAT
return STATUS_SUCCESS;
if( !NT_SUCCESS(Status) )
// Failed
return Status;
// Extract the name from the returned structure
FsName = ((PFILE_FS_ATTRIBUTE_INFORMATION)Buffer)->FileSystemName;
FsNameLen =
((PFILE_FS_ATTRIBUTE_INFORMATION)Buffer)->FileSystemNameLength;
// Compare the name
if( ( FsNameLen >= 3 * sizeof(WCHAR) ) &&
RtlEqualMemory(FsName, L"FAT", 3 *
sizeof(WCHAR)) )
{
// FAT of FAT32
*IsFat = TRUE;
// Check for FAT32
if( ( FsNameLen >= 5 * sizeof(WCHAR) ) &&
RtlEqualMemory(FsName + 3, L"32", 2 *
sizeof(WCHAR)) )
{
KdPrint((“FAT32 volume\r\n”));
*IsFat32 = TRUE;
}
#if DBG
else
// FAT12/16
KdPrint((“FAT volume\r\n”));
#endif
}
#if DBG
else
// Not FAT
KdPrint((“Not a FAT volume\r\n”));
#endif
// Done
return Status;
}

Jamey Kirby
StorageCraft, inc.
xxxxx@storagecraft.com
www.storagecraft.com

----- Original Message -----
From: “Jamey Kirby”
To: “File Systems Developers”
Sent: Wednesday, August 15, 2001 1:23 AM
Subject: [ntfsd] Re: Determine File System for Volume (W2K)

> (more)…
>
> POBJECT_NAME_INFORMATION NameInfo;
> ULONG Length;
> if ((NameInfo =
> (POBJECT_NAME_INFORMATION)ExAllocatePoolWithTag(NonPagedPool, 1024,
>
> ‘mNsF’)) != NULL)
> {
> if (NT_SUCCESS(ObQueryNameString(DeviceObject, NameInfo, 1024,
&Length)))
> {
> KdPrint(("%wZ is ", &nameInfo->Name));
> }
> ExFreePool(NameInfo);
> }
> if (FsActive == TRUE)
> KdPrint((“loading\n”));
> else
> KdPrint((“unloading\n”));
>
> This works for NT and Windows 2000.
>
> Jamey Kirby
> StorageCraft, inc.
> xxxxx@storagecraft.com
> www.storagecraft.com
>
> ----- Original Message -----
> From: “Anders Fogh”
> To: “File Systems Developers”
> Sent: Sunday, August 19, 2001 12:01 AM
> Subject: [ntfsd] Re: Determine File System for Volume (W2K)
>
>
> > Maybe you should try the FileFsAttributeInformation to get a
> > FILE_FS_ATTRIBUTE_INFORMATION structure filled. If you look at the FAT
> > sourcecodes of the 2000 IFS kit you’ll see that it will not fill the
> > filesystem name on FatQueryFsVolumeInfo. It will however on
> > FileFsAttributeInformation.
> >
> > When all else fails you can always try around with
> > PDEVICE_OBJECT->DRIVER_OBJECT->DriverName.
> >
> > Best regards,
> > Anders
> >
> >
> > Saturday, August 18, 2001, 2:14:51 AM, you wrote:
> >
> > IR> Hello rmartin,
> >
> > IR> Use IoQueryVolumeInformation.(see in the ntifs.h).
> >
> > redc>> I have a PDEVICE_OBJECT (returned by IoGetDeviceObjectPointer)
for
> a
> > redc>> volume. I am able to issue IoControl calls like
> > redc>> IOCTL_STORAGE_GET_DEVICE_NUMBER and
> IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS
> > redc>> but none of these structures tell me the file system (FAT32, FAT,
> CDFS,
> > redc>> NTFS). I also looked at DeviceObject->Vpb->Type but this is “10”
> for all
> > redc>> volumes.
> >
> > redc>> I even tried opening the volume with ZwCreateFile (using the
drive
> letter)
> > redc>> and successfully used IoQueryVolumeInformation with
> FileFsVolumeInformation
> > redc>> to obtain the FILE_FS_VOLUME_INFORMATION but this doesn’t tell me
> the file
> > redc>> system either.
> >
> > redc>> How do I get the file system type (CDFS, FAT32, NTFS, etc) for a
> volume?
> >
> > redc>> Thank you,
> > redc>> Ray Martin
> >
> > redc>> —
> > redc>> You are currently subscribed to ntfsd as: xxxxx@chat.ru
> > redc>> To unsubscribe send a blank email to
> leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com
> >
> >
> >
> >
> >
> >
> > –
> > Best regards,
> > Anders mailto:xxxxx@flaffer.com
> >
> >
> >
> > —
> > You are currently subscribed to ntfsd as: xxxxx@storagecraft.com
> > To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com
>
>
> —
> You are currently subscribed to ntfsd as: xxxxx@storagecraft.com
> To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntfsd as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com

This is to check for FAT and FAT32 only.

The code was intended to help cluster-to-byte-offset translation.
On non-FAT, it is trivial multiplication.
On FAT, given its FAT+root directory area, this is not trivial.

Max

----- Original Message -----
From: “Jamey Kirby”
To: “File Systems Developers”
Sent: Wednesday, August 15, 2001 12:59 PM
Subject: [ntfsd] Re: Determine File System for Volume (W2K)

> Yet another way (from Max):
>
> NTSTATUS GetFsKind(PDEVICE_OBJECT FsDeviceObject,
> BOOLEAN* IsFat,
> BOOLEAN* IsFat32)
> {
> NTSTATUS Status;
> PIRP Irp;
> PIO_STACK_LOCATION NextLoc;
> PWSTR FsName;
> ULONG FsNameLen;
> // “FAT” or “FAT32” names will fit
> UCHAR Buffer[sizeof(FILE_FS_ATTRIBUTE_INFORMATION) + 4 *
> sizeof(WCHAR)];
> // Send IRP_MJ_QUERY_VOLUME_INFORMATION/FileFsAttributeInformation IRP
> // Allocate the IRP
> Irp = IoAllocateIrp((CCHAR)(FsDeviceObject->StackSize + 1), FALSE);
> if( Irp == NULL )
> return STATUS_INSUFFICIENT_RESOURCES;
> // Fill the IRP
> // The majority of fields are not necessary since we use
> STATUS_MORE_PROCESSING_REQUIRED
> // and IopCompleteRequest will not be called for us
> Irp->RequestorMode = KernelMode;
> Irp->AssociatedIrp.SystemBuffer = Buffer;
> // Fill the IRP stack location
> // DeviceObject field is filled in IoCallDriver
> NextLoc = IoGetNextIrpStackLocation(Irp);
> NextLoc->MajorFunction = IRP_MJ_QUERY_VOLUME_INFORMATION;
> NextLoc->FileObject = Store->FsFileObject;
> NextLoc->Parameters.QueryVolume.FsInformationClass =
> FileFsAttributeInformation;
> NextLoc->Parameters.QueryVolume.Length = sizeof(Buffer);
> // Do the operation
> Status = CallDriverSync(FsDeviceObject, Irp);
> // Set the default values
> *IsFat = FALSE;
> *IsFat32 = FALSE;
> if( Status == STATUS_BUFFER_OVERFLOW )
> // FS name too long
> // Not a FAT
> return STATUS_SUCCESS;
> if( !NT_SUCCESS(Status) )
> // Failed
> return Status;
> // Extract the name from the returned structure
> FsName = ((PFILE_FS_ATTRIBUTE_INFORMATION)Buffer)->FileSystemName;
> FsNameLen =
> ((PFILE_FS_ATTRIBUTE_INFORMATION)Buffer)->FileSystemNameLength;
> // Compare the name
> if( ( FsNameLen >= 3 * sizeof(WCHAR) ) &&
> RtlEqualMemory(FsName, L"FAT", 3 *
> sizeof(WCHAR)) )
> {
> // FAT of FAT32
> *IsFat = TRUE;
> // Check for FAT32
> if( ( FsNameLen >= 5 * sizeof(WCHAR) ) &&
> RtlEqualMemory(FsName + 3, L"32", 2 *
> sizeof(WCHAR)) )
> {
> KdPrint((“FAT32 volume\r\n”));
> *IsFat32 = TRUE;
> }
> #if DBG
> else
> // FAT12/16
> KdPrint((“FAT volume\r\n”));
> #endif
> }
> #if DBG
> else
> // Not FAT
> KdPrint((“Not a FAT volume\r\n”));
> #endif
> // Done
> return Status;
> }
>
>
>
>
> Jamey Kirby
> StorageCraft, inc.
> xxxxx@storagecraft.com
> www.storagecraft.com
>
> ----- Original Message -----
> From: “Jamey Kirby”
> To: “File Systems Developers”
> Sent: Wednesday, August 15, 2001 1:23 AM
> Subject: [ntfsd] Re: Determine File System for Volume (W2K)
>
>
> > (more)…
> >
> > POBJECT_NAME_INFORMATION NameInfo;
> > ULONG Length;
> > if ((NameInfo =
> > (POBJECT_NAME_INFORMATION)ExAllocatePoolWithTag(NonPagedPool, 1024,
> >
> > ‘mNsF’)) != NULL)
> > {
> > if (NT_SUCCESS(ObQueryNameString(DeviceObject, NameInfo, 1024,
> &Length)))
> > {
> > KdPrint(("%wZ is ", &nameInfo->Name));
> > }
> > ExFreePool(NameInfo);
> > }
> > if (FsActive == TRUE)
> > KdPrint((“loading\n”));
> > else
> > KdPrint((“unloading\n”));
> >
> > This works for NT and Windows 2000.
> >
> > Jamey Kirby
> > StorageCraft, inc.
> > xxxxx@storagecraft.com
> > www.storagecraft.com
> >
> > ----- Original Message -----
> > From: “Anders Fogh”
> > To: “File Systems Developers”
> > Sent: Sunday, August 19, 2001 12:01 AM
> > Subject: [ntfsd] Re: Determine File System for Volume (W2K)
> >
> >
> > > Maybe you should try the FileFsAttributeInformation to get a
> > > FILE_FS_ATTRIBUTE_INFORMATION structure filled. If you look at the FAT
> > > sourcecodes of the 2000 IFS kit you’ll see that it will not fill the
> > > filesystem name on FatQueryFsVolumeInfo. It will however on
> > > FileFsAttributeInformation.
> > >
> > > When all else fails you can always try around with
> > > PDEVICE_OBJECT->DRIVER_OBJECT->DriverName.
> > >
> > > Best regards,
> > > Anders
> > >
> > >
> > > Saturday, August 18, 2001, 2:14:51 AM, you wrote:
> > >
> > > IR> Hello rmartin,
> > >
> > > IR> Use IoQueryVolumeInformation.(see in the ntifs.h).
> > >
> > > redc>> I have a PDEVICE_OBJECT (returned by IoGetDeviceObjectPointer)
> for
> > a
> > > redc>> volume. I am able to issue IoControl calls like
> > > redc>> IOCTL_STORAGE_GET_DEVICE_NUMBER and
> > IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS
> > > redc>> but none of these structures tell me the file system (FAT32,
FAT,
> > CDFS,
> > > redc>> NTFS). I also looked at DeviceObject->Vpb->Type but this is
“10”
> > for all
> > > redc>> volumes.
> > >
> > > redc>> I even tried opening the volume with ZwCreateFile (using the
> drive
> > letter)
> > > redc>> and successfully used IoQueryVolumeInformation with
> > FileFsVolumeInformation
> > > redc>> to obtain the FILE_FS_VOLUME_INFORMATION but this doesn’t tell
me
> > the file
> > > redc>> system either.
> > >
> > > redc>> How do I get the file system type (CDFS, FAT32, NTFS, etc) for
a
> > volume?
> > >
> > > redc>> Thank you,
> > > redc>> Ray Martin
> > >
> > > redc>> —
> > > redc>> You are currently subscribed to ntfsd as:
xxxxx@chat.ru
> > > redc>> To unsubscribe send a blank email to
> > leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com
> > >
> > >
> > >
> > >
> > >
> > >
> > > –
> > > Best regards,
> > > Anders mailto:xxxxx@flaffer.com
> > >
> > >
> > >
> > > —
> > > You are currently subscribed to ntfsd as: xxxxx@storagecraft.com
> > > To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com
> >
> >
> > —
> > You are currently subscribed to ntfsd as: xxxxx@storagecraft.com
> > To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com
>
>
> —
> You are currently subscribed to ntfsd as: xxxxx@storagecraft.com
> To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com
>


You are currently subscribed to ntfsd as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com