SHFileOperation намного медленнее в Windows 10 1709 - PullRequest
0 голосов
/ 27 апреля 2018

Мы обнаруживаем, что удаление папок с помощью SHFileOperation очень медленно в системах, которые были обновлены до 1709. Похоже, что что-то закралось в связи с приложениями Universal Windows, что вызывает это.

Этот код:

    sFileOp.wFunc = FO_DELETE;
    sFileOp.pFrom = buf;
    sFileOp.fFlags = FOF_SILENT|FOF_NOCONFIRMATION|FOF_NOERRORUI;

    if(SHFileOperation(&sFileOp))

передал путь типа «C: \ Jobs \ Job1» (да, с двойным нулевым окончанием) с небольшим количеством файлов в папке - скажем, 2 или 3 - работает в миллисекундах в Windows 7 и Windows 10 1511. Вкл. Windows 10 1709 занимает от 1 до 3 секунд.

В окне вывода Visual Studio 2013 мы видим 3 или 4 из этих сообщений после вызова SHFileOperation и до его возврата:

onecoreuap \ shell \ windows.storage \ sharedstoragesources \ util.cpp (2831) \ windows.storage.dll! 7650BF24: (абонент: 765D88E4) ReturnHr (1) tid (1bb0) 80070490 Элемент не найден.

Это приложение для Win32, x86, созданное на VS2013. Это происходит в выпуске, который мы выпускаем более 18 месяцев. Напомним, что версия работает, как и ожидалось, в 1511 и Windows 7, но слишком медленно в последних двух обновлениях Windows 10. Кажется, что мы каким-то образом запутались в DLL-библиотеках приложения Universal для Windows. Как мы этого избежать?

...