Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Portovi

[es] :: C/C++ programiranje :: Portovi

[ Pregleda: 3068 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Beban
Beograd

Član broj: 6351
Poruke: 39
*.ptt.yu



Profil

icon Portovi08.05.2003. u 23:29 - pre 255 meseci
Da li neko zna zassto program puca kada se koriste standardne funkcije _inp() i _outp() definisane u conio.h ?
One bi trebalo da ccitaju i ssalju podatke na portove.

Koristim Visual Studio .NET i u dokumentaciji pisse da su to funkcije za konzolne aplikacije. Medjutim, program puca i kada se koriste u konzoli.

Postoji li neka alternativa ovim funkcijama ili neka kvalitetna freeware biblioteka na Internetu?

Isprobao sam IO.dll sa Interneta, ali prilikom korissccenja nekih od njegovih funkcija - program puca. Prilikom korissccenja nekih drugih sve je normalno...

Hvala.
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.beograd-3.tehnicom.net

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: Portovi09.05.2003. u 13:59 - pre 255 meseci
Svaki Windows zasnovan na NT koristi i zaštitu („protected mode“) koju obezbeđuje procesor. Zato, bolje reci koje portove koristiš (neke možda dozvoljava, kao što su za LPT port, i slično), i konkretno kako ih koristiš.

Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

Voodoo
Novi Beograd

Član broj: 3508
Poruke: 488
*.sr.gov.yu



+1 Profil

icon Re: Portovi09.05.2003. u 22:44 - pre 255 meseci
koliko ja znam, windows ne dozvoljava direktan pristup hardveru... to što ti možeš da šutneš nešto na LPT štampač obavlja se preko win drajvera... a od slanja na portove nema ništa, to može samo pod DOSom...
 
Odgovor na temu

Voodoo
Novi Beograd

Član broj: 3508
Poruke: 488
*.sr.gov.yu



+1 Profil

icon Re: Portovi09.05.2003. u 22:47 - pre 255 meseci
Citat:
tOwk:
Svaki Windows zasnovan na NT koristi i zaštitu („protected mode“) koju obezbeđuje procesor.


uz dužno poštovanje, da li znaš šta si uopšte napisao? windows koristi zaštitu pod imenom protected mod? Protected mod je režim procesora kada svaki program dobija svoj adresni prostor bez upadanja drugih programa, tako da to nema veze sa portovima. Dalje, WinNT radi u virtual modu. Ako te nisam razumeo, onda izvini...
 
Odgovor na temu

Beban
Beograd

Član broj: 6351
Poruke: 39
*.ptt.yu



Profil

icon Re: Portovi10.05.2003. u 02:17 - pre 255 meseci
Ljudi,
funkcije koje sam pomenuo pronassao sam u dokumentaciji za VS .NET; dakle, nisu izmissljene, a i ccisto sumnjam da se tu nalaze da bi se pisali DOS-ovski programi.

Nassao sam naccin da ih opametim - kada uccitam kernel mode driver za mapiranje memorije (omoguccava direktan pristup fizicckoj memoriji - da, dobro ste proccitali), onda ove f-je rade bez problema.

Mene i dalje intrigira to ssto moram da uccitavam ovaj drajver koji je, inacce, nezavisna biblioteka f-ja, da bi mi radile f-je iz STANDARDNE biblioteke.

Ssto se ticce izlaza na LPT portove, upravo me to i zanima, samo ne koristim paralelni port za sstampanje, vecc zzelim kontrolu svakog pina koji je definisan kao izlaz (i nemojte mi recci da to ne mozze u Windows-u - jer to radim, vecc funkcionisse). Na net-u se mogu nacci drajveri koji to omoguccavaju, koji omoguccavaju i ono ssto su u Borlandovom C++ pod DOS-om radili peek i poke (a i na Commodoreu 64 u BASIC-u, ako se dobro sjeccam).

Da, pod Windowsom mozze svassta da se radi i sa hardware-om. Postoji nessto ssto se zove HAL (Hardware Abstraction Layer), opssirnije o tome u dokumentaciji za DDK (Driver Development Kit) koji mozze da se downloaduje sa Microsof-ovog site-a (nije veliki, nekih 70-ak MB ). Kad sam vecc kod DDK, da li neko zna odakle mozze da se skine DDK za Win XP (na Microsoft-ovom site-u dozvoljen je besplatan download DDK za WinME i Win 2000, ali za Win XP se prodaje)?

 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.beograd-3.tehnicom.net

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: Portovi10.05.2003. u 03:46 - pre 255 meseci
Citat:
Voodoo:
...
Ako te nisam razumeo, onda izvini...

Da se izviniš treba iz drugih razloga, a to je što nisi dobro pročitao Intelovu dokumentaciju, ili već neki ekvivalent.

Naime, „protected mode“ je zaista režim procesora, i Windows ga koristi i za zabranjivanje pristupa kako memorijskom adresnom prostoru, tako i I/O adresnom prostoru (ova dva adresna prostora postoje na Intel arhitekturi). Uz TSS (Task State Segment) svakog procesa (ne obavezno „procesa“ u smislu onoga što se u OS-u naziva „procesom“) se može čuvati i tzv. „IO permission map“ kojom se dopušta pojedinim programima da neke IO portove koriste.

Windows NT (i njegovi naslednici) sadrže sistemske pozive pomoću kojih se zahteva pristup nekim I/O portovima, ali da bi ih dobili, moraju imati odgovarajuće privilegije (administratorske ili već naročite privilegije za drajvere; ne poznajem tačno ovaj deo NT-a). I/O port za LPT štampač se u „kompatibilnom modu“ za DOS programe emulira, i zato ga je moguće koristiti (pa možeš i u NT-u da uradiš „copy proba.txt lpt1:“). Zato je bitno o kojim se portovima radi, i na koji način se koriste.

A sad, da malo detaljnije pogledamo tvoje reči:
Citat:
Voodoo:
Citat:
tOwk:
Svaki Windows zasnovan na NT koristi i zaštitu („protected mode“) koju obezbeđuje procesor.


uz dužno poštovanje, da li znaš šta si uopšte napisao? windows koristi zaštitu pod imenom protected mod?

Uporedi tvoj citat i moje reči.

Citat:
Protected mod je režim procesora kada svaki program dobija svoj adresni prostor bez upadanja drugih programa

Ne, to nije tačno. Tada OS dobija mogućnost da pri pristupu nekoj stranici kojoj u tom trenutku nije „dozvoljen pristup“ (da ne ulazimo sada u detalje oko LDT, GDT, itd.), dobije jedan „exception“ sa „page fault“ ili „segmentation fault“. I to je sve. Kako će to operativni sistem iskoristiti je već druga stvar.

Citat:
, tako da to nema veze sa portovima.

Vidi iznad o TSS-u i I/O permission map.

Citat:
Dalje, WinNT radi u virtual modu.

Ovo ćeš već morati da mi pojasniš. Šta je to „virtual mod“? Koristi „virtuelni adresi prostor“ (Intelov izraz, a zapravo „straničenje memorije“), ili možda „Virtual 8086 mod“ :-) Kako ovo nije tema za to, zamolio bih te da pokreneš novu na forumu „Kernel & OS development“ o arhitekturi WinNT-a, i da pojasniš neke od njegovih odlika.
Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.beograd-3.tehnicom.net

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: Portovi10.05.2003. u 04:03 - pre 255 meseci
Citat:
Beban:
Nassao sam naccin da ih opametim - kada uccitam kernel mode driver za mapiranje memorije (omoguccava direktan pristup fizicckoj memoriji - da, dobro ste proccitali), onda ove f-je rade bez problema.

