Newsgroup: it.comp.programmare.win32
Titolo: Driver per windows98

Ciao a tutti,
io dovrei sviluppare un driver per windows che faccia vedere un
dispositivo hardware sviluppato da noi come un joystick.
Visto che non volevo sviluppare un driver apposito per la seriale ho
deciso di fare un layered driver che si interfacciasse con il driver
della seriale per mandare ed inviare dati.
Il problema e' che il driver della seriale viene aperto normalmente solo
che quando inizio a mandare dei codici tramite la funzione
DeviceIoControl ecco che ottengo, come codice di ritorno, che la
funzione non e' implementata.
I codici li ho presi dal file ntddser.h contenuto nelle ddk per windows
NT visto che nelle ddk del windows 98 non c'e' niente di simile ho
inferito che tali codici andassero bene anche per windows 98 ... forse
il mio grosso errore e' stato questo???
Se tali codici non vanno bene qualcuno di voi sa per caso dove posso
trovare i
codici giusti da inviare tramite la DeviceIoControl????
Grazie in anticipo per ogni eventuale risposta.
                            Ciao, Tonino

Non sarebbe meglio fare un driver compatibile con directx?
--
Stefano Pettini
Notary of 
www.thawte.com
PLEASE ANSWER HERE, NOT BY EMAIL

 Non sarebbe meglio fare un driver compatibile con directx?
Ciao,
ok, ma questo non eliminerebbe il bisogno di accedere alla seriale,
visto che tutte le funzioni delle DirectX non sono accessibili in kernel
mode.
                            Ciao, Tonino

 ha scritto nel messaggio
news:3ADE9003...@sssup.it...
: Ciao a tutti,
: io dovrei sviluppare un driver per windows che faccia vedere un
: dispositivo hardware sviluppato da noi come un joystick.
<omissis>
Visto che sono in argomento, credo dovresti specificare:
- se intendi fare un driver per NT o W95/98/2000 (nell'oggetto parli di 98
ma nel corpo citi NT)
- se stai usando DeviceIoControl() sei evidentemente sul lato applicazione;
ma allora significa che stai gia` comunicando/tentando di comunicare con un
driver. Quale (o l'hai fatto o stai usando un driver gia` installato)?
- se non ho capito male il tuo hw entra nel PC come seriale e tramite una
tua applicazione (eventualmente il driver) vuoi intercettare la seriale e
inviarla sull'I/O del joystick. Ma se e` cosi` non riesco a spiegarmi alcune
altre considerazioni che hai riportato.
Ho capito tutto al contrario?
susanna

Ciao,
dalla tua mail mi sa che mi sono espresso male ... cerchero' con
questa mail di spiegare meglio quale e' il mio problema.
Allora abbiamo costruito un hardware che si innesta sulla porta
seriale. Quello che voglio fare io e' costruire io e' un driver
che si interfacci verso l'hardware con la seriale per comunicare
con questa periferica e che, dal lato applicazione, fornisca
un'interfaccia conforme alle specifiche di un driver del
joystick.
Il problema e' che all'interno di questo driver non voglio
riscrivere tutta la parte che serve per comunicare con la seriale
e vorrei sfruttare il driver standard gia' presente in windows.
Per fare questo devo aprire una comunicazione con il driver della
seriale e quindi mandare gli appositi codici tramite una
DeviceIoControl(...). Il fatto e' che nelle ddk di windows98 non
c'era alcun file .h con questi codici, ma nelle ddk di windowsNT
si' e quindi ho supposto (ma a questo punto mi sa che la
supposizione e' completamente sballata!!!) che i codici fossero
identici ed ho usato nel mio programma di prova quei codici,
ottenendo sempre come risposta un codice che corrisponde a
"funzione non implementata" (e questo per TUTTI i codici che ho
provato!!!).
Le mie domande a questo punto sono : 
1) cosa ho sbagliato nel comunicare con il driver della
seriale????
2) c'e' un modo semplice per un driver di leggere ed inviare dati
sulla seriale???
Grazie ancora in anticipo per ogni eventuale risposta.
					Ciao, Tonino

 ha scritto nel messaggio
news:3AE53220...@sssup.it...
: Ciao,
: dalla tua mail mi sa che mi sono espresso male ... cerchero' con
: questa mail di spiegare meglio quale e' il mio problema.
<omissis>
Vediamo se ho capito meglio:
: Quello che voglio fare io e' costruire io e' un driver
: che si interfacci verso l'hardware con la seriale per comunicare
: con questa periferica e che, dal lato applicazione, fornisca
: un'interfaccia conforme alle specifiche di un driver del
: joystick
Bene. Ma allora devi comunicare con il driver della seriale di Windows
DALL'INTERNO di un altro driver (il tuo). Ma da qui NON puoi usare
DeviceIoControl(), che e` una interfaccia di Win32 esportata dal Kernel
(kernel32.dll ad esempio).
Dall'interno di un device driver puoi chiamare le VxD Services API del VxD
che ti interessa gestire (nel tuo caso serial.vxd tramite le chiamate
VCOMM_*).
Queste chiamate sono tutte documentate nel DDK e, effettivamente, svolgono
un po' tutto quel che serve per gestire una seriale.
Sempre questo tuo driver deve 'trasformare' i dati recuperati dalla seriale
per esportarli verso le applicazioni, le quali, finalmente, potranno
richiederle con DeviceIoControl(). Nel DDK esiste un esempio di driver
seriale nella cartella Comm.
Altra difficolta`: se l'applicazione finale deve 'credere' di interfacciarsi
con un joystick, nel tuo driver devi anche rispettare gli standard di
chiamata del device driver standard del joystick sotto windows. Nel DDK  ne
esiste un esempio sotto la cartella Msjstick.
Credo pero` che ti convenga scrivere un tuo driver ex-novo che virtualizzi
l'hardware della seriale, comunichi quindi con essa e 'impacchetti' il
flusso verso le applicazioni nel formato desiderato.
Se ho ancora capito nisba, mi arrendo.
susanna