http://bugs.winehq.org/show_bug.cgi?id=9484
--- Comment #60 from Anastasius Focht focht@gmx.net 2011-07-03 15:05:38 CDT --- Hello,
good work so far ... if you get the "kernel" debug register emulation patch committed in GIT the easy part is done.
--- snip --- fixme:ntoskrnl:IoGetDeviceObjectPointer stub: L"\DosDevices\D:" --- snip ---
That's where the hard part begins. Wine needs to support/implement layered driver infrastructure because this driver depends on it.
Judging from the list Austin Lund posted in comment #59 the sequence for this driver would be:
(1) get target device object (topmost attached device in stack) -> IoGetDeviceObjectPointer (\DosDevices\D: or more general \DosDevices\CdRom0) (2) get attached device -> IoGetAttachedDevice (target device object from (1) ) (3) build IRP for device -> IoBuildSynchronousFsdRequest (for attached device) (4) call the lower layer driver -> IoCallDriver (IRP) (5) wait for IRP to be completed (needs KeWaitForXXX with kevent) (6) profit!
That's simplified but should be basically what the driver expects.
You need an extra "disk" driver which "houses" the device objects and processes ioctls (not mountmgr).
You could join forces with people trying to get USB stack into Wine ;-)
---
Some hints to improve trace log generation...
Disable automatic ProtectDisc kernel driver start -> set to manual start (so it gets started by app):
--- snip --- $ wine reg add "HKLM\System\CurrentControlSet\Services\ACEDRV05" /v Start /t REG_DWORD /d 3 /f --- snip ---
When doing app start with tracing:
-> disable winemenubuilder -> use "append" mode
--- snip --- $ WINEDLLOVERRIDES="winemenubuilder.exe=d" WINEDEBUG=+tid,+seh,+relay,+ntoskrnl wine ./Mathetrainer.exe >>log.txt 2>&1 --- snip ---
This should get you smaller and better readable logs ;-)
Regards