View Full Version : [Delphi] Leggere settori di un cd rom
Franziscko
27-07-2006, 21:40
Come da topic.....mi date una mano?
non mi interessa il numero seriale ma poter leggere qualsiasi settore voglio.
Denghiù!!! :D
Franziscko
28-07-2006, 11:59
UP....pliiiiiiiiss..
si sta parlando dello stesso argomento in un altro topic, "lettura HD a basso livello"
ecco: http://www.hwupgrade.it/forum/showthread.php?t=1205995
Franziscko
28-07-2006, 14:25
Ciao, ti ringrazio ma hd e cdrom non è la stessa cosa! là si parla di aprire
un file, io voglio accedere a dei settori, ed in più del C non capisco un acca.. :mc:
in pratica dovremmo accedere all'unità fisica, non logica, come ad esempio fa
benissimo Winhex.
Ciao, ti ringrazio ma hd e cdrom non è la stessa cosa! tra i due cambia solo un ULONG, precisamente questo (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/kernel_d/hh/Kernel_d/DevObjts_46146aa1-37d2-4a49-8e50-a5f16b3d15f2.xml.asp?frame=true) :P
là si parla di aprire un file, assolutamente no... :nonsifa:
io voglio accedere a dei settori, da Delphi non riuscirai mai a richiedere la lettura di specifici settori, quello che puoi fare è leggere tutto lo stream e ricostruire i "sector bounds" con un po' di aritmetica (sono sempre multipli di 512, o comunque del campo BytesPerSector di questa (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/disk_geometry_str.asp?frame=true) struct (una struct è un record di Delphi).
ed in più del C non capisco un acca.. :mc: allora ti dico i nomi delle funzioni API corrispondenti: CreateFile (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/createfile.asp?frame=true), ReadFile (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/readfile.asp?frame=true), CloseHandle (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/closehandle.asp?frame=true); le trovi anche nell'help di Delphi.
in pratica dovremmo accedere all'unità fisica, non logica, come ad esempio fa benissimo Winhex. non c'è differenza tra le due; la differenza la percepisci solo a livello di Device Objects, non è certo roba da Delphi :asd:
Franziscko
28-07-2006, 19:46
da Delphi non riuscirai mai a richiedere la lettura di specifici settori, quello che puoi fare è leggere tutto lo stream e ricostruire i "sector bounds" con un po' di aritmetica (sono sempre multipli di 512, o comunque del campo BytesPerSector di questa (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/disk_geometry_str.asp?frame=true) struct (una struct è un record di Delphi).
Ok, ti ringrazio, sei stato abbastanza chiaro, il fatto è che vengo dal basic e Pascal, con gli oggetti faccio a pugni ogni giorno, e mi pareva che Delphi fosse
un linguaggio *serio*, ma mi hai dato la conferma che dovrò passare prima o poi al C. :muro: :muro: :muro:
Approfitto della tua cortesia e soprattutto conoscenza per chiederti un'ultimissima cosa: parli di leggere tutto lo stream, intendi dire un *assieme di files*?? (non potevo trovare aggettivo peggiore! :muro: ) perchè dove vorrei leggere io, files non ce ne dovrebbero essere....
;)
no, mi riferivo proprio al contenuto raw dell'unità: lo leggi a blocchi di dimensione fissa e man mano che lo leggi ricostruisci i "sector bounds" calcolandoteli. o magari stabilisci che la dimensione fissa dei blocchi corrisponda proprio alla dimensione di un settore dell'unità (che come avrai capito puoi ottenere analizzando la geometria del drive mandando un IOCTL_GET_DRIVE_GEOMETRY (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/ioctl_disk_get_drive_geometry.asp?frame=true)) in modo tale che di fatto leggi proprio un settore alla volta.
non è detto comunque che Delphi sia peggiore in tutto del C, dipende sempre da quello che vuoi fare: certe cose si fanno meglio in Delphi (lascia proprio perdere quella schifezza di C++ Builder :Puke: ).
poi penso che tu abbia anche semifrainteso quando dicevo che in Delphi non saresti mai riuscito a leggere specifici settori: in Windows non è proprio possibile in alcun modo richiedere la lettura di uno specifico settore di un volume in user mode :D
l'unico modo è, come ti ho già detto, leggere tutto e calcolare man mano.
Franziscko
29-07-2006, 09:07
Bene, ora non mi resta che sperare in una decina di anni di riuscire a capirci qualcosa... :muro: :muro: :muro: :muro: :muro:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.