2009/3/8 Forest Hale lordhavoc@ghdigital.com:
The problem with mountmgr is that it's not even calling the type function because the NtQueryVolumeInformationFile is asking the Linux kernel about this path and the Linux kernel is saying it's in an NFS filesystem on my computer (which is true), then it's reporting it as a network drive, and not even checking with the mountmgr at all.
So I overrode it in kernel32 as the most direct workaround for this specific problem.
I still get the same problem if I choose to install Steam on any other drive mount that happens to be in an NFS path, but I could not simply make the mountmgr override the NtQueryVolumeInformationFile result because mountmgr is always returning DRIVE_FIXED for drives with no registry key
You're wrong there, it's DRIVE_UNKNOWN, which is the autodetect thing (I haven't looked into it in detail, but something is *correctly* autodetecting your drive C: as a network drive).
http://www.winehq.org/pipermail/wine-devel/2009-March/073835.html This patch to mountmgr.sys forces C: to be DRIVE_FIXED when changes are made to the config for it. It's probably not ideal in your situation, as you'd have to make define_unix_drive() get called (this happens when you apply drive settings in winecfg).
http://www.winehq.org/pipermail/wine-patches/2009-March/070292.html If you combine it with this patch, you should be able to ensure that the C: drive type is set to "hd" in your registry.
I'm still pretty sure kernel32 isn't the right place for forcing drive type. Maybe someone more experienced can comment?