Just noticed that the message I replied to wasn't sent to wine-devel
originally, so here it is, hopefully someone else has a really good idea!

-Dave


Hi David,

I seem to be at my wits end, so maybe you have a bright idea....

I am using Wine 20000614, compiled from sources, on a Redhat 6.1 system
with a 2.4test2 kernel. Works OK, I can run Solitaire.

The whole point of the exercise, however, is to access my digital camera
under Wine. It's a Polaroid PDC-2000, which comes with a SCSI2 interface.
I have it plugged into an old BusLogic controller, which dutifully 
recognizes it and puts it at /dev/sg0 and /dev/sga. When I go and run
the find-scanner tool from the SANE packet, it finds the camera (which
for some reason claims to be a scanner), so the kernel/driver part seems
OK.

Now I go and start the camera's software under Wine --- and it tells me
that it didn't find the camera, and do I want to try again? If I say yes
to that, *then* the line

     fixme:aspi:SendASPI32Command ASPI: Partially implemented SC_HA_INQUIRY 
            for adapter 0.

shows up 12 times, and the software informs me that "a SCSI card was found,
but no device". If I run Wine with -debugmsg +aspi, before those 12 lines
I get 

   trace:aspi:SCSI_printprocentry Host: scsi0 Channel: 00 Id: 04 Lun: 00
   trace:aspi:SCSI_printprocentry   Vendor: POLAROID Model: ESC              
           Rev: 1.00
   trace:aspi:SCSI_printprocentry   Type:   Scanner                          
           ANSI SCSI revision: 02

so the /proc scanning code found the device alright.

Now, the odd part is that that's *all* the trace output the ASPI module
ever provides. Even odder, it doesn't appear as if Wine ever touches
the scsi device --- strace shows no access to any /dev/sg* device file,
and the host adaptor stats (counting attempted and completed data transfers)
also don't change at all. For all practical purposes, it looks as if wine
is unaware of any SCSI devices....

The software uses a DLL to access the SCSI system; That one is called
PLSCSI32.DLL, and Wine has the following to say about it:

   trace:win32:dump_exports Module name is PLSCSI32.dll, 10 functions, 10 names
      2 000014e0 0x406014e0  scsiInitialize
      3 00001620 0x40601620  scsiCommand
      4 00001600 0x40601600  scsiClose
      5 00001b40 0x40601b40  scsiGetVersion
      6 00001a10 0x40601a10  scsiGetDeviceInfo
      7 000021c0 0x406021c0  scsiGetLastError
      8 00001b10 0x40601b10  scsiGetAdapterInfo
      9 00001850 0x40601850  scsiGetDeviceList
     10 000019f0 0x406019f0  scsiFreeDeviceList
     11 00001f30 0x40601f30  scsiGetErrorStr

Very soon after that, it tries to call scsiInitialize and triggers the
printprocentry output (BTW: ignore the h01 part --- when I created this
log file, I also had IDE SCSI emulation enabled, so the BusLogic was host
number 1. I have since disabled it, with no apparent change to Wine):

   CALL plscsi32.0: scsiInitialize(<unknown, check return>trace:heap:HeapAlloc 
(40400000,00000002,00000040): returning 4043ea8c
   trace:reg:RegCreateKeyExA 
(0x80000006,"WineScsi",0,(null),1,f003f,(nil),0x409e68f4,0x409e68f8)
   0805f3f0: create_key( parent=-2147483642, access=000f003f, options=00000001, 
modif=962989417, name=L"WineScsi", class=L"" )
   Create key DYNDATA\\WineScsi
   Set key DYNDATA\\WineScsi value "h01c00t04d00"="/dev/sga"
   trace:aspi:SCSI_printprocentry Host: scsi1 Channel: 00 Id: 04 Lun: 00
   trace:aspi:SCSI_printprocentry   Vendor: POLAROID Model: ESC              Rev: 1.00
   trace:aspi:SCSI_printprocentry   Type:   Scanner                          ANSI SCSI 
revision: 02
   Set key DYNDATA\\WineScsi value @=dword:00000002
   RET  plscsi32.0: scsiInitialize(409e6c10,00400000) retval = 00002712 ret=0043aa0d 
fs=008f
   CALL plscsi32.0: scsiInitialize(409e6c10,00400000) ret=0043aa29 fs=008f
   RET  plscsi32.0: scsiInitialize() retval = 00002712 ret=0043aa29 fs=008f
   CALL plscsi32.0: scsiInitialize(409e6c10,00400000) ret=0043aa29 fs=008f
   RET  plscsi32.0: scsiInitialize() retval = 00002712 ret=0043aa29 fs=008f
   CALL plscsi32.0: scsiInitialize(409e6c10,00400000) ret=0043aa29 fs=008f
   RET  plscsi32.0: scsiInitialize() retval = 00002712 ret=0043aa29 fs=008f
   CALL plscsi32.0: scsiInitialize(409e6c10,00400000) ret=0043aa0d fs=008f
   RET  plscsi32.0: scsiInitialize() retval = 00002712 ret=0043aa0d fs=008f
   CALL plscsi32.0: scsiInitialize(409e6c10,00400000) ret=0043aa29 fs=008f
   RET  plscsi32.0: scsiInitialize() retval = 00002712 ret=0043aa29 fs=008f
   CALL plscsi32.0: scsiInitialize(409e6c10,00400000) ret=0043aa29 fs=008f
   RET  plscsi32.0: scsiInitialize() retval = 00002712 ret=0043aa29 fs=008f
   CALL plscsi32.0: scsiInitialize(409e6c10,00400000) ret=0043aa29 fs=008f
   RET  plscsi32.0: scsiInitialize() retval = 00002712 ret=0043aa29 fs=008f
   CALL plscsi32.0: scsiInitialize(409e6c10,00400000) ret=0043aa0d fs=008f
   RET  plscsi32.0: scsiInitialize() retval = 00002712 ret=0043aa0d fs=008f
   CALL plscsi32.0: scsiInitialize(409e6c10,00400000) ret=0043aa29 fs=008f
   RET  plscsi32.0: scsiInitialize() retval = 00002712 ret=0043aa29 fs=008f
   CALL plscsi32.0: scsiInitialize(409e6c10,00400000) ret=0043aa29 fs=008f
   RET  plscsi32.0: scsiInitialize() retval = 00002712 ret=0043aa29 fs=008f
   CALL plscsi32.0: scsiInitialize(409e6c10,00400000) ret=0043aa29 fs=008f
   RET  plscsi32.0: scsiInitialize() retval = 00002712 ret=0043aa29 fs=008f

and then it decides that it couldn't find a device, and outputs the text
about "A scsi card was found, but no device".

It appears that the software is unhappy with what it gets back from
SC_HA_INQUIRY, and tries over and over again, until it finally gives up,
without ever trying to ask for devices.

I don't know what to look at next.... Any ideas?

Thanks in advance,

   Bernie





Reply via email to