diff --git a/tst/winfsp-tests/mount-test.c b/tst/winfsp-tests/mount-test.c index cf29666c..32cee9dd 100644 --- a/tst/winfsp-tests/mount-test.c +++ b/tst/winfsp-tests/mount-test.c @@ -319,6 +319,15 @@ void mount_preflight_dotest(PWSTR DeviceName) MountPoint[2] = L'\0'; GetTestDirectory(DirBuf); + /* + * Mount points starting with \\?\X: or \\.\X: are now considered MountManager mountpoints. + * So skip the \\?\ prefix to avoid this problem. + */ + if (L'\\' == DirBuf[0] && + L'\\' == DirBuf[1] && + (L'?' == DirBuf[2] || L'.' == DirBuf[2]) && + L'\\' == DirBuf[3]) + memmove(DirBuf, DirBuf + 4, (wcslen(DirBuf + 4) + 1) * sizeof(WCHAR)); Drives = GetLogicalDrives(); ASSERT(0 != Drives); diff --git a/tst/winfsp-tests/volpath-test.c b/tst/winfsp-tests/volpath-test.c index a1aac8a5..a9c13bc7 100644 --- a/tst/winfsp-tests/volpath-test.c +++ b/tst/winfsp-tests/volpath-test.c @@ -84,12 +84,14 @@ static void volpath_dotest(ULONG Flags, PWSTR Prefix) static void volpath_test(void) { - if (NtfsTests) - { - WCHAR DirBuf[MAX_PATH]; - GetTestDirectory(DirBuf); - volpath_dotest(-1, DirBuf); - } + /* + * GetVolumePathName is not reliable on WinFsp file systems + * when *not* using the MountManager and therefore disable + * this test when using a non-MountManager mount point. + */ + if (!NtfsTests && !OptMountPoint) + TEST(volpath_test); + if (WinFspDiskTests) volpath_dotest(MemfsDisk, 0); if (WinFspNetTests) @@ -182,8 +184,30 @@ static void volpath_mount_test(void) if (WinFspDiskTests) { + WCHAR MountPoint[7]; + DWORD Drives; + WCHAR Drive; + + MountPoint[0] = L'\\'; + MountPoint[1] = L'\\'; + MountPoint[2] = L'.'; + MountPoint[3] = L'\\'; + MountPoint[4] = L'C'; + MountPoint[5] = L':'; + MountPoint[6] = L'\0'; + + Drives = GetLogicalDrives(); + ASSERT(0 != Drives); + + for (Drive = 'Z'; 'A' <= Drive; Drive--) + if (0 == (Drives & (1 << (Drive - 'A')))) + break; + ASSERT('A' <= Drive); + + MountPoint[4] = Drive; + //volpath_mount_dotest(MemfsDisk, 0, 0); - volpath_mount_dotest(MemfsDisk, 0, L"\\\\.\\m:"); + volpath_mount_dotest(MemfsDisk, 0, MountPoint); } if (WinFspNetTests) { @@ -193,7 +217,13 @@ static void volpath_mount_test(void) void volpath_tests(void) { - TEST(volpath_test); + /* + * GetVolumePathName is not reliable on WinFsp file systems + * when *not* using the MountManager and therefore disable + * this test when using a non-MountManager mount point. + */ + if (!NtfsTests && !OptMountPoint) + TEST(volpath_test); /* * This test does FspFileSystemSetMountPoint and therefore