Newsgroup: it.comp.programmare.win32
Titolo: Tutorial/Book x Programmare DLL ed API

Scusate la banalità, magari offensiva nei vostri riguardi, del mio
intervento primordiale....
Vorrei imparare a realizzare dei Driver con C++ e Windows XP per
interfacciarmi con API/driver preesistenti. 
Vorrei realizzare un driver che gestisca intelligentemente i messaggi e
flussi dati che vengono scambiati fra 2 dispositivi di cui ho un xxx.h di
uno ed i dati di interfaccia dell'altro, un documento in cui sono spiegate
le interfaccie, i loro goal, le chiamate e le variabili in/out.
Avrei bisogno di un abbrivio iniziale partendo con della sana applicazione
e studio: potreste indicarmi dei buoni tutorial, libri, link?
Scusate ancora,
ciao
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 [...] potreste indicarmi dei buoni tutorial, libri, link?
http://msdn2.microsoft.com/en-us/library/aa972908.aspx
potrebbe non essere facile, specie considerando che confondi ancora tra
drivers, API e DLL...


 drivers, API e DLL...
Schematicamente mi descrivi le differenze?
Anche con un esempio.
Ciao e comunque grazie
e scusa per l'ignoranza


 Schematicamente mi descrivi le differenze?
l'acronimo API sta per Application Programming Interface ed è un termine
molto generico che indica un'interfaccia di programmazione (termine
"interfaccia" inteso qui in modo molto generico, non si riferisce alle
classi astratte o ad altri concetti di OOP) costituita da un set di
funzioni o di classi o altro che serva alla programmazione di qualcosa; le
API Win32 servono a programmare in Win32, e su questo NG quando si parla
di API si da per scontato che siano le Win32.
le API Win32 sono costituite da un vastissimo set di funzioni, di
interfacce COM, o addirittura di classi (nel caso di GDI+) documentate
nella libreria MSDN e suddivise in una miriade di sottoinsiemi per compiti
specifici (ci sono le API relative all'I/O, quelle relative al windowing,
alla grafica, alla shell, quelle di DirectX, quelle di OpenGL... chi più
ne ha più ne metta).
per consultare la libreria MSDN vai a questo indirizzo:
http://msdn2.microsoft.com/en-us/library/default.aspx
e comunque Wikipedia saprà spiegarti meglio di me l'acronimo API.
una DLL è un modulo eseguibile; ci sono tanti tipi di moduli eseguibili:
gli EXE, le DLL, gli OCX, gli screen savers... tutti condividono lo stesso
formato di file (PE, Portable Executable), ed inoltre alcuni hanno la
caratteristica di essere direttamente eseguibili in un loro processo: gli
EXE ad esempio lo sono, le DLL no.
in un processo possono essere caricati più moduli eseguibili: come minimo
ci sta sempre l'EXE usato per creare il processo, e in più ci possono
essere diverse DLL. ciascuno di questi moduli eseguibili può avere delle
dipendenze da uno o più degli altri, il che significa che "importa" delle
funzioni implementate da un altro modulo eseguibile.
un driver è un modulo eseguibile che gira in kernel mode e ha accesso al
kernel space. un modo molto semplice di far partire un driver è di
caricarlo come "kernel driver service" con le funzioni API CreateService,
StartService e poco altro.
solitamente non si fa così perché un driver deve implementare il codice
necessario a gestire dell'hardware secondo le specifiche richieste del
sistema operativo; è necessario piuttosto effettuare una procedura di
installazione della periferica (tutto sempre tramite API ben documentate)
e del driver come gestore della stessa; al caricamento vero e proprio ci
pensa il sistema operativo.
PS: mi sono spiegato di merda. il problema è che oggi ho il cervello fuso;
ti conviene leggere MSDN o al limite postare sui forum o sui newgroups:
http://msdn2.microsoft.com/en-us/aa497440.aspx


Grazie x l'indulgenza mrnt.
Wow, se sei così quando sei fuso..... Per capirti mi ci vorrebbe un
cervellone allora quando sei lucido ;-)*****.
Ho capito la differenza.
Sto iniziando a studiare il mondo dei driver per lavorarci su.....
Sei hai in mente altro Give me a Buzz.....
Ciao
mrnt ha scritto:
