Hi Christian, On Oct 3 14:39, Christian Franke wrote: > Christian Franke wrote: > > This is a first attempt to partly emulate the Linux directory > > /dev/disk/by-id. Useful to make sure the correct device is accessed in > > conjunction with dd, ddrescue, fdisk, .... > > Attached is the second attempt. > > > > The additional '*-partN' links to partitions are not yet included. > > These are now included. > > > > This only works properly if Win32 path '\\.\PhysicalDriveN' is always > > trivially mapped to NT path '\Device\HarddiskN\Partition0'. > > IOCTL_STORAGE_QUERY_PROPERTY with a handle from NtOpenFile(., > > READ_CONTROL,...) instead of CreateFile(., 0, ...) did not work with all > > drivers. With stornvme.sys, it fails with permission denied. Perhaps > > other permission bits are required for NtOpenFile(). Thanks for any info > > regarding this. > > According to NtQueryObject(., ObjectBasicInformation, ...), using > NtOpenFile(., MAXIMUM_ALLOWED, ...) without admin rights sets GrantedAccess > to 0x001200a0 (FILE_EXECUTE|FILE_READ_ATTRIBUTES|READ_CONTROL|SYNCHRONIZE). > For some unknown reason, NVMe drives behind stornvme.sys additionally > require SYNCHRONIZE to use IOCTL_STORAGE_QUERY_PROPERTY. Possibly a harmless > bug in the access check somewhere in the NVMe stack. > > The disk scanning from the first patch has been reworked based on code > borrowed from proc.cc:format_proc_partitions(). For the longer term, it may > make sense to provide one flexible scanning function for /dev/sdXN, > /proc/partitions and /proc/disk/by-id.
I applied your patch locally (patch looks pretty well, btw) but found that /dev/disk/by-id is empty, even when running with admin rights. I ran this on Windows 11 and Windows 2K19 in a QEMU/KVM VM. A \Device\Harddisk0\Partition0 symlink pointing to \Device\Harddisk0\DR0 exists in both cases. I straced it, and found the following debug output: 1015 1155432 [main] ls 361 stordesc_to_id_name: Harddisk0\Partition0: 'Red_Hat' 'VirtIO' '' (ignored) Is that really desired? Thanks, Corinna