2010-12-13 100 views
2

À des fins de test et de développement, il serait utile de simuler d'une façon ou d'une autre des erreurs d'accès (parasites) aux fichiers locaux. Par exemple, même si une application a correctement ouvert un fichier avec les indicateurs de partage restrictifs appropriés, il peut toujours arriver qu'une tentative d'accès au fichier (via l'une des fonctions de l'API Win32 ou votre framework favori, qui appelle simplement l'un des les fonctions de l'API Win32) peuvent échouer.Simulation d'erreurs de fichier (par exemple ERROR_ACCESS_DENIED) sous Windows

Le seul exemple que j'ai pu retrouver était le scanner de virus sur une machine, mais je suppose qu'il pourrait y avoir d'autres raisons. (En this question's comment, Luke mentions quelque chose sur « les pilotes de filtre du système de fichiers ».)

FWIW, je connais quelques possibilités de « simuler » des problèmes de fichiers, que je ne pas considérons comme de bonnes solutions, que ce soit parce qu'ils ont besoin de beaucoup de travail manuel ou parce qu'ils ne correspondent pas à chaque application/fichier:

  • Placez un fichier sur un lecteur réseau ou un périphérique de stockage amovible - de cette façon vous pouvez simplement gâcher le dispositif (unplug, disque plein, ...).
  • Ouvrez le processus d'application au Process Explorer et fermez la poignée du fichier que vous souhaitez tester.

La question est vraiment s'il y a des ((semi) automatique) des outils qui peuvent gâcher l'accès aux fichiers (sur un lecteur NTFS), même si une application a déjà ouvert un fichier avec approprié (pour le app) drapeaux de partage.

+1

Je ne connais pas ces outils prêts à l'emploi, mais en utilisant un pilote de système de fichiers virtuel ou un pilote de filtre de système de fichiers, vous pouvez produire un tel comportement. Nos produits vous permettent de construire un tel outil sans passer en mode noyau. –

Répondre

1

Holodeck est censé autoriser l'accrochage à l'API Win32, ce qui vous permettrait de manipuler les codes de retour nécessaires pour l'injection de défaut.

Si votre ensemble d'API est bien défini, vous pouvez probablement le faire vous-même en utilisant l'approche Importer table d'adresses décrite here.