This fails for me:
leslie@terabithia:~/git/wine64/dlls/kernel32/tests$ make volume.ok make[1]: Entering directory '/home/leslie/git/wine64' TEST dlls/kernel32/tests/volume.ok 010c:fixme:volume:GetVolumeNameForVolumeMountPointW Mounted Folders are not yet supported volume.c:498: Test failed: GetVolumeInformationA failed on null root dir, last error 5 0058:fixme:mountmgr:harddisk_ioctl returning zero-filled buffer for IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS 0058:fixme:mountmgr:query_property Faking StorageDeviceProperty data 010c:fixme:volume:SetVolumeMountPointA ("C:\winetest_mnt\", "\\?\Volume{00000000-0000-0000-0000-000000000043}\"), stub! volume.c:1312: Tests skipped: Not enough permissions to create a mounted folder. make[1]: *** [Makefile:84687: dlls/kernel32/tests/volume.ok] Error 1 make[1]: Leaving directory '/home/leslie/git/wine64' make: *** [Makefile:55: volume.ok] Error 2
A log shows:
00f0:00f4:trace:file:NtCreateFile handle=0x31f4a8 access=80100000 name=L"\??\Z:" objattr=00000040 root=(nil) sec=(nil) io=0x31f4c0 alloc_size=(nil) attr=00000000 sharing=00000003 disp=1 opti ons=00000060 ea=(nil).0x00000000 00f0:00f4:trace:file:get_dos_device L"Z:" -> "/dev/sdb1" 00f4: create_file( access=80100000, sharing=00000003, create=1, options=00000060, attrs=00000000, objattr={rootdir=0000,attributes=00000040,sd={},name=L"\??\Z:"}, filename="/dev/sdb1" ) 00f4: create_file() = ACCESS_DENIED { handle=0000 }
I think we need to keep the fallback path for now, i.e. something like the following:
if (status) { nt_name.Length += sizeof(WCHAR); status = NtOpenFile( &handle, SYNCHRONIZE, &attr, &io, 0, FILE_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT ); }