J’utilise actuellement FindFirstFile, API FindNextFile pour effectuer une itération récursive dans les répertoires pour rechercher des fichiers en fonction d’un critère donné. J’ai remarqué que la commande “dir / s” donne de meilleures performances que mon programme. J’ai essayé de vérifier les événements dans le moniteur de processus et il semble que la commande cmd.exe / dir interroge directement le pilote de périphérique de disque. Est-il possible de réaliser quelque chose de similaire avec DeviceIOControl ()? Je suis très nouveau pour les pilotes de périphériques, mais pas pour la programmation. Joindre une sortie procmon pour référence:
Cordialement,
Vous pouvez appeler directement ZwQueryDirectoryFile . Aller plus loin au niveau du pilote nécessiterait l’envoi d’un tas de IRP et serait probablement exagéré.
Utilisez FindFirstFile
et FindNextFile
. C’est l’API, l’utilisation directe de DeviceIOControl
est soit un désordre, soit impossible (ne sait pas exactement).
Avez-vous essayé FindFirstFileEx
et FIND_FIRST_EX_LARGE_FETCH
indicateurs FindExInfoBasic
et FindExInfoBasic
?
“dir / s” utilise FindFirst / Next. Il ne fait pas de magie spéciale pour énumérer les fichiers.
QueryDirectory semble être la façon dont Procmon expose ce que FindFirst / Next fait pour obtenir ses données du système de fichiers.
http://ntfs-search.sourceforge.net/
Ça marche bien. Et plus vite
Il ouvre un volume et parsing directement.
Mais cela ne fonctionne que sur NTFS.
Profil de votre application, votre goulot d’étranglement est susceptible d’être ailleurs. Certaines de ces options sont comme sortir un fusil de chasse pour tirer une mouche …
-scott