2015-03-05 5 views
1

Je travaille sur une application similaire à un programme appelé Mod Organizer. Essentiellement, le programme permet aux utilisateurs de télécharger et d'installer des mods sur le jeu, Skyrim. Cependant, Mod Organizer fait quelque chose d'intéressant; plutôt que d'installer les mods directement dans le répertoire de données du jeu (comme les autres gestionnaires de mod), MO installe chaque mod à son propre répertoire dans un autre emplacement arbitraire, puis charge tous les mods une fois le jeu lancé. Ceci est important car cela rend la gestion des mods beaucoup moins fastidieuse.Accrochage dans le système de fichiers Windows et insertion du système de fichiers virtuel

Ma question est: comment puis-je créer ce système de fichiers à la volée ou faire "prétendre" Windows un répertoire plein de fichiers mod est ailleurs. Au début, j'ai pensé à créer des liens symboliques avec mon code, mais This guide m'a mis sur la piste de «l'accrochage», et spécifiquement recommandé d'essayer EasyHook. Bien que je pense pouvoir comprendre le concept sous-jacent d'accrochage (essentiellement l'interception des signaux du système d'exploitation et les rediriger à quelque fin que ce soit), je ne sais pas vraiment comment faire pour que le hook redirige réellement les fichiers.

Si quelqu'un connaît une bonne ressource pour ce type d'accrochage ou a une meilleure approche de mon problème, j'apprécierais l'aide.

Répondre

-1

Ce que vous avez décrit est fait avec un pilote de filtre de système de fichiers. Ce pilote intercepte les requêtes vers le système de fichiers et insère des informations supplémentaires, telles que celles qui indiquent au système les fichiers et les répertoires qui n'existent pas réellement sur le disque. Si les fichiers sont prédéfinis quelque part sur le disque, la demande peut être simplement redirigée vers le fichier ou le répertoire existant.

Le pilote de filtre de système de fichiers est un pilote en mode noyau, pas facile à implémenter. Vous pouvez utiliser un pilote pré-créé qui vous permet d'effectuer des tâches en mode utilisateur API, par exemple. notre CallbackFilter.