OVH Cloud OVH Cloud

Lire un CD

6 réponses
Avatar
Robert
Bonjour a tous,

Je voudrais faire l'equivalent du programme suivant (qui tourne sous
linux) sous Windows, mais je ne connais pas les fonctions a utiliser.

int main(){
FILE* f = fopen("/dev/cdrom","rb");
while(!feof(f)){
char buffer[2048];
fread(buffer, 1, 2048, f);
}
fclose(f);
return 0;
}

Peut-on ouvrir un CD comme un simple fichier?
Si oui, avec quelle fonction?

Merci

Robert

6 réponses

Avatar
Serge Paccalin
Le jeudi 28 avril 2005 à 11:53:20, Robert a écrit dans
fr.comp.os.ms-windows.programmation :

Je voudrais faire l'equivalent du programme suivant (qui tourne sous
linux) sous Windows, mais je ne connais pas les fonctions a utiliser.

int main(){
FILE* f = fopen("/dev/cdrom","rb");
while(!feof(f)){
char buffer[2048];
fread(buffer, 1, 2048, f);
}
fclose(f);
return 0;
}

Peut-on ouvrir un CD comme un simple fichier?



Oui, on peut.

Si oui, avec quelle fonction?



CreateFile, ReadFile, CloseHandle.

Le nom du fichier à utiliser est .X: (c.-à-d. "\.X:" dans un
source C) pour le lecteur X:

Exemple détaillé là :

http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B138434


--
___________ 28/04/2005 19:24:22
_/ _ _`_`_`_) Serge PACCALIN -- sp ad mailclub.net
_L_) Il faut donc que les hommes commencent
-'(__) par n'être pas fanatiques pour mériter
_/___(_) la tolérance. -- Voltaire, 1763
Avatar
Serge Paccalin
Le jeudi 28 avril 2005 à 11:53:20, Robert a écrit dans
fr.comp.os.ms-windows.programmation :

Je voudrais faire l'equivalent du programme suivant (qui tourne sous
linux) sous Windows, mais je ne connais pas les fonctions a utiliser.

int main(){
FILE* f = fopen("/dev/cdrom","rb");
while(!feof(f)){
char buffer[2048];
fread(buffer, 1, 2048, f);
}
fclose(f);
return 0;
}

Peut-on ouvrir un CD comme un simple fichier?



Oui, on peut. Sous NT/2000/XP/2003, du moins.

Si oui, avec quelle fonction?



CreateFile, ReadFile, CloseHandle.

Le nom du fichier à utiliser est .X: (c.-à-d. "\.X:" dans un
source C) pour le lecteur X:

Exemple détaillé là :

http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B138434


--
___________ 28/04/2005 19:24:22
_/ _ _`_`_`_) Serge PACCALIN -- sp ad mailclub.net
_L_) Il faut donc que les hommes commencent
-'(__) par n'être pas fanatiques pour mériter
_/___(_) la tolérance. -- Voltaire, 1763
Avatar
Robert
>>Peut-on ouvrir un CD comme un simple fichier?




Oui, on peut. Sous NT/2000/XP/2003, du moins.


Si oui, avec quelle fonction?




CreateFile, ReadFile, CloseHandle.

Le nom du fichier à utiliser est .X: (c.-à-d. "\.X:" dans un
source C) pour le lecteur X:

Exemple détaillé là :

http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B138434





Merci beaucoup!
Donc .C: c'est un peu comme /dev/cdrom. J'espere que fopen,
fread... fonctionnent aussi avec ce nom de fichier... En tout cas,
je vais tester ca.
Merci

Robert
Avatar
Aurélien REGAT-BARREL
Robert wrote:

Merci beaucoup!
Donc .C: c'est un peu comme /dev/cdrom. J'espere que fopen,
fread... fonctionnent aussi avec ce nom de fichier... En tout cas,
je vais tester ca.



Tu peux tenter avec les fonctions C. Un équivalent peut être plus proche de
ce que tu as donné serait le fichier DeviceCdRom0, sauf que ça marche pas
:-)
http://support.microsoft.com/kb/100027/en-us
Au passage, le code que tu as donné comporte un bug:
http://faq.cprogramming.com/cgi-bin/smartfaq.cgi?answer46476070&id43284351

--
Aurélien REGAT-BARREL
Avatar
Robert
A> Tu peux tenter avec les fonctions C. Un équivalent peut être plus
proche de
ce que tu as donné serait le fichier DeviceCdRom0, sauf que ça marche pas
:-)



Si ca marche, et ca donne la meme chose que //./X:
Et pour la portabilite, je vais continuer avec fopen, fread...
Ce sera ca en moins a maintenir differemment entre les versions linux
et windows

Au passage, le code que tu as donné comporte un bug:
http://faq.cprogramming.com/cgi-bin/smartfaq.cgi?answer46476070&id43284351



Oui, je sais tres bien que je dois tester le resultat de mes
fread. C'etait juste un code pour montrer ce que j'avais besoin,
pas un "vrai" code. De toute facon, je ne faisais rien avec ce
qui etait lu, donc

int main(){
return 0;
}

donne le meme resultat ;-)

Encore merci pour les astuces

Robert
Avatar
Aurelien REGAT-BARREL
> Tu peux tenter avec les fonctions C. Un équivalent peut être plus proche
de
ce que tu as donné serait le fichier DeviceCdRom0, sauf que ça marche
pas
:-)



Si ca marche, et ca donne la meme chose que //./X:



Pas sous Win9x/Me.

--
Aurélien REGAT-BARREL