[Bug 21987] Acrobat 7 tryout installer complains: "This Postscript Driver or Windows Platform (Win9x/Me) not supported" (winspool.drv missing level 8/global default printer settings handling)

wine-bugs at winehq.org wine-bugs at winehq.org
Sun May 6 07:05:21 CDT 2012


http://bugs.winehq.org/show_bug.cgi?id=21987

--- Comment #5 from Anastasius Focht <focht at gmx.net> 2012-05-06 07:05:21 CDT ---
Hello,

after commit:
http://source.winehq.org/git/wine.git/commitdiff/0cf0c28d168ffdb084b6a28386cfe6b667b755dd
the installer still shows the message.

--- snip ---
0015:Call
winspool.drv.GetPrinterA(00000001,00000008,00d955d0,000000e8,019ee84c)
ret=004d562a
...
0015:trace:winspool:GetPrinterW (0x1,8,0xd956c0,232,0x19ee84c)
0015:Call advapi32.RegCreateKeyW(80000002,f7218880
L"System\\CurrentControlSet\\Control\\Print\\Printers",019ee438) ret=f71ff906
...
0015:trace:winspool:GetPrinterW returning 1 needed = 232
0015:trace:winspool:convert_printerinfo_W_to_A (0xd955d0, 0xd956c0, 8, 232, 1)
0015:trace:winspool:convert_printerinfo_W_to_A (8) #0
...
0015:Call KERNEL32.WideCharToMultiByte(00000000,00000000,00d956c4 L"Adobe
PDF",ffffffff,00d957b0,00000020,00000000,00000000) ret=f71fd6b2
0015:Ret  KERNEL32.WideCharToMultiByte() retval=0000000a ret=f71fd6b2
...
0015:Ret  winspool.drv.GetPrinterA() retval=00000001 ret=004d562a
...
0015:Call user32.MessageBoxA(00000000,004d9e60 "This Postscript Driver or
Windows Platform (Win9x/Me) not supported",004d9ea4 "Setup Devmode",00000010)
ret=004d5778 
--- snip ---

Debugging that custom action "SetupDeviceMode" reveals it expects private
driver data to be returned.

Annotated code snippet from custom action dll (SetupDeviceMode ->
CustomizeDevMode):

--- snip ---
...
.text:004D55F3  cmp     [ebp+var_40], ebx
.text:004D55F6  lea     eax, [ebp+pcbNeeded]
.text:004D55F9  push    eax             ; pcbNeeded
.text:004D55FA  push    ebx             ; cbBuf
.text:004D55FB  push    ebx             ; pPrinter
.text:004D55FC  jnz     short loc_4D562E
.text:004D55FE  push    8               ; Level
.text:004D5600  push    [ebp+hPrinter]  ; hPrinter
.text:004D5603  call    GetPrinterA     ; get required buffer size
.text:004D5608  push    [ebp+pcbNeeded] ; dwBytes
.text:004D560B  push    40h             ; uFlags
.text:004D560D  call    ds:GlobalAlloc
.text:004D5613  mov     edi, eax
.text:004D5615  lea     eax, [ebp+pcbNeeded]
.text:004D5618  push    eax             ; pcbNeeded
.text:004D5619  mov     [ebp+pPrinter], edi
.text:004D561C  push    [ebp+pcbNeeded] ; cbBuf
.text:004D561F  push    edi             ; pPrinter
.text:004D5620  push    8               ; Level
.text:004D5622  push    [ebp+hPrinter]  ; hPrinter
.text:004D5625  call    GetPrinterA     ; get level 8 data
.text:004D562A  mov     eax, [edi]
.text:004D562C  jmp     short loc_4D565D
...
.text:004D565D  movzx   edi, word ptr [eax+24h]  ; dmSize
.text:004D5661  add     edi, eax                 ; offset to private area
.text:004D5663  cmp     word ptr [eax+22h], 500h ; dmDriverVersion > 0x500
.text:004D5669  mov     [ebp+pDevModeInput], eax
.text:004D566C  jbe     _error_driver_os_unsupp
.text:004D5672  cmp     edi, ebx
.text:004D5674  jz      _error_driver_os_unsupp
.text:004D567A  cmp     word ptr [edi+96h], 10h  ; priv_area+0x96 ??
.text:004D5682  jnz     _error_driver_os_unsupp
.text:004D5688  cmp     dword ptr [edi], 'VIRP'  ; priv_area+0: 'PRIV'
.text:004D568E  jnz     _error_driver_os_unsupp 
--- snip ---

For the "dmDriverVersion" field it expects > 0x500.
Next problems are fields in private driver data area.
Apparently this isn't handled in registry yet.

There are a couple of FIXME's related to winspool, some of them seem harmless
and some might contribute to failures.

--- snip ---
0015:Call winspool.drv.SetPrinterA(00000001,00000002,00d955d0,00000000)
ret=004d5407 
...
0015:trace:winspool:SetPrinterW (0x1, 2, 0xd957b8, 0) 
...
0015:fixme:winspool:SetPrinterW Unimplemented level 2 
...
0015:Ret  winspool.drv.SetPrinterA() retval=00000000 ret=004d5407 
...
--- snip ---

Regards

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list