FSCTL_MOVE_FILE IOCTL (winioctl.h)
Перемещает один или несколько виртуальных кластеров файла из одного логического кластера в другой в пределах одного тома. Эта операция используется во время дефрагментации.
Для выполнения этой операции вызовите функцию DeviceIoControl со следующими параметрами.
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to volume
FSCTL_MOVE_FILE, // dwIoControlCode
(LPVOID) lpInBuffer, // MOVE_FILE_DATA structure
(DWORD) nInBufferSize, // size of input buffer
NULL, // lpOutBuffer
0, // nOutBufferSize
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);
Комментарии
Код элемента управления FSCTL_MOVE_FILE перемещает один или несколько виртуальных кластеров файла из одного логического кластера в другой в пределах одного тома. Если перемещаемый файл является разреженным или сжатым, степень детализации перемещения составляет 16 кластеров; В противном случае степень детализации — один кластер.
Чтобы пометить открытый файл так, чтобы он не дефрагментировался, вызовите функцию DeviceIoControl с FSCTL_MARK_HANDLE кодом управления с MARK_HANDLE_PROTECT_CLUSTERS в элементе HandleInfoструктуры MARK_HANDLE_INFO , переданной в параметре lpInBuffer .
Обратите внимание, что точечный рисунок, возвращаемый функцией DeviceIoControl с кодом элемента управления FSCTL_GET_VOLUME_BITMAP , представляет точку во времени и может быть неправильным сразу после прочтения, если в томе есть действие записи. Таким образом, можно попытаться переместить кластер в выделенный кластер, несмотря на недавнее растровое изображение, указывающее, что кластер не выделен. Программы , использующие FSCTL_MOVE_FILE , должны быть подготовлены к такой возможности.
Сведения о последствиях перекрывающихся операций ввода-вывода для этой операции см. в разделе Примечания статьи DeviceIoControl .
Список файлов, потоков и типов потоков, поддерживаемых кодом элемента управления FSCTL_MOVE_FILE , см. в разделе Файлы, потоки и типы потоков, поддерживаемые для дефрагментации статьи Дефрагментация файлов .
В Windows 8 и Windows Server 2012 этот код поддерживается следующими технологиями.
Технология | Поддерживается |
---|---|
Протокол SMB 3.0 | Нет |
Прозрачная отработка отказа (TFO) SMB 3.0 | Нет |
SMB 3.0 с масштабируемыми общими папками (SO) | Нет |
Файловая система общего тома кластера (CSVFS) | Да |
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Верхняя часть | winioctl.h (включая Windows.h) |