Encontrar un conjunto de nombres de archivo rápidamente en volúmenes NTFS, idealmente a través de su MFT

Estoy escribiendo una herramienta que encuentra archivos perdidos de una biblioteca de iTunes, tanto para Mac como para Windows. En la Mac, puedo encontrar archivos rápidamente nombrando usando la maravillosa función "Búsqueda de catálogos".

En Windows, sin embargo, parece que no hay una API del sistema operativo para buscar por nombre de archivo (¿o existe?).

Después de buscar en Google, aprendí que hay herramientas (comoTFind, Todo) que leen el directorio NTFS directamente y lo escanean para buscar archivos por nombre.

Me gustaría hacer lo mismo, pero sin tener que comenzar desde cero (aunque he escrito bastantes herramientas de disco en el pasado, nunca tuve la energía para excavar en NTFS).

Me pregunto si hay librerías ya preparadas, posiblemente como .dll, que me darían esta función de búsqueda: pasar un nombre de archivo, volver a su ruta.

Alternativamente, ¿qué pasa con el servicio de indexación de Windows? Al menos cuando probé esto en un sistema XP Home recientemente instalado, elBuscar operación bajo elcomienzo El menú realmente escanearía todos los directorios, lo que sugiere que no tiene una base de datos completa. Como no soy un usuario de Windows en absoluto, me pregunto por qué esto no funciona.

Al final, elcompletar La solución que necesito es: tengo una lista de nombres de archivos para encontrar, y necesito un código que busque en todo el disco (o use una base de datos) para obtener todos los resultados de una sola vez. Por ejemplo, la búsqueda no debería comenzar un nuevo análisis completo para cada archivo que estoy buscando. Es por eso que creo que la forma MFT sería óptima, ya que podría iterar rápidamente sobre todos los nombres, comparando cada uno con mi lista.

Respuestas a la pregunta(1)

Su respuesta a la pregunta