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