http://bugs.winehq.org/show_bug.cgi?id=14827
--- Comment #14 from max@veneto.com 2009-04-20 08:28:15 --- (In reply to comment #13)
You're doing fine, what's missing is more understanding of COM arcana, I'm afraid.
Try the tip in http://appdb.winehq.org/objectManager.php?sClass=version&iId=5658 That app also had the "ME_StreamOutFlush Invalid returned written size" error, and somebody found a workaround, at least for that app: "Everything works, (!) but only if you install the packaged libraries, into windows/system/ of wine: COMCAT.DLL -> register with "wine regsvr32 PATH2DLL/COMCAT.DLL" OLEAUT32.DLL -> -"- OLEPRO32.DLL -> -"- STDOLE2.TLB -> no need to register Furthermore you have to activate these native libraries via winecfg. "
Thanx for the link. I looked at it, but the behaviour is different.... This app don't set the *pcb field when returning from callback, leaving so the original value (0xDEADBEEF, nice default, indeed, even if 0xDEADC0DE would have been more appropriate :-) ). In autocad, the app DOES set it, but with a somehow bigger value than what requested.... So, I guess the callback do indeed read more bytes than necessary. The strange stuff is that the callback should be (I think....) inside autocad code.... Because of that I'd need to know where exactly the app hangs. Debugging OLE without knowing its internals would be a nightmare, I guess.
Ciao
Max