DeleteFile (kernel32.dll) против DeleteItem (shell32.dll)

В чем разница между двумя функциями?

-1

Решение

  • DeleteFile это низкоуровневая функция, которая удаляет файлы только в файловых системах и общих файловых ресурсах, поддерживаемых Windows.

  • IFileOperation::DeleteItem удаляет элементы в пространство имен оболочки.

DeleteItem теоретически может использоваться для удаления элементов панели управления, файлов / папок ftp и всего остального, что находится в пространстве имен оболочки и имеет SFGAO_CANDELETE задавать. Если IShellItem передается в DeleteItem файл в обычной файловой системе, то DeleteFile в конечном итоге будет использоваться для удаления файла.

Модель пространства имен оболочки существует со времен Windows 95 (IShellFolder и друзья), но IFileOperation существует только в Vista и более поздних версиях и является частью нового механизма копирования оболочки, добавленного в эти системы.

1

Другие решения

DeleteFile является более старым компонентом WinAPI и, как правило, больше поддерживается в старых системах.

IFileOperation :: DeleteItem — более новый метод (возможно, вызывающий DeleteFile в нисходящем направлении), используемый для интеграции с другой экосистемой API, чем стандартный WinAPI.

База IFileOperation обладает большей гибкостью и объектно-ориентированным дизайном, чем DeleteFile (что является скорее «атомарной» операцией). С точки зрения удаления файла, они по сути поведенческие.

0

IFileOperation :: DeleteItem Позволяет дать отзыв и ход выполнения операции. Пока DeleteFile не дает обратной связи, только результат операции.

0
По вопросам рекламы [email protected]