bidoo Le 25/08/2004 à 18:33 alors deja, j'aimerais savoir si il existe comme pour la ti,une methode pour obtenir le handle d'un fichier (sur le dd) et par la meme occasion un moyen d'obtenir l'adresse absolu d'un fichier
ensuite, qqun sait-il a quel librairie appartient outportb et inportb ?
- Le disque dur d'un pc et le système de stockage de la ti n'ont absolument rien à voir. Procure-toi la documentation du système de fichiers FAT32 déjà pour voir.
Ensuite, un fichier n'a pas d'adresse en mémoire, vu qu'il est pas en mémoire mais sur le disque dur. Maintenant, tu peux demander à l'os de te mapper un fichier en mémoire. L'os se débrouillera pour que quand tu accèdes à l'endroit en mémoire où le fichier est mappé, ça aille lire et écrire dans le fichier correctement.
- Non. Cela dit, selon le système d'exploitation qui tourne, ces fonctions peuvent être inaccessibles (instructions privilégiées).
Sous win32, pour toucher aux fichiers, tu peux otenir un handle d'un fichier avec CreateFileEx, et le lire et l'écrire avec ReadFile et WriteFile, puis le fermer avec CloseFile, ou bien le mapper en mémoire (c'est presque équivalent à l'accès sur TI là) avec CreateFileMapping, MapViewOfFileEx, FlushViewOfFile, et UnmapViewOfFile pour le démapper
C'est avec ca qu'on monte des images disque?
Pour monter une image disque, il faut un pilote qui s'installe dans le noyau et enregistre un nouveau périphérique. Il utilise les points d'entrées du gestionnaire de filesystems pour obtenir un accès au fichier que tu veut mapper (vrai sous windows au moins, sous linux par exemple le pilote peut directement utiliser des fonctions équivalentes à open, read, write, mais le principe est le même, même si c'est plus simple à utiliser).
Sous Win y'a divers logiciels qui font ça. En fait le plus important c'est le pilote qu'ils installent, le prog que tu vois n'est qu'une interface de configuration du pilote.
Sous Linux (et pas mal d'autres systèmes), le pilote loop est un pilote standard du noyau qui fait la même chose.
Bref, en résumé bah pour créer un nouveau périphérique et le monter, bah il faut un pilote de périphérique. Etonnant non ?
Pas tant que ca.
C'est vrai que sous windows ca reste un peu "mystérieux".
Sous linux ca me parait intéressant. En fait, il suffit d'avoir un module qui "implémente" une sorte de classe "disque" ?
Sauf que pour le compiler il te faut le Windows <version> DDK.
Et que les points d'entrée noyau de windows c'est Vraiment ignoble. Par exemple, le pilote réseau *vide* (passthrough) fourni par microsoft à titre d'exemple fait plusieurs millers de lignes, ou qqc dans ce style. Le même pour Linux prend ptêt 100 lignes en commentant bien.
T'as pas un exemple sous linux qui monte un fichier image binaire de base?
Parce que si j'ai bien compris:
mount something somewhere
Ca veut dire qu'il faut rajouter un device dans le devfs, non? (je connais pas trop sinon pas du tout les délicatesses du truc)
donc faire un module avec des fonctions read,write,ioctl... J'aimerais bien trouver un tuto surtout.