Localizando um conjunto de nomes de arquivos rapidamente em volumes NTFS, idealmente por meio da MFT

Estou escrevendo uma ferramenta que encontra arquivos perdidos de uma biblioteca do iTunes, para Mac e Windows. No Mac, posso encontrar rapidamente arquivos nomeando usando a maravilhosa função "CatalogSearch".

No Windows, no entanto, parece não haver API do sistema operacional para pesquisar pelo nome do arquivo (ou existe?).

Depois de pesquisar no Google, aprendi que existem ferramentas (comoTFind, Tudo) que leem o diretório NTFS diretamente e o digitalizam para encontrar arquivos por nome.

Eu gostaria de fazer o mesmo, mas sem ter que começar do zero (embora eu tenha escrito várias ferramentas de disco no passado, nunca tive energia para cavar no NTFS).

Gostaria de saber se existem bibliotecas prontas por aí, possivelmente como uma .dll, que me dariam esse recurso de pesquisa: Passe um nome de arquivo, volte ao seu caminho.

Como alternativa, e o serviço de indexação do Windows? Pelo menos quando tentei isso em um sistema XP Home instalado recentemente, oProcurar operação sob oComeçar O menu realmente varreria todos os diretórios, o que sugere que ele não possui um banco de dados completo. Como eu não sou usuário de Windows, me pergunto por que isso não está funcionando.

No final, ocompleto A solução de que preciso é: tenho uma lista de nomes de arquivos para localizar e código que pesquisa todo o disco (ou usa um banco de dados) para obter todos os resultados de uma só vez. Por exemplo, a pesquisa não deve iniciar uma nova verificação completa para todos os arquivos que estou procurando. É por isso que acho que a maneira MFT seria ideal, pois poderia iterar rapidamente todos os nomes, comparando cada um deles à minha lista.

questionAnswers(1)

yourAnswerToTheQuestion