[PATCH v7 6/6] kernelbase: Reimplement GetVolumeInformation on top of GetVolumeInformationByHandle.
Zebediah Figura (she/her)
zfigura at codeweavers.com
Sat Feb 13 12:19:54 CST 2021
This fails for me:
leslie at 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 );
}
More information about the wine-devel
mailing list