Mene i dalje intrigira to ssto moram da uccitavam ovaj drajver koji je, inacce, nezavisna biblioteka f-ja, da bi mi radile f-je iz STANDARDNE biblioteke.

Ssto se ticce izlaza na LPT portove, upravo me to i zanima, samo ne koristim paralelni port za sstampanje, vecc zzelim kontrolu svakog pina koji je definisan kao izlaz (i nemojte mi recci da to ne mozze u Windows-u - jer to radim, vecc funkcionisse). Na net-u se mogu nacci drajveri koji to omoguccavaju, koji omoguccavaju i ono ssto su u Borlandovom C++ pod DOS-om radili peek i poke (a i na Commodoreu 64 u BASIC-u, ako se dobro sjeccam).

Jasno mi je šta želiš, i to sam i pretpostavio. Znam da je WinNT vrlo striktan po tom pitanju, i kada sam se sličnim stvarima bavio (pre 4-5 godina), nisam uspeo da nađem funkciju koja bi omogućila pristup određenim IO portovima proizvoljnim programima (sa, naravno, svim potrebnim ovlašćenjima). Čini mi se da je smeštanje dela koda u ring0 (znači kao drajver), a već postoji dosta takvih rešenja (postojalo je i tada). Svakako, neko ko ima više iskustva možda zna konkretno ime API poziva koji menja I/O permission map za određeni proces (možda takav čak i postoji, a da nije javan).

Citat:
Da, pod Windowsom mozze svassta da se radi i sa hardware-om. Postoji nessto ssto se zove HAL (Hardware Abstraction Layer), opssirnije o tome u dokumentaciji za DDK (Driver Development Kit) koji mozze da se downloaduje sa Microsof-ovog site-a (nije veliki, nekih 70-ak MB :D ). Kad sam vecc kod DDK, da li neko zna odakle mozze da se skine DDK za Win XP (na Microsoft-ovom site-u dozvoljen je besplatan download DDK za WinME i Win 2000, ali za Win XP se prodaje)?

Pa, upotreba DDK-a podrazumeva spuštanje u ring0, i tada nema nikakvih prepreka pristupati bilo čemu. No, što se tiče DDK-a za XP, zaista ne znam.

Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

Beban
Beograd

Član broj: 6351
Poruke: 39
*.ptt.yu



Profil

icon Re: Portovi10.05.2003. u 20:23 - pre 255 meseci
Citat:
tOwk:
Windows NT (i njegovi naslednici) sadrže sistemske pozive pomoću kojih se zahteva pristup nekim I/O portovima, ali da bi ih dobili, moraju imati odgovarajuće privilegije (administratorske ili već naročite privilegije za drajvere; ne poznajem tačno ovaj deo NT-a).


Da, potpuno si u pravu ssto se ticce privilegija; da bi se koristili drajveri koji omoguccavaju "brljanje" po IO mapi a i po fizicckoj memoriji, sistemu se mora pristupiti sa administratorskim privilegijama.

Nego, i dalje me mucce one 2 funkcije iz conio.h - zassto su tamo ako ne mogu da se iskoriste?
 
Odgovor na temu

t3chX
Srđan Rajčević
Thessaloniki

Član broj: 2509
Poruke: 101
*.city.academic.gr

Jabber: techx@elitesecurity.org


Profil

icon Re: Portovi13.05.2003. u 18:12 - pre 255 meseci
Citat:

Citat:

Dalje, WinNT radi u virtual modu.



Ovo ćeš već morati da mi pojasniš. Šta je to „virtual mod“? Koristi „virtuelni adresi prostor“ (Intelov izraz, a zapravo „straničenje memorije“), ili možda „Virtual 8086 mod“ :-) Kako ovo nije tema za to, zamolio bih te da pokreneš novu na forumu „Kernel & OS development“ o arhitekturi WinNT-a, i da pojasniš neke od njegovih odlika.


Uhm ... oko ovog prvog, WinNT radi u "virtual modu" ... ni ja nisam najbolje shvatio ... koliko ja znam, OS moze da koristi virtuelnu memoriju, tj. da radi paging (prebacivanje stranica iz virtuelnog adresnog prostora na memory bus koji ce to sve lepo da prosledi u odgovarajuci page frame na psihickoj memoriji, citaj RAM, a sve to lepo preko MMU-a)... Sada, kako ovo nije tema za ovu emisiju, mozda bi stvarno neko trebao da pokrene temu na OS prog. pod naslovom Virtual memory i paging, pa da se tamo raspravimo o nacinu kako to NT radi ... Stavise mozemo i o handlingu page fault-a ...

If you want to get anywhere in your life, don't break the rules - make them !
 
Odgovor na temu

[es] :: C/C++ programiranje :: Portovi

[ Pregleda: 3068 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.