Il faut savoir qu'USB est aussi un protocole, un peu comme du réseau. Ce n'est pas un disque en accès direct.
Le "firmware" du périphérique USB permet ce qu'il veut.
Version imprimable
Il faut savoir qu'USB est aussi un protocole, un peu comme du réseau. Ce n'est pas un disque en accès direct.
Le "firmware" du périphérique USB permet ce qu'il veut.
Pour cela, tu aurais plutôt besoin de faire des archives (fichiers regroupant plusieurs fichier sous un format donné, comme les fichiers ZIP ou RAR) cryptées et fournir un programme qui décrypte et affiche leur contenu. Mais tu ne pourras pas t'en servir comme vrai répertoire dans lequel les autres programmes peuvent écrire, à moins de faire un driver pour cela.
Je le sais, je me suis pas mal penché là-dessus moi-même. Finalement, j'ai écrit un programme qui fait à la fois programme de cryptage, explorateur d'archives ZIP, RAR et TAR, éditeur de texte et visionneur d'image, qui permet le Drag & Drop pour les fichiers ZIP (cryptés ou non), mais à par ça, n'interagit pas vraiment avec le reste du système.
Ce qui complique le problème sous Windows, c'est que sur cette plate-forme, il y a en fait deux entités différentes:
- Un répertoire (directory) est ce qui est réellement présent sur le système de fichiers: Avec ça, on peut faire fopen("X:\\répertoire\\fichier.txt", "r") dans un programme, et lire un fichier dans le répertoire.
- Un dossier (folder) est ce que l'Explorateur Windows affiche (et expose à la programmation via son interface IShellFolder). La quasi-totalité des répertoires apparaissent comme dossiers, et la majorité des dossiers représentent des répertoires, mais pas tous: Le Panneau de Configuration par exemple, est un dossier mais pas un répertoire.
Éant donné que ces deux concepts apparaissent à différents niveaux, on ne les manipule pas du tout de la même façon:
- Si l'on veut faire passer quoi que ce soit pour un répertoire, vu que cela fait partie du système de fichiers, il faut écrire un pilote driver lié au système de fichiers. Par exemple, un "file system minifilter driver". Sinon, les programmes ordinaires ne le verront jamais comme un répertoire.
- Si l'on veut faire passer quelque chose pour un dossier, on écrit une extension de l'espace de noms (Namespace extension). C'est un composant COM qui gère ça et expose une interface IShellFolder pour l'élément donné.
Un exemple concret, c'est le fait que sous un Windows récent, les archives ZIP apparaissent comme des dossiers (mais pas comme répertoires): C'est une extension de l'espace de noms, contenue dans la DLL zipfldr.dll, qui gère cela. L'explorateur affiche le contenu du ZIP, mais on ne peut pas faire de fopen("X:\\archive.zip\\fichier.txt", "r") parce qu'il ne s'agit pas d'un répertoire. Si on double-clique sur un fichier du ZIP pour l'ouvrir, l'extension va en fait extraire le fichier dans le répertoire Temp, et ouvrir le fichier extrait.