Поделиться через


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 в параметре dwShareModeCreateFile. Дополнительные сведения см. в разделе "Устройства с дисками" 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 Нет
Отработка отказа SMB 3.0 (TFO) Нет
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

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