FSCTL_ALLOW_EXTENDED_DASD_IO IOCTL (winioctl.h)

Сигнализирует драйверу файловой системы не выполнять никаких проверок границ ввода-вывода при вызовах чтения или записи секций. Вместо этого проверки границ выполняются драйвером устройства.

Для выполнения этой операции вызовите функцию DeviceIoControl со следующими параметрами.

C++
BOOL DeviceIoControl(
  (HANDLE) hDevice,              // handle to device
  FSCTL_ALLOW_EXTENDED_DASD_IO,  // dwIoControlCodeNULL,                          // lpInBuffer0,                             // nInBufferSizeNULL,                          // lpOutBuffer0,                             // nOutBufferSize(LPDWORD) lpBytesReturned,     // number of bytes returned
  (LPOVERLAPPED) lpOverlapped    // OVERLAPPED structure
);

Комментарии

Вызов с использованием кода управления FSCTL_ALLOW_EXTENDED_DASD_IO следует использовать только с большой осторожностью программистов, знакомых с базовой структурой жесткого диска и файловой системы. Неправильное использование или неточная проверка последующих операций записи в секцию может привести к повреждению данных в секции или разрушению всей секции.

Код элемента управления FSCTL_ALLOW_EXTENDED_DASD_IO используется для того, чтобы драйвер файловой системы не выполнял никаких проверок границ ввода-вывода при вызовах чтения или записи, выполняемых с помощью указанного дескриптора. FSCTL_ALLOW_EXTENDED_DASD_IO разрешает доступ к скрытым секторам, которые могут существовать между первым сектором секции (блоком параметров загрузки) и первым полезным сектором секции. FSCTL_ALLOW_EXTENDED_DASD_IO также разрешает доступ к потерянным кластерам, которые могут существовать между последним полезным кластером и концом секции.

Запросы ввода-вывода, выданные после этой операции, передаются непосредственно драйверу устройства. Если последующие вызовы запрашивают данные за пределами секции, драйвер приводит к сбою.

Сведения о последствиях перекрывающихся операций ввода-вывода для этой операции см. в разделе Примечания статьи DeviceIoControl.

Чтобы получить дескриптор для секции, вызовите CreateFile с параметром lpFileName , для которого задана строка следующей формы:

\.\X:

где X — буква диска.

Приложение, вызывающее CreateFile , также должно указать флаги FILE_SHARE_READ и FILE_SHARE_WRITE в параметре dwShareModeэлемента CreateFile. Дополнительные сведения см. в разделе Disk Devices статьи CreateFile.

Чтобы определить структуру секционирования диска и определить, распознает ли система секцию, используйте соответствующий код управления IOCTL_DISK_GET_DRIVE_LAYOUT_EX или IOCTL_DISK_GET_DRIVE_LAYOUT . Для получения аналогичных сведений об одной секции используйте код элемента управления IOCTL_DISK_GET_PARTITION_INFO_EX или IOCTL_DISK_GET_PARTITION_INFO соответствующим образом. Чтобы определить размер кластера, используйте функцию GetDiskFreeSpaceEx или GetDiskFreeSpace соответствующим образом.

В Windows Server 2012 эта функция поддерживается следующими технологиями.

Технология Поддерживается
Протокол SMB 3.0 Нет
Прозрачная отработка отказа (TFO) SMB 3.0 Нет
SMB 3.0 с масштабируемыми общими папками (SO) Нет
Файловая система общего тома кластера (CSVFS) Да
Восстанавливаемая файловая система (ReFS) Да

Требования

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

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

CreateFile

DeviceIoControl

Управляющие коды для управления файлами

GetDiskFreeSpace

GetDiskFreeSpaceEx

IOCTL_DISK_GET_DRIVE_LAYOUT

IOCTL_DISK_GET_DRIVE_LAYOUT_EX

IOCTL_DISK_GET_PARTITION_INFO

IOCTL_DISK_GET_PARTITION_INFO_EX

ПЕРЕКРЫВАЮЩИХСЯ