Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Leggere e scrivere su disco
Forum - C/C++ - Leggere e scrivere su disco

Avatar
VisualCiro (Normal User)
Rookie


Messaggi: 34
Iscritto: 07/03/2011

Segnala al moderatore
Postato alle 13:36
Giovedì, 02/06/2011
Ciao a tutti, come posso scrivere e leggere informazioni dal disco?
Mi spiego meglio, vorrei creare un file che all'accensione del computer, inserendo il supporto dove ho memorizzato l'applicazione, dovrebbe leggere alcuni settori del disco che decide l'utente per poi copiarli in ram.
Una volta fatto questo procedimento, dovrebbe trattare il contenuto della ram come una stringa e la dovrebbe tagliare.
Il problema è che non sò come accedere al disco, per giunta senza utilizzare l'OS!
Conto sul vostro aiuto.
Grazie.

PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
3
Down
V
Segnala al moderatore
Postato alle 13:46
Giovedì, 02/06/2011

ma che stai dicendo?

quoto ;) - tasx - 02/06/11 14:59
Ho chiesto come posso leggere dal disco "l' Hard Disk" quello che è memorizzato in un settore che decide l'utente, dopo che l'utente ha scelto il settore, l'applicazione carica i 512 byte nella Ram però non sò come far leggere questi byte contenuti nell' HD dalla mia Applicazione. - VisualCiro - 02/06/11 15:11
PM
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Up
2
Down
V
Segnala al moderatore
Postato alle 3:51
Venerdì, 03/06/2011
a parte il fatto che ti esprimi come un libro chiuso... :-p

se ho interpretato correttamente la tua richiesta, puoi risolvere effettuando il boot con FreeDOS (clone di MS-DOS). Puoi sviluppare un programma in C o C++  usando un vecchio compilatore per DOS come DJGPP e per leggere i settori "grezzi" dell'hard disk tramite il software interrupt del BIOS int 13h
http://en.wikipedia.org/wiki/INT_13H#INT_13h_AH.3D02h:_Rea ...

Una volta letto il settore (che posizionerai in un tuo buffer, un array di byte, qualcosa...) puoi gestirtelo come vuoi tramite codice C o C++.

Se non vuoi/puoi utilizzare FreeDOS, puoi sempre compilare il codice come se fosse un bootloader (se è più piccolo di 512 bytes) oppure usare un bootloader a 3 stadi (come GRUB) per lanciare il tuo codice compilato come se fosse un kernel multiboot. In questi casi però la cosa è estremamente complessa da gestire, quindi ti sconsiglio vivamente di provarci e di rimanere sul "semplice" usando FreeDOS e qualche pezzettino di Assembly x86 giusto per effettuare la chiamata al BIOS...

Ultima modifica effettuata da TheKaneB il 03/06/2011 alle 3:54
kane, ma tu credi veramente che se uno volesse lontanamente fare tutto questo lo chiederebbe in un forum? - HeDo - 03/06/11 08:42
Grazie, comunque si, lo chiederei in un forum perchè non sapevo come fare! - VisualCiro - 03/06/11 10:17
PM
Avatar
tasx (Dev Team)
Expert


Messaggi: 439
Iscritto: 15/12/2008

Up
0
Down
V
Segnala al moderatore
Postato alle 17:06
Giovedì, 02/06/2011
Non vorrei sparare una baggianata, ma su linux non è sufficiente leggere da /dev/sda ??

Correggetemi se sbaglio. :hail::hail::hail:

qui 'è altro: http://www.codeguru.com/cpp/w-p/system/misc/article.php/c5765 - tasx - 02/06/11 17:07
PM