Merici pristroje k PC.

Delphin delphin@post.cz
Čtvrtek Leden 10 23:45:50 CET 2008


> > Ne, není to omyl. Az do WME se na porty chodí prímo a nemusí se nic
> > resit,
> > nepotrebujete zádné .DLL ani .SYS ani API. Od W2K je prístup z
> > aplikací na
> > porty zrusen a aplikace nemá zádnou moznost si to sama povolit. Ze to
> > presto
> > funguje je práve dílo toho ovladace .SYS, který to naborí, to .DLL je
> > jenom
> > tresnicka.

> Az do WME sa "nechodi" priamo na porty. Aj tam boli ovladace (vxd),

Souhlas, jasne za tam byly take ovladace, ale muj prispevek se tykal primeho 
pristup na LPT z aplikace.

> Od WinNT (nie az W2k) nie su ovladace vxd, ale sys a pristup k I/O je
> priamo z aplikacie zakazany. Musi sa ist cez tie ovladace. Neformuloval
> by som to tak, ze sys nieco nabori - on je na obsluhu HW urceny. A

Ovladac pro povoleni primeho pristup na LPT port z aplikace nedela nic 
jineho, nez ze nabori zabezpeceni aplikace, presneji modifikuje IOPM 
procesu.
Jiste ze spravne by se to melo delat tak, ze aplikace by mela komunikovat s 
ovladacem a pristupovat k hw by mel az ovladac, ale jednak se s tim asi 
nikomu nechtelo otravovat a hlavne by to starsim aplikacim bylo k nicemu.

> znamych napr. giveio.sys, UserPort.sys, apod. Ak port.dll umoznuje
> aplikacii pristup k portom (COM, LPT), tak potom je v nej kod
> pouzivajuci WinAPI.

Pro vylouceni zmatku jsem si port.dll nechal dissasemblovat a myslim si, ze 
se tim vse vyjasnilo:
0x8148  - 0xc INPORT(dword param_1)
 0x0000    PUSH                EBP
 0x0001    MOV                 EBP,ESP
 0x0003    MOV                 DX,SS:[EBP+8]
 0x0007    IN                  AL,DX
 0x0008    POP                 EBP
 0x0009    RETN                0x0004

0x8154  - 0xf OUTPORT(dword param_1, dword param_2)
 0x0000    PUSH                EBP
 0x0001    MOV                 EBP,ESP
 0x0003    MOV                 AL,SS:[EBP+12]
 0x0006    MOV                 DX,SS:[EBP+8]
 0x000a    OUT                 DX,AL
 0x000b    POP                 EBP
 0x000c    RETN                0x0008

> No a na zaver by som dodal, ze ani nie vsetko, co je pre komunikaciu s
> COM portami napisane vo Win32API a odladene na W95/98/NT, nemusi na
> WinNT fungovat. Napr. pod nie-NT platformou nepouzitie OVERLAPPED
> pristupu k COMx nesposobilo "zamrzanie" ostatnych I/O pristupov
> aplikacie, kym na NT platforme ano. Multithreadove programy pre NT teda
> musia pouzivat OVERLAPPED pristup. Kedze OVERLAPPED pristup sa mohol
> pouzivat aj na nie-NT platforme, spatne kompatibilne to je.

S WinNT jsem nemel tu cest, ale na W2K aWXP funguje neoverlapped i 
overlapped paralelne z 5-ti COMu, vyzkouseno. 




Další informace o konferenci Hw-list