http://bugs.winehq.org/show_bug.cgi?id=9956
--- Comment #9 from Anastasius Focht focht@gmx.net 2007-10-11 16:22:36 --- Created an attachment (id=8524) --> (http://bugs.winehq.org/attachment.cgi?id=8524) program to display cdrom values/mimic cdcheck call sequence
Hello,
--- quote --- Im sorry for the size, but there are thousends of seh lines... --- quote ---
Yes, annoying ... it's the software protection producing this (single step exceptions).
Following is probably the relevant snippet, extracted from log:
--- quote --- .. 0010:Call KERNEL32.GetDriveTypeA(0034f000 "e:\") ret=00a017b9 0010:Ret KERNEL32.GetDriveTypeA() retval=00000005 ret=00a017b9 0010:Call KERNEL32.GetVolumeInformationA(0034f000 "e:\",00a1da28,00000014,00a1da04,00a1da00,00a1d9fc,00a1da08,0000001e) ret=00a01881 0010:Ret KERNEL32.GetVolumeInformationA() retval=00000001 ret=00a01881 0010:Call KERNEL32.GetDiskFreeSpaceA(0034f000 "e:\",00a1d9f8,00a1d9f4,00a1d9f0,00a1d9ec) ret=00a01947 0010:Ret KERNEL32.GetDiskFreeSpaceA() retval=00000001 ret=00a01947 0010:Call ntdll.RtlReAllocateHeap(00cb0000,00000000,00cb5a50,00000c00) ret=00a04a16 0010:Ret ntdll.RtlReAllocateHeap() retval=00cb5a50 ret=00a04a16 0010:Call ntdll.RtlFreeHeap(00cb0000,00000000,00cb5a50) ret=00a03c6a 0010:Ret ntdll.RtlFreeHeap() retval=00000001 ret=00a03c6a 0010:Call ntdll.RtlFreeHeap(00cb0000,00000000,00cb3338) ret=00a03c6a 0010:Ret ntdll.RtlFreeHeap() retval=00000001 ret=00a03c6a 0010:Call ntdll.RtlAllocateHeap(00cb0000,00000000,00000010) ret=00a0371b 0010:Ret ntdll.RtlAllocateHeap() retval=00cb0a90 ret=00a0371b .. 0010:Call KERNEL32.ExitProcess(ffffffff) ret=004026cb 0010:Call PE DLL (proc=0xa27e65,module=0xa00000 L"an2setup.dll",reason=PROCESS_DETACH,res=0x1) --- quote ---
CD Checks as usual.
1. verify if DriveType == CDROM (GetDriveTypeA() retval must be 0x5) 2. verify volume label using GetVolumeInformationA() - though I can only guess this because I dont see the code. Maybe other values too: serial number, filesystem type, flags... 3. check if free disk space == 0 using GetDiskSpaceFreeA(), must be 0 for CDROM
Attached is a little program which mimics the info gathering calls.
Please compile and run it on your CDROM drive letter (probably "e:\"). If no argument is given, the info is retrieved from "c:\".
Report back with the info gathered.
Regards