OUTB() and friends on Win32 and .sys files

Uwe Bonnes bon at elektron.ikp.physik.tu-darmstadt.de
Tue Feb 5 13:12:17 CST 2008


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
=>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?


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