Testing an FSD with IfsTest

SUMMARY

I have an FSD (file system driver, NOT filter driver) and I wish to test it using IfsTest and the other testing tools that come with the HLK. Unfortunately I am coming to the realization that what I am trying to do may not be a fully supported scenario within the HLK.

DETAILS

I have installed the HLK Controller+Studio on Server 2016 and I have also installed the HLK client on a test computer. My FSD is also installed on the test computer. Although my driver is not a filter driver I have added the “Installable File System Filter Test” which allows me to run IfsTest.exe.

Unfortunately IfsTest.exe has some very specific requirements which make using it very difficult.

  • For reference: https://msdn.microsoft.com/en-us/library/windows/hardware/dn949406(v=vs.85).aspx

  • IfsTest requires drives g: - o:. Since my FSD emulates NTFS (not CNTFS) I would like to only test the g: drive.

  • HLK passes “inconvenient” parameters to IfsTest. For example, it passes it the /p parameter for page file testing (my FSD does not support page files) and hard codes the /d parameter to be \ntfs (rather than my FSD name). Is there any way I can specify my own parameters to IfsTest?

  • IfsTest seems to misidentify my file system although I believe I have implemented IRP_MJ_QUERY_VOLUME_INFORMATION correctly:
    108.130 : +TEST+INFO : System Parameters:: Probe-Params: :
    DeviceObject =\Ntfs
    RootVolumeObject =??\G:
    VolumeObject =??\G:
    SecondVolumeObject =??\C:
    FileSystemName =WinFsp-MEMFS
    FSIndex =0x0
    FsType =IFSTEST_FILESYSTEM_FAT12_NT5
    MaxComponentLength =255
    AllocationSize =512
    PageSize =4096
    ReadOnly =FALSE
    UnicodeOnDisk =TRUE
    CaseSensitive =FALSE
    PreserveCase =TRUE
    It is not clear to me where it gets IFSTEST_FILESYSTEM_FAT12_NT5 (perhaps from the FileSystemName)? Also notice that the DeviceObject is wrong (likely because it comes from the /d parameter).

Despite these and other problems I am eager to run the IfsTest tests as it has already identified a couple of minor issues with my FSD (primarily having to do with wrong NTSTATUS codes reported by my FSD) and it may identify other more important problems.

However I am coming to the realization that HLK/IfsTest is meant to test filter drivers and it is rather hard to use it (or abuse it) to test my own FSD with it. Any pointers much appreciated.

Bill

On Thu, 15 Dec 2016, xxxxx@billz.fastmail.fm wrote:

Unfortunately IfsTest.exe has some very specific requirements which make using it very difficult.

When I needed IfsTest a few years ago I installed a server and HLK
temporary to grab the directory with IfsTest, then I could run only that
program manually on other computers. (but I can’t be sure this is still
possible)

Bo Branten

Grab the IFSTest application and run all the tests outside of the HLK.

Pete


Kernel Drivers
Windows File System and Device Driver Consulting
www.KernelDrivers.com
866.263.9295

------ Original Message ------
From: xxxxx@billz.fastmail.fm
To: “Windows File Systems Devs Interest List”
Sent: 12/15/2016 1:18:01 AM
Subject: [ntfsd] Testing an FSD with IfsTest

>SUMMARY
>
>I have an FSD (file system driver, NOT filter driver) and I wish to
>test it using IfsTest and the other testing tools that come with the
>HLK. Unfortunately I am coming to the realization that what I am trying
>to do may not be a fully supported scenario within the HLK.
>
>
>DETAILS
>
>I have installed the HLK Controller+Studio on Server 2016 and I have
>also installed the HLK client on a test computer. My FSD is also
>installed on the test computer. Although my driver is not a filter
>driver I have added the “Installable File System Filter Test” which
>allows me to run IfsTest.exe.
>
>Unfortunately IfsTest.exe has some very specific requirements which
>make using it very difficult.
>
>- For reference:
>https://msdn.microsoft.com/en-us/library/windows/hardware/dn949406(v=vs.85).aspx
>
>- IfsTest requires drives g: - o:. Since my FSD emulates NTFS (not
>CNTFS) I would like to only test the g: drive.
>
>- HLK passes “inconvenient” parameters to IfsTest. For example, it
>passes it the /p parameter for page file testing (my FSD does not
>support page files) and hard codes the /d parameter to be \ntfs (rather
>than my FSD name). Is there any way I can specify my own parameters to
>IfsTest?
>
>- IfsTest seems to misidentify my file system although I believe I have
>implemented IRP_MJ_QUERY_VOLUME_INFORMATION correctly:
> 108.130 : +TEST+INFO : System Parameters:: Probe-Params: :
> DeviceObject =\Ntfs
> RootVolumeObject =??\G:
> VolumeObject =??\G:
> SecondVolumeObject =??\C:
> FileSystemName =WinFsp-MEMFS
> FSIndex =0x0
> FsType =IFSTEST_FILESYSTEM_FAT12_NT5
> MaxComponentLength =255
> AllocationSize =512
> PageSize =4096
> ReadOnly =FALSE
> UnicodeOnDisk =TRUE
> CaseSensitive =FALSE
> PreserveCase =TRUE
>It is not clear to me where it gets IFSTEST_FILESYSTEM_FAT12_NT5
>(perhaps from the FileSystemName)? Also notice that the DeviceObject is
>wrong (likely because it comes from the /d parameter).
>
>Despite these and other problems I am eager to run the IfsTest tests as
>it has already identified a couple of minor issues with my FSD
>(primarily having to do with wrong NTSTATUS codes reported by my FSD)
>and it may identify other more important problems.
>
>However I am coming to the realization that HLK/IfsTest is meant to
>test filter drivers and it is rather hard to use it (or abuse it) to
>test my own FSD with it. Any pointers much appreciated.
>
>Bill
>
>
>—
>NTFSD is sponsored by OSR
>
>
>MONTHLY seminars on crash dump analysis, WDF, Windows internals and
>software drivers!
>Details at http:
>
>To unsubscribe, visit the List Server section of OSR Online at
>http:</http:></http:>

Thanks for the pointers.

For future reference, if you have already downloaded the HLK on your Windows 10 computer, you can install the Filter.Driver tests only. The following MSI/CAB’s are needed:

4c5579196433c53cc1ec3d7b40ae5fd2.cab
6119459287e24c3503279ff684647c83.cab
e54a669f7bfb1c6c6ee7bba08b02a6dc.cab
fd0d8d2173424e55667bc3e935e1e376.cab
HLK Filter.Driver Content-x86_en-us.msi

This seems to work on my Windows 10 although I have not done any actual testing yet.