структура MOVE_FILE_DATA (winioctl.h)

Содержит входные данные для кода элемента управления FSCTL_MOVE_FILE .

Синтаксис

typedef struct {
  HANDLE        FileHandle;
  LARGE_INTEGER StartingVcn;
  LARGE_INTEGER StartingLcn;
  DWORD         ClusterCount;
} MOVE_FILE_DATA, *PMOVE_FILE_DATA;

Члены

FileHandle

Дескриптор перемещаемого файла.

Чтобы получить дескриптор файла, используйте createFile.

Если файл зашифрован, дескриптор должен иметь право доступа FILE_READ_DATA, FILE_WRITE_DATA, FILE_APPEND_DATA или FILE_EXECUTE . Дополнительные сведения см. в разделе Безопасность файлов и права доступа.

StartingVcn

VCN (номер кластера относительно начала файла) первого перемещаемого кластера.

StartingLcn

LCN (номер кластера на томе), в который необходимо переместить VCN.

ClusterCount

Количество перемещенных кластеров.

Комментарии

Чтобы получить данные для заполнения этой структуры, используйте функцию DeviceIoControl с кодом элемента управления FSCTL_GET_RETRIEVAL_POINTERS .

Первый кластер каталога на томе файловой системы FAT не может быть перемещен.

По возможности перемещайте данные в блоках, выровненных друг относительно друга с шагом в 16 килобайтов (КБ). Это снижает затраты на копирование при записи при включении теневых копий, так как пространство теневого копирования увеличивается, а производительность снижается при выполнении следующих условий:

  • Размер блока запроса на перемещение не превышает 16 КБ.
  • Разница перемещения не увеличивается в 16 КБ.
Разностное перемещение — это количество байтов между началом блока источника и началом целевого блока. Иными словами, блок, начинающийся со смещения X (на диске), можно переместить в начальное смещение Y, если абсолютное значение X минус Y равно 16 КБ. Таким образом, при наличии кластеров размером 4 КБ переход с кластера 3 на кластер 27 будет оптимизирован, а переход с кластера 18 на кластер 24 — нет. Обратите внимание, что mod(3,4) = 3 = mod(27,4). Выбран вариант 4, так как четыре кластера по 4 КБ эквивалентны 16 КБ. Таким образом, том, отформатированный до размера кластера 16 КБ, приведет к оптимизации всех файлов перемещения.

Дополнительные сведения о теневых копиях см. в разделе Служба теневого копирования томов.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Верхняя часть winioctl.h (включая Windows.h)

См. также раздел

Дефрагментация файлов

FSCTL_GET_RETRIEVAL_POINTERS

FSCTL_MOVE_FILE

GetFileAttributes

GetFileAttributesEx

GetFileInformationByHandle