Newsgroup: it.comp.programmare.win32
Titolo: CD-ROM virtule

Ciao a tutti,
ho rincorso questa ricerca su internet per qualche ora fino a che i neuroni 
mi sono caduti come fossero forfora ma con scarsi risultati ed allora vi 
chiedo aiuto:
sapreste indicarmi dove potrei trovare un esempio, possibilmente in c++, su 
come si possa realizzare un sw in grado di simulare un'unitą cd? Insomma, 
dei sorgenti di esempio su come sono state scritte utility tipo Imagedrive 
di Nero. Non mi interessa saper leggere i file .iso o .nrg, mi basterebbe 
capire come si simula un drive sotto windows (anche solo xp). Ringrazio 
anticipatamente tutti coloro che vorranno/potranno offrirmi un qualsiasi 
suggerimento.
Maxime. 

 su come si possa realizzare un sw in grado di simulare un'unità cd?
Devo essere stato piu' fortunato!
Ho cercato nelle news "win32 virtual drive" e mi sono usciti 9720 post 
sull'argomento e il 4 post mi ha portato qui:
http://www.acc.umu.se/~bosse/
 dove trovi un po' di tutto.
Ad esempio RomFs, c'e' un file RomFs.zip con tanto di sorgenti in c e 
documentazione su come procedere...
-- 
Guglielmo
I programmatori passano il tempo a combinare cose ovvie in modi non ovvi
(Robert Dewar) 


Grazie, ti assicuro che non si č trattato di pigrizia; ho trascorso oltre 3 
ore a cercare ma, e credo sia stata la causa, mi sono intestardito a cercare 
"virtual cd" in & con parole tipo: develop, program, software. Tutto quel 
che sono riuscito a trovare, sono stati siti/forum dove si 
pubblicizzava/discuteva di prodotti commercializzati.
Grazie ancora.
Maxime 

 [...]
gli autori dei Daemon Tools hanno scritto due drivers, un class e un port,
ed in genere è questa la stada che si intraprende per fare ciò che chiedi;
forse è possibile anche agendo unicamente da user mode, per esempio con
qualche funzione tipo queste:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/volume_management_functions.asp?frame=true
che, come potrai facilmente verificare, sono le stesse usate dal comando
MOUNTVOL che non sono riuscito a capire come cavolo si usa :P
comunque non ho mai usato quelle API, non so se effettivamente si possano
usare allo scopo.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Grazie per l'info, sono andato a guardare ed esempi simili ne avevo già 
trovati. Purtroppo sono simili ma inversi alla mount di unix e cioè simili 
al comando "subst" de DOS. In pratica ti permette di assegnare un'unità 
logica ad una directory. Tra l'altro l'azione è pericolosa sui dischi 
formattati NTFS. Sono funzioni che puoi trovare in shell32.dll.
In breve, il programma che vorrei tentar di fare, e se trovo troppi scogli 
rinuncio, dovrebbe proporsi in in 2 fasi distinte: nella prima proporsi come 
cd-rom ad un eventuale gioco che si vuole avviare, riproporre al vero cd-rom 
le richieste fatte dal gioco per verificare l'autenticità del cd prima di 
avviarsi e salvarsi in un db le risposte del driver fisico, mentre nella 
seconda fase rispondere alle richieste senza più accedere al vero cd del 
gioco.
Tutto questo non per scopiazzare i giochi ma per ridurre lo spazio occupato 
sull'HD dalle immagini salvate dai cd e montate come cd virtuali che sono 
mediamente di 600/700 Mb ciascuno.
In realtà sono stupito che nessono ci abbia ancora pensato. Trovo stupido 
andare in vacanza con un portatile e dovermi portare il primo cd di tutti i 
giochi con cui vorrei giocare. Inoltre mi porterei delle copie per non 
rovinare gli originali. Sono esagerati: e la legge e le protezioni ... e 
basta! Spesso su un pc portatile se rovini il lettore cd (a furia di usarlo 
per 'ste cose) non trovi più il ricambio e ne devi cercare uno esterno 
(altre cianfrusaglie da portarsi appresso). Dovrebbe interessargli solo il 
fatto che chi gioca possegga un copia originale e punto.
Scusate la sfuriata, un saluto.
Maxime 

 Scusate la sfuriata, un saluto.
ma figurati, mi trovi perfettamente d'accordo assieme a chissà quanti
altri giocatori!! :)
comunque visto e considerato quello che vuoi fare, secondo me la strada
migliore da intraprendere è quella del driver; se non sai scrivere drivers
potrebbe essere un ottimo inizio dal punto di vista didattico, almeno
secondo me; non perché sia facile, anzi ti dico subito che di roba da
studiare ce n'è, ma perché proprio per questo sarà formativo e ti
permetterà in futuro di scrivere molto più facilmente drivers di ogni
tipo, non solo il class e il port delle unità CD.
tutto il discorso è riferito al WDM (Windows Driver Model), ma chissà, può
darsi che con questo nuovo WDF (Windows Driver Foundation) le cose siano
significativamente migliorate per un principiante.
per concludere, siccome ciò che vuoi fare è molto utile, sarebbe
graditissima cosa se a lavoro finito pubblicassi il risultato sul web :-)
con un bel disclaimer anti-malafede per chi pensasse che questo tuo
strumento sia stato prodotto per fini di pirateria illeciti ;-)
io penso che, visto il lavorone che spetta ad un principiante che affronta
la scrittura del suo primo driver WDM, pensare che lo faccia per piratare
un videogioco sia assurdo; forse all'inizio può anche essere, ma stai
tranquillo che a neanche metà del lavoro diventa la classica "questione
tra te e il driver" :-) che tradotto in altri termini significa genuina
sete di cultura sostenuta da forte ostinazione.



Non dubitarlo nemmeno :-)
Un saluto.
Maxime 

 panza :-)
ovviamente ^^



Per pura curiosità: quale tipo di problematica ti ha costretto a tuffartici?
Si finisce, per caso, in una di quelle tinozze dove, per poter respirare, 
bisogna muoversi piano per non fare onde? 

 bisogna muoversi piano per non fare onde?
be', dipende da programmatore a programmatore; io per esempio la vedo
diversamente: per me scrivere un driver consiste nel rispettare in maniera
certosina una serie di determinate convenzioni e regole, altrimenti è
troppo facile provocare schermata blu o peggio ancora un leak; la cosa è
un esercizio estremamente utile perché ti insegna a creare dei programmi
che per forza di cose *devono* essere robusti come la roccia, e quello che
impari ti rimane ovviamente anche per quando torni a programmare
semplicemente in user mode; diventi molto più bravo insomma. però c'è
anche da dire che quando ti capita una schermata blu e non riesci a
capirne il motivo, allora so ca**i... :D
in tal caso certe volte conviene rivedere completamente il design del
proprio driver e possibilmente spostare dei pezzi di codice in user mode.
