OUTB() and friends on Win32 and .sys files(Resent)

Uwe Bonnes bon at elektron.ikp.physik.tu-darmstadt.de
Thu Feb 14 06:55:45 CST 2008


Hallo,

some programm with source uses giveio.sys to access the parallel port. You
can find the source for giveio.sys e.g. in the avrdude package.  We
have code in dlls/winedos/ppdev.c to emulate the directed access on the
parallel port to accesses to /dev/ppdev. 

However this code is not called for WIN32 code. So after starting giveio
with loaddrv.exe supplied with giveio
> wine loaddrv.exe start giveio
starting giveio... ok.
> wine javr.exe
crashes when the outb access happens:
javr [<filename>] [-p<port>] [-f<fusefilename>] [-e<eepromfilename>] [-L] [-V]
Allocated flash buffer of 128K
Using giveio.sys to gain port access to 0x378
trace:seh:raise_exception code=c0000096 flags=0 addr=0x4014b6
trace:seh:raise_exception  eax=00000000 ebx=00000000 ecx=00000378 edx=00000378 esi=00000378 edi=00110388
trace:seh:raise_exception  ebp=0072fe50 esp=0072fe50 cs=0073 ds=007b es=007b fs=0033 gs=003b flags=00010246
trace:seh:call_stack_handlers calling handler at 0x7eddc5bc code=c0000096 flags=0
trace:seh:MSVCRT_signal (4, (nil))
wine: Unhandled privileged instruction at address 0x4014b6 (thread 0011), starting debugger...
trace:seh:start_debugger Starting debugger "winedbg --auto 16 56"
trace:seh:call_stack_handlers handler at 0x7eddc5bc returned 1
Unhandled exception: privileged instruction in 32-bit code (0x004014b6).
Register dump:
 CS:0073 SS:007b DS:007b ES:007b FS:0033 GS:003b
 EIP:004014b6 ESP:0072fe50 EBP:0072fe50 EFLAGS:00010246(   - 00      -RIZP1)
 EAX:00000000 EBX:00000000 ECX:00000378 EDX:00000378
 ESI:00000378 EDI:00110388
Stack dump:
0x0072fe50:  0072fe58 0040151a 0072fe88 00406ccf
0x0072fe60:  00000378 00000000 00000000 00403411
0x0072fe70:  00000001 00110388 0072fe88 0040a3ef
0x0072fe80:  0040a3ef 00000001 0072fec8 004025e4
0x0072fe90:  00000378 00000378 00110048 0040255c
0x0072fea0:  7ed5ff48 7ffdf000 0072fec8 7ed30f5c
Backtrace:
=>1 0x004014b6 outb+0x6(value=0x0, port=0x378) [/spare/bon/jtagprog/win/javr-2.8/ppiwin.c:311] in javr (0x0072fe50)

MS msvcrt.dll also supplies outb().

What is the policy to handle outb() and friends?

Thanks

-- 
Uwe Bonnes                bon at elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------



More information about the wine-devel mailing list