[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