Раймонд Чен из Microsoft написал пост, который, вероятно, относится к этому: Вычисление размера каталога - это больше, чем просто добавление размеров файла . По сути, он объясняет, что такая информация, как размер каталога, не может храниться в записи каталога, потому что разные пользователи могут иметь разные разрешения, что может сделать некоторые файлы невидимыми для них. Поэтому единственный способ получить размер, который должен видеть пользователь, - это рассчитать его по запросу пользователя.
В вашем случае ответ, вероятно, исходит из того же рассуждения. Список каталогов, доступных для вашего приложения, может быть определен только тогда, когда ваше приложение запрашивает его, поскольку его представление корневого каталога может отличаться от другого приложения, работающего с другими учетными данными. Почему Windows хранит каталоги вместе с файлами, я не знаю, но это определенно.
Поскольку Win32 находится настолько близко к файловой системе в пользовательском режиме, я бы избегал любых решений более высокого уровня, таких как .NET, поскольку это могло бы только упростить интерфейс. Водитель может работать быстрее, но это выходит за рамки моих знаний.