Das mit den verschiedenen Listen habe ich noch nicht so ganz verstanden, jedenfalls finde ich die schnellste Methode es über PItemIdList zu Lösen. Es ist gleichzeitig nicht die einfachste Möglichkeit da mehr Code benötigt wird.
In der Paxis kannst Du es testen indem Du mal TotalCommander (Shareware Datei-Manager) installierst und in ein Verzeichnis mit Tausenden von Dateien lotst.
Gegenüber FindFirst() ist das der Ferrari
In Kombination mit einem Verzeichnis-Monitor wirst du eventuell gar keine zwei Listen benötigen sondern einfach PIDLs sich selbst aktualisieren lassen.
Es gab mal eine VirtualShellView Demo von Borland um sich damit anzufreunden.
Vielleicht liege ich auch total daneben, dann tut es mir leid.