Went back to the new implementation of GetDiskFreeSpace*. This gives me the following tracing after starting 'wine dcom98.exe' with full tracing on:
0009:Call kernel32.GetDiskFreeSpaceA(00000000,406cfc40,406cfc38,406cfc3c,406cfc28) ret=01004f8a 0009:trace:volume:GetDiskFreeSpaceA (null),0x406cfc40,0x406cfc38,0x406cfc3c,0x406cfc28 0009:trace:volume:GetDiskFreeSpaceW (null),0x406cfc40,0x406cfc38,0x406cfc3c,0x406cfc28 0009:Call ntdll.RtlDosPathNameToNtPathName_U(4039d540 L"\",406cf770,00000000,00000000) ret=40340d1e 0009:trace:file:RtlDosPathNameToNtPathName_U (L"\",0x406cf770,(nil),(nil)) 0009:trace:file:RtlGetFullPathName_U (L"\" 520 0x406cf488 (nil)) 0009:trace:heap:RtlAllocateHeap (0x401a0000,00000002,00000018): returning 401d6b70 0009:trace:file:RtlDosPathNameToNtPathName_U At the end, returning TRUE 0009:Ret ntdll.RtlDosPathNameToNtPathName_U() retval=00000001 ret=40340d1e 0009:Call ntdll.NtOpenFile(406cf7e8,00000000,406cf778,406cf768,00000000,00000021) ret=40340d74 0009:trace:ntdll:NtCreateFile handle=0x406cf7e8 access=00000000 name=L"\??\E:\" objattr=00000040 root=(nil) sec=(nil) io=0x406cf768 alloc_size=(nil) attr=00000000 sharing=00000000 disp=1 options=00000021 ea=(nil).0x00000000 0009:trace:heap:RtlAllocateHeap (0x401a0000,00000002,00000128): returning 401d9ff0 0009:trace:heap:RtlFreeHeap (0x401a0000,00000002,401d9ff0): returning TRUE 0009:warn:ntdll:NtCreateFile L"\??\E:\" not found (c000003a)
Hope this helps someone with better understanding of the code.
Cheers,
Paul.