У меня есть код, который перечисляет папку «Избранное» (рекурсивно) с помощью API оболочки.Я использую функцию GetAttributesOf
для получения атрибутов каждого найденного объекта.
Поскольку я никогда не продвигаюсь вверх, я ожидаю, что все элементы, с которыми я столкнусь, будут объектами файловой системы.Вероятно, это не относится ко всем подкаталогам, но я вполне уверен, что это верно и для рассматриваемого подкаталога.
Несмотря на мою уверенность, я проверяю, что атрибуты включают SFGAO_FILESYSTEM
.Если они этого не делают, то я регистрирую сообщение и пропускаю элемент, потому что нет надежды на то, что я смогу выполнить свою работу.Я ожидал, что никогда не увижу запись в журнал или не пропущу элемент, но все равно вставляю подтверждение, потому что так я катаюсь.
Несколько недель спустя мой превосходный инженер по обеспечению качества говорит мне, что он видит, что моя программа плохо себя ведетчто касается конкретного элемента и времени его выполнения, он видит в журнале, что для элемента не установлен бит файловой системы, и его необходимо было пропустить.У нас есть веские основания полагать, что файл - это файл.
С тех пор, как я изначально написал этот вопрос, мы видели случаи, когда несколько элементов в перечислении утверждали, что они не являются элементами файловой системы.Проблема, кажется, длится очень короткое время, но достаточно долго, чтобы испортить флаги целых полдюжины элементов.
Когда файл не является объектом файловой системы?