http://bugs.winehq.org/show_bug.cgi?id=7711
--- Comment #35 from Alexander K. Seewald alex@seewald.at 2008-01-10 06:00:53 --- Sorry, still doesn't work. But the codeflow has subtly changed...
I get a lot of this: 0015:Call KERNEL32.FindFirstVolumeW(0034fa40,00000104) ret=004142cc 000f:Ret KERNEL32.WaitForMultipleObjects() retval=00000001 ret=7ec065c6
Initialization of drives seems to be the same:0015:Ret KERNEL32.FindFirstVolumeW() retval=00146da8 ret=004142cc 0015:Call KERNEL32.GetDriveTypeW(0034fa40 L"\\?\Volume{00000000-0000-0000-0000-000000000043}\") ret=004142eb 0015:Ret KERNEL32.GetDriveTypeW() retval=00000000 ret=004142eb 0015:Call KERNEL32.FindNextVolumeW(00146da8,0034fa40,00000104) ret=00414451 0015:Ret KERNEL32.FindNextVolumeW() retval=00000001 ret=00414451 0015:Call KERNEL32.GetDriveTypeW(0034fa40 L"\\?\Volume{00000000-0000-0000-0000-00000000005a}\") ret=004142eb 0015:Ret KERNEL32.GetDriveTypeW() retval=00000000 ret=004142eb 0015:Call KERNEL32.FindNextVolumeW(00146da8,0034fa40,00000104) ret=00414451 0015:Ret KERNEL32.FindNextVolumeW() retval=00000000 ret=00414451 0015:Call KERNEL32.FindVolumeClose(00146da8) ret=00414464 0015:Ret KERNEL32.FindVolumeClose() retval=00000001 ret=00414464
But the first reference for D: looks different:
001b:Call hook proc 0x19ac1b0 (id=WH_CALLWNDPROC,code=0,wp=00000000,lp=0034f5fc) 001b:Call KERNEL32.GetDriveTypeW(0034f154 L"D:") ret=019a98f9 001b:Ret KERNEL32.GetDriveTypeW() retval=00000002 ret=019a98f9 001b:Call KERNEL32.FindFirstVolumeW(0034ee50,00000104) ret=019ac7bc 000f:Ret KERNEL32.WaitForMultipleObjects() retval=00000001 ret=7ec065c6 000f:Call ntdll.RtlFreeHeap(00110000,00000000,0011af48) ret=7ec0626b 000f:Ret ntdll.RtlFreeHeap() retval=00000001 ret=7ec0626b 000f:Call ntdll.RtlAllocateHeap(00110000,00000000,00000018) ret=7ec0628f 000f:Ret ntdll.RtlAllocateHeap() retval=0011af48 ret=7ec0628f 000f:Call ntdll.RtlFreeHeap(00110000,00000000,0011c758) ret=7ec062f9 000f:Ret ntdll.RtlFreeHeap() retval=00000001 ret=7ec062f9 000f:Call ntdll.RtlAllocateHeap(00110000,00000000,00000400) ret=7ec0632d 000f:Ret ntdll.RtlAllocateHeap() retval=0011c758 ret=7ec0632d 000f:Call ntdll.NtGetTickCount() ret=7ec05b30 000f:Ret ntdll.NtGetTickCount() retval=0000d6b9 ret=7ec05b30 000f:Call driver dispatch 0x7e95ac20 (device=0x118f38,irp=0x7ead47b4) 000f:Ret driver dispatch 0x7e95ac20 (device=0x118f38,irp=0x7ead47b4) retval=00000000 000f:Call KERNEL32.WaitForMultipleObjects(00000002,7ead48c0,00000000,ffffffff) ret=7ec065c6 001b:Ret KERNEL32.FindFirstVolumeW() retval=00185e08 ret=019ac7bc 001b:Call KERNEL32.GetDriveTypeW(0034ee50 L"\\?\Volume{00000000-0000-0000-0000-000000000043}\") ret=019ac7db 001b:Ret KERNEL32.GetDriveTypeW() retval=00000000 ret=019ac7db 001b:Call KERNEL32.FindNextVolumeW(00185e08,0034ee50,00000104) ret=019ac941 001b:Ret KERNEL32.FindNextVolumeW() retval=00000001 ret=019ac941 001b:Call KERNEL32.GetDriveTypeW(0034ee50 L"\\?\Volume{00000000-0000-0000-0000-00000000005a}\") ret=019ac7db 001b:Ret KERNEL32.GetDriveTypeW() retval=00000000 ret=019ac7db 001b:Call KERNEL32.FindNextVolumeW(00185e08,0034ee50,00000104) ret=019ac941 001b:Ret KERNEL32.FindNextVolumeW() retval=00000000 ret=019ac941 001b:Call KERNEL32.FindVolumeClose(00185e08) ret=019ac954 001b:Ret KERNEL32.FindVolumeClose() retval=00000001 ret=019ac954
Not sure what this means, but perhaps we are one step further...