Pagina 1 di 1

interrupt sotto windows.

MessaggioInviato: 8 ott 2007, 13:33
da cip
Sapete se esiste la possibilità di gestire gli interrupt del bios sotto sistemi Windows ?
Intendo l'interrupt proveniente dalla pressione di un tasto della tastiera oppure un interrupt dal mondo esterno su porta parallela (irq7).
Un tempo, sotto dos, si poteva fare...

Grazie e ciao.

Re: interrupt sotto windows.

MessaggioInviato: 9 ott 2007, 16:51
da Paolino
Purtroppo Windows rimane "blindato", nel bene e nel male...! Ricordo che un amico aveva utilizzato delle librerie per accedere alla parallela, ma non so se erano contemplati gli utilizzi dei segnali IRQ. Non trovi nulla in rete che ti possa aiutare in questo senso? Intendo a livello di librerie.

cip ha scritto:Un tempo, sotto dos, si poteva fare...

DOS era di bocca buona... :lol:

Ciao.

Paolo.

Re: interrupt sotto windows.

MessaggioInviato: 12 ott 2007, 10:34
da cip
Io utilizzo una libreria per accedere alla parallela (ntport).
Ma il problema, secondo me, non è tanto quello di leggere o scrivere all'indirizzo della periferica che si occupa di gestire gli interrupt esterni (credo sia un intel 8259), con la libreria non dovrebbe essere un problema.
Il punto è la gestione dell'interrupt a livello di ciò che deve fare il programma dopo che è avvenuta una richiesta di interruzione.
Sotto dos (infatti erano inserite nella libreria dos.h) c'erano delle funzioni, getvet e setvect, con le quali si poteva leggere e modificare la interrupt handler table del PC.
Se per esempio era avvenuto un irq7 (interrupt sulla porta parallela) allora modificando la interrupt handler table in modo che il programma saltasse all'indirizzo della interrupt service routine si poteva gestire l'evento.
Per farlo bastava leggere la interrupt handle table con getvect, salvare l'indirizzo associato ad irq7, modificare la interrupt handler table mettendo, con setvect, al posto dell'indirizzo originale l'indirizzo della interrupt servire routine (funzione nella quale mettevo il codice di ciò che il programma deve fare quando avviene un irq7).
Poi alla fine sempre con setvect rimettevo nella interrupt handler table l'indirizzo originale.

Però con il compilatore Borland C++ Builder 6.0 non ho trovato nulla che assomigli a getvet e setvect.
Del resto essendo due funzioni inserite nella dos.h.....
Proverò a cercare meglio in internet su questi argomenti, per il momento grazie delle informazioni.

Ciao.