[prev in list] [next in list] [prev in thread] [next in thread] 

List:       wine-devel
Subject:    winspool: use printmonitors to manage the Ports
From:       Detlef Riekenberg <wine.dev () web ! de>
Date:       2006-07-28 13:17:05
Message-ID: 1154092625.17123.44.camel () p4 ! LAN
[Download RAW message or body]

Hi.

Printing in wine use gdi32.dll, gdi.exe, winspool.drv and wineps.drv as
Printer-Driver with CUPS/LPR as backend.

Many things are not correct (See: http://wiki.winehq.org/Printing ).

After some Patches, Wine is able to manage Printmonitors.

With the current work, a framework is added and wine start to use the
Printmonitors to manage the Printerports.
(Patch for wine-0.9.18, should also work for current HEAD)


I used various monitors for testing:
1: redmonnt.dll from RedMon 1.7
2: pdfcmnnt.dll from PDFCreator 0.9.2
3: localspl.dll from w2ksp4
4: a partial portmonitor for local Ports, added to winspool.drv

You can use a native printui.dll and play with the "Ports"-Page 
  wine rundll32.exe printui.dll,PrintUIEntry /s 


Some notes about the Patch.
- FAR is used in "ddk/winsplp.h", but this does not work with wine.
  I removed that Keyword, but it is still present in the w2k3ddk
  An alternative would be "#define FAR" and "#undef FAR" around
  '#include "ddk/winsplp.h"' in "dlls/winspool.drv/info.c".
  Another Idea?

- The Spooler-Configuration was still using the Path from the old
  config - File. (Software\Wine\Wine\Config\Spooler\<Portname>)
  Do we still need this? (A clean way is a seperate Portmonitor)

- native localspl.dll need a vailid Section [Ports] in "win.ini"
  to load. (I used "FILE:=" and "LPT1:=" as entries)

- Only Portmonitors, that use "InitializePrintMonitor" are supported.
  "InitializePrintMonitorUI" requires a "InitializePrintMonitor2" to
  be implemented, but this is a later step.

- AddPort/ConfigurePort/DeletePort in localspl.dll need support for
  "InitializePrintMonitor2" and all around XcvData.

- AddPort/ConfigurePort/DeletePort in the internal Portmonitor is not
  complete. (As Example, I simple reuse the "Save to File" - Dialog)

- The codebase for winspool.drv is really large (>240k) and I want to
  split the source. The correct way is creating "localspl.dll" for the
  local Portmonitor (as w2k and above) and another dll for the CUPS/LPR
  - Handling (and maybe Software\Wine\Wine\Config\Spooler\<Portname>).
  A different fast hack is simple a new sourcefile for "winspool.drv"
  for a CUPS/LPR-Monitor and a local Portmonitor.
  
- the internal Portmonitor uses the Registry, where the Ports - Section
  from "win.ini" is redirected by "IniFileMapping" on windows.

- The Ports for the used CUPS/LPR - Printers is a later issue, when
  wine starts to use the managed Ports.


Please try this Patch and point your Ideas and Hints here, so I can
split the code into a set of Patches that can go clean into the Tree.


Thanks to all for your Help


-- 
By By ...
      ... Detlef

["add_localmon.diff.gz" (add_localmon.diff.gz)]

Dadd_localmon.diff<kWȒ_!'A
7q	16xfgr|%$CZR ܳ[]]]~lFvw:1]7zF߽( \
Sr]\x6Nk޻ZTvwwA*KHv*G~E>(^\Ro.}ω0 \
цyt;Uv*~ë2ZwQhRП(óI<%UTHYі=$J \
^&pjL5M!)<w)پ"V9>kׇiyܸw:Ͷ%N^~ʄ}^oݳaIn#yO:vt|6ΈկZU0dFABX
 i_}}~ [DGd?@;w;>|"Dž|lݩ? \
QSQf#+ȱOn \
%ֺhuzDv8OHEz<%	B:!`跔0uC6ID	_f?	}DknB:u8	 \
%A)-tֶ}TX?Bc5n}&J3eJZRp+d;ir?׀7ÖM \
)W#CJ{I12s?/q^ѴAOo"Egt K \
+T!z'TQk%_8% '1%ۉ"	k \
j\{>t&s*G×~tX64yY \
z8\LNtXՓ^R{<`(/j#O>-f($O)y(hƼ];lg14 \
ԀuR鞸Qw!0#cx k?'3Jx	B_80\ \
͛^s0us)J	_K'&g3 jG݀s83A=}AU \
)&]mA+}Gz0s1,-"]5vK~x7	m'F*t8 \
С3ԃ\1Kc(hFG 5wBLUDLI\<e+i?bKU^I98t \
/0Vl'j|g1T	,z:FGSٱxҐW{0Y:^;O|,Cpg荒wtoۣj`kޕgjOOr(fU~T܈`m>Z:mGH \
ըfcvȜFitZXcbh2f:U}6WT쉩OEm NA] \
XL`Kx|j7c}bv	b oY_V+<0"E<$I`GI \
pP<>ޢ@oUN"|LD1AAP)ש Z=AJ. x`ﰥZ \
Ty-[LRŢTE򹁾E7_xqAcw"2GGH!u ƭyw\aT0I{eT=cS?S{̟J[ \
                ;R-P[@@(9T2	qBJ[$'c$)^1>vvQ]
!^*:NE;c`0jqT+dӶ[? @ʘzD5ǹZxTY \
,3C3zLicL׉Ò2@-t蟼FEEMRC6!.ExNN"N?T	b4D@A_AoEr%: \
xwƗh|za?]m!d- L3$!YӾ6[}aHF \
2^50TF츊c*ryAGs4-ndk CBpFfCusZ0 \
3Drf~)=Xe:JX iw0
xF s$)ZJk?)!9o5jP&
%q͍͟A4Q;`cwQ%5kRӻuBߛc%5U'\6 \
-zciMmM<p w`
1;|s`.*[qy{Vd2ScJsKC뢾EN^Vy9SߦӌӤ2Mѯ{Km\
 n_Q ,2?k$C
`,K9nL\"b
1Hǥ\<!1=4"\{f.M(M/<48x7ntĥa\+70a \
ڻ;JcEՒ8:Dt i	Bj̙a}9Q䚘 k \
%Yl#?SWDӟYD!)g~fT}x*į~f"9/sؼm1 \
U_NTyIAU4B~/[Q\Y^D%	a?Yj׵y^7sOW֌Mr[I@^$u \
f.*n-]jOK &
р/(FNLf?K~ 𑛖R2]-@	
II7+򙭡\Sb*n97
0K^dR Vn-g@^,I<pi-ٻs6EfM#-T%ՑP>e4LN^R-.ԬhbzI5-IރЗZaffp-^be6;$	3NsKN4]e؈)2zkDӘzy
  0=
MzM6j!r4u)+l)̑BCFi6e{9Ni%& \
N47'x1Mf4:+)URβ޸Yo\Aq~޴ jEJ~oB~$rw \
<RH^Lf9>=UЍc* Cj"B ti/ :[xlϓs \
'g˫FNbJLn?Z?nB>I߆r5`m&b  \
{Kَ@>ǥ/{2a+3.HB+CLo;?VvG[KcZX6. \
PdKWJ֯֙lЫږTZ35-ߓ[dӎ^6]ZΔ+"O6ˆ@Yj嶯F{#-R/3F+y\f$,> \
%/_BÙ΃řwKzS|KRgj&Dȇh֯uǗnJd \
j̻88n@ʔǫIwGͬi mϨGwouR4e<'fr.MBd \
FZ,rLj$i2]<aRڣF\V|#Y,fw鲪Xu?g; \
%210pN>,Q	 nXTdC'@3*9nwq%sӬ57dSUڈ4Cu \
qb*lx'_ʑm>Ю$`z!%TETAf9h~RPvD`^[CԢ?G7XϤ_䙂.ȉ)˝ \
@>@st~8>3;˧k$Rj5YL(W'l$[@@vAܶaZ3(@ \
VVi߬ <eH9\fmd= \
D?ykRĵ䥵b+D݈~y`".gLw3S"OȌ!eM5zr3PPh2FakY֓tGw \
T/],E`3jZh 3I\d@ aYYIՆ̍Cg̃$yj'je2jsJ\H,
&~4/'=lOέ\REǼJ*[Zc<G
2
ߛ9_!ݬߪ`nSd:ͣPdOAt+Bk4	Ff/J{'bbnt+2{Y@
&2͕zc	bv2=pmc+dZ'U1ŪiXYO \
̟y:\gWWщ^ͦg׫*סV֭ظudxrvev/bŁ3:rv}Qʈڕ?a \
ƭ<7JG(䆆4,3݄d-ǒY	<ovJ9Ϗ#PéMa8nSܒ!^qz(9՟;cr1xiBqeNME>Z9)؛,ql/s_ \
lY$Ǜrn,Ӯg3,5jÖ̳8cgd'Z`OZJj+l2o-U? \
.뿍ꃋ/B2*o.x̲̳LϺQ`o2!՚<䯶N]q0'?pm'bx7N}wifeMd;`|:Q
 RI} {e[7SEGlH#HY1qc8fL
y{mR9Df udDHFJ
hlCerj6}8p &f'a81 \
z=nvN?%Ɋj5?Hl,٣ˡZJoXsvC.pVLSje/kB#) \
m7`;%wꧡK$6J8$ӇO1Dan{ƉTmnJf`_ \
'+^RbJň$4̻Nx~j|OˏM>YV&ZDa!:3TbYX| \
g!/r)b_$D1M3)?P#7ewIJC]`eY>v]Msu? \
!`dxL\5@0-ņ!(H7S5NLfjNsG#q<f$x[XfSri \
;5eqQ\fNNWXfG	(fZwġK>8<%E"QSӼY*HDÂjTkCFR#o\-|@	( \
@7W"Y`X$5Dr)3ֽKjU*G;i*,S&R` \
ͧT̯YKH#_!aOCe.afʝ3'b)%t+bo*o"1^멮jqg~aݶ:<4D \
 uL.a(YNU8wjw%}#h*bTSeu0ݦDQ \
L2~<|wP[J<}2Rwʫj	GE8xH+63|\"bl~HX,=~O?gJ6B:ѮXpR
 C(70185',W*7\VUԝl]NTO)IF{L٘jpv:uVQ܌<v'{f0xEPgo<G)L \
~k^E.	2,Clyuyn^B \
<([:24W0{]w,I`8OF-(X4Vo[$J.A7x(_~r޿;GM \
7j\+~oF	Tzܱ	e}X^.îI19dBHkIFi&,4`	r	c-[c֫*) \
ݬ-&zGh1kbk䯫f6t~/Jp2!}0Y-lNggc7[me+bђ-vfo<:л"]ysISX:YVBzOlA \
	# WueUW7 B#",LwݕY[/լv_]`MLt=ݵ|ߞُUnpisur7[)(^؛Yд^/v^X';,]^۴{N0#cb;+Tw>IN(i\ \
?:d	iB1:D6RY0GN}v@#Z0ܣ/th	Yͥ+$ж	Ii΋a9:.и2|h~;3uΚ{\8W
 wu$uC1V7b,oNb&#$?ɵĝ;U.
g[Z|h($C+	-UpW/7!^2;uz_oWX@6zDܙP(OO^PJ{`\B\3޸&{$h]!4Z8>8`)jTmx͜ \
~$w?H Hĺߎ򕌴^g'&.J \
2#l|E@}v*5'8LUӑ=~sW6MMg)o#109{pXh@ \
җ"ciרz&F#7d7Cۣ㽦JYA-twjG"݌xB}	O(UbrD>NtF)Z鶿W6YC|v
 `U$`׊%|Rɲ&z!_fΆm0߿V
1GJP/X>DZc
`G2ZAs9
pPwP_ '`JP%*4GIF	=Gs EX[fR'LQFdNAf
.[&%%hwCZGsa^y.B?
oU0"6r=
 _BY nCV!\|qsGd~<b%.]lwiC,	
(*
B C!KGjnfX8^XQih z%X_!~pꇄx 8jZE>5DHT
4"ax/#gs]OI4lq7;!K%d6X؞jiyqVy1;xG8@`Aq0xt▶.QlMa	OV7&t&Q1
 % A;xە溛g0D=*!11!*F,rG\4"Yk&"H|{!<;a1'\ \
"kymDt%vEv3hpD?6VIJٱp#Ĵ>Bfyc= x \
4\W|ڌKplZ idU+#"|En`@sQ \
fab)&!x'XT{쥽J>JqV]+њMjIk?W_):0^	
 mA:j ȥ)g<'掕2&ug<zYr{ME079ҥ|	MՅ<6 \
z3{:d93ne1=UPĖlYRѦgm%49ei9(}9fwIg;k0ArKYRE?nmgʏRݶ4w"]
 )J6nH}s6fs|f9:Do-ۆad.ཹ4늻wk> 
JT5rf(%sh1J!&n_քTtݴ0!|ڻ+l	I?`>Um)cZH8Q \
%l -oRW彽^!W8\,ɦw7|3}_@ZI |`I \
߯=HFƈM}(uͽqHc`?po;4#2k7ؒvzGqGi \
IE!e8(o,V \
9眻%DÝI\3gʹ(˖Bb)[<+V>s>.qwI2wĤqXg'j<Ҥzs  \
8vJkAFS0#qv7:TkdW*眂nZ4-^K#n\	 \
"bvED!Rv69>aZYJ"b	(0'|0_΁muz:В? \
ւ_]{]A4ɔ(Eq\Nķ^Dl6:8@:`/IժCp%+0iac`ǻGR \
Y9t

Pbnm "oe;`jD7{M._qR,ޱrB+@eRmt<6F#F!zҪ~ȋ \
[rqaLP4kN	6ENl3rqM8<ZPdJa+wd&1MpV2A@i<J~~?}3^EFJ(
 ;[2)R`'Z'5BNM8&\yg23*Jש%i[5V%MIhuucAs
Ԛp`#.{r 2cÙc_
G8	u-|Bd	A}-ڒ&.\3 \
'cd#/F1ꋁzQIpPha_r7i8Wi3Ŕ,xbfp$@\qbn?w߾&Vh[ \
}ՙ0zRm3hY#m27D)H]SW^Ufjclʍ!kҕ&gf8WŌټ \
>Vf2duj$`G<s7V<:hZ(x^xԛF0h`H[;HTjwqz͈\`9PpLb3zZn*C5zb6d_It
> 
`OHգ*)/;rytp^&$gL{Y3)`D ,oC}aq`0& \
x%onS܉ _Z0!ͼ0ashfW66 [,Y[K>D/g?:B& \
=_9pP@R4ppڶlO6Ԁwlmf}ݟdbӑƨ* \
-*-A<f\~QmxrbH<qu}8έF+<$ox6,v \
qiE]@LekAKc_.1 \
:=cn)lz<JaYߏ.ay&?]KLEU~]$zxU:~xq \
2Ӥ>6+ژ?>1vfJ	FdrRo^Xߎa~^n]@u8)U6ӏ?<I6Ttr#9"=XPK=2򢍎BX
 94>o $ɘ	PW	r%No^ R|zZdbz_ \
ʌAr2hGF^9T!8F?AMIĉ~yd,4	`hKZ	ӑ@p
 N?2PQjV @H8MFaN Sx_ \
Zh,0wv]W5	ʁR3"iٜs^yM;e2:!72W"q:5S(,XY߫`|4׽C9ק`> \
S|+5krVxSF򾝌1LB-J \
z(L@yҒT&vH^^I08=hL+pwn9!=SIng}ZOs;9x;bmz1ޜ0LJYrV쫱ͧV"4~aY[ \
i}p9JiXȎXdT/NRShfBϢȁş`^Z۫m8MQ:4
 ;+o 4d'xL}NǶRprVX[wTۙťR|ɧҢ8?LG?`ZM`5G\cZm)<
 B٣O[M]ڋM[O-o5߬lmkUi6 7i0
{="]PKήgĂ̡6*Ͱ>]].7YQ<:,wjrhR~^ᛲXow:W{-7
 K խ5|u+S}-q
V5|uVJ]	kl+^dy-;
L~2\w_qV55s^B˰x \
؏\U,qq9!Xk[kqͅ8`1NUO>١G-7?/eŸ(u! \
,І=R~0+:ׄ(R@rWASoUaɑS@MGbI:UAlÉ-JZRaz}}g'b
 )P<0)@uNYW)O~0kwR7vXJ=#s>?&다>A}{I0)C \
>c2Ҍ8WPO]Ww8VʝR9f_&2bS]FG\bF+&q~d53>0.E4', \
> )[8.yGO[\㐨c*|@6DDYJXG;>ʶ{xfv7ɺMhF$~2+O	yDlT>PJ \
> \
= Iۚ81o*y|K:tT/)TspJb%k(+(yT{lkfJ!ѾԈV.d,=dZZ,Kty֒DzL5\K
 ?9ZC-};KFVd>.~1KUqAXNT9j⽯*tLvB7/lNps(UP3W1Pw5-} \
4Z4moPg,sxrZxI0Z_Ռ2ZA0y_s(kx{rV_=i42'ɤCQ
 H00T&mB&孁Er(isŏm/{ytnQV-uZ13N#z=VA/ҪE;%:[{&^$6$lQdpc>}I2πD
 pxaVy#@n8@27_cNo^!9>:8?>maK~Ţ!#)JپT[hdfqM鿴Jkv<Ǽ
 :g4x2 ec<zyB^mT99-o	.;s5$9دlY7eO^ \
P'p2R]H"փZmV*õ`*JXYJ>]luO筓Sw \
7&/3u2w2;ѤtsRM:4V{S41L_=1}k0l!8|4cl>PDv{4dAj2"
 N 0L[Qxyjmy#0MLD*$=MX}Rf7NONw8 \
/9?CE/љ/Rnes ȜԌs+W<Zn \
Irqhm[ΉA>0b\t6dTeO!>.eUG2M!@G-30;W˅ \
8eXқƯfcHN9 \
Pޛ0*"2;Zf=+YP$8@ag%Ts<e2lA+W+>k+lˆw#q˰J0F3)Hל="L7'.y
 2k㐳Hr2|`KCy$
3j*_ZuPmRJ8S<Zh/)|~:aйî-Ik"+6J#<)[Gv5Λ{-<aך}vI{)9FUUǣG:j"H6-@;dԖ׬ؾ6\}:a6&{#	y?ܶj:ÖA \
>:E&LN<hs$UY=ޛwwF	q \
> 4&kά9`ok9=&?_Q%^I8T<eB#seg}KR5;e̴W~>a*_p^r+Q;&m< \
> 6<)'^VRxu#]0y7ޛ3N;;5@xvNBh+ɝ*M{s,9x \
> V]{vf*?,Sr6WU0S܎ޘVD |xwΪ)l.
EAs0_oNCXHKT=$e
A&
_:ɀFxi4~ UƯpɤۜQ:~;d1O~ w* ƍ#OÖХ <~ \
O>>{27O?V3A5 \
Bʛfe-xƔΞanHFrYfvTӺ%V-]'hhՔo~} \
&~Ӎwo'{0\ _XڋY1L0jy 6j[/]Y G \
EI;i'FZWzJ9f3߇> (I \
WӆzꞦMegGߋjBAdqSCtX^nmW߄ xʍ
q7HC|&]=gڻ)\23HAX	)gEw򎼫~yG!m<^RYT-=je]'>.fRl&5IBL>
 %3vA@E蓣e{fuvMSB?YM&"I8ȼwh YU5>m]D3 \
[;1C01W<(q!I ^:?5 !5VCiCc@
w"gtLP(D0V4F҆K_ONI܌FS)I4b$LwVt`TW2JAwðK	9bvav|*qp4CK'~Z,HI
 c4	>TdqJ_ \7e
@~@
b= eMicOꟶV6q_҆
ENG  >daۤ37nusaF\+R۳WT08|ک% \
E,[*/OZ%)ƝEEaZ4RHLَ[8Kxx>McLJ]'M{G3w3Զ
 
W67ZN-8<;<['UF9vQf(Z*'9&;b2@!X=eaьШ|BPQ3vky5\{5r_a~lMnznS\>" \
 NL|Z՜}:oL]k+|^opşLa\:mbjo@(G	P(%TXnJFm$J8\hJp08 \
bp'&gP' I .(>-B3V[{KKCMMcKN.l \
 N,?*}}.֮]ۥRwm	m'Q \
0?(31Ғj`-3+VIw"[Fb˛ygOD|+qj*D8啽7ܑ#̙%ܾn \
h=9B~t"f>wxyЉ!oކ$$IMDEj訲YB_JRH_Gj1</
 lCo}y^㼁!)O`7\0Sy<5adOu4ZJG	#Ƈ \
dR?].`$@Gik#/4C!rN%?_e"<Q|qhy$GFӴ*df%>Lʂw=> \
}KS\%2BFk<&E|Ӗ(hn3lPڹAidOUWev	avȔ'˯|Y3$hH \
T0E>'Ѱ!5y1Idp	U*_\ċ"*Yؾ޽63G!Dy> \
~7K7'6p#3H)>QH \
0A@M>;S?df)B[*R(Hȸ.2]fT"Lȫhݓj(TOۛjT \
*[[kzBٺ	y!j5DONjzBޯR \
Uȯ?ZG7V"+S!j˒j-e68)">oOi@}6_?4:	}V_NK.nbʧ#<:






[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic