No application I am aware of needs this. We currently have an awkward divide between volume/disk/drive ioctls (and NtQueryVolumeInformationFile classes, which are technically not ioctls). Some are implemented in mountmgr, some in ntdll, some in both, and one (FSCTL_DISMOUNT_VOLUME) in the server. Which version is called depends on how the device is opened. NT paths of the form \??\A: or \DosDevices\A: go to ntdll, but other paths, such as \Device\HarddiskVolume0 or \??\Volume{...}, go to mountmgr. It is my intent to move everything to mountmgr (with the exception of NtQueryVolumeInformationFile, which can be called on any file in the volume, not just the volume device or volume root. Note that in many cases we do ultimately forward these calls to mountmgr via get_mountmgr_fs_info() anyway.) This means the following: - FileFsFullSizeInformationEx implemented in mountmgr - FileFsDeviceInformation implemented in ntoskrnl (this one is actually handled by the I/O manager) - FSCTL_DISMOUNT_VOLUME moved from server to mountmgr. mountmgr will have to call the server to close open files as part of this. - Everything inside of cdrom.c would be moved to mountmgr. This is a lot of thrashing, but will ultimately result in more natural code; in particular the ugly hacks for IOCTL_STORAGE_EJECT_MEDIA and the "cache" can effectively go away. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/9927