1

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 ?
euh...

2

- 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).

3

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
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

4

C'est avec ca qu'on monte des images disque?

5

non

6

7

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 ?

8

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" ?

9

Bah, c pas si mystérieux que ça sous windows, regarde ext2fsd smile
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

10

11

bah ué
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

12

alors ce sera moins mystérieux quand je les aurai lues smile

13

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.

14

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.

15

Sous GNU/Linux pour monter une image :

mkdir /mnt/image   (ou tout autre dossier de ton choix, s'il existe pas déjà)

losetup /dev/loop0  /chemin/vers/fichier
mount /dev/loop0  /mnt/image

Pour défaire :
umount /dev/loop0
losetup -d /dev/loop0

(tout ceci est à faire en tant que root, évidemment)

16

nan je parlais du code C qui se cache derrière tout ça, pour créer le device /dev/loop0 hehe

17

Ah, bah tu prends les sources du noyau, et tu cherches le fichier loop.c

Après coup: en fait prends pas loop.c d'un noyau trop récent, parce qu'il y a le code qui supporte la cryptographie dedans grin

18

19

La création d'un device dépend principalement de si c'est un device orienté bloc ou orienté flux.

Si tu cherches de la doc sur le fonctionnement et la programmation de pilotes, t'as un excellent livre (disponible sous la FDL), que tu peux acheter ou télécharger à partir de là : http://www.xml.com/ldd/chapter/book/

20

merci beaucoup pour le lien, je crois que je vais y passer la soirée et la nuit hehe