FSCTL_ALLOW_EXTENDED_DASD_IO IOCTL (winioctl.h)

向文件系统驱动程序发出信号,不要对分区读取或写入调用执行任何 I/O 边界检查。 相反,边界检查由设备驱动程序执行。

若要执行此操作,请使用以下参数调用 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 控制代码用于向文件系统驱动程序发出信号,不对使用指定句柄进行的读取或写入调用执行任何 I/O 边界检查。 FSCTL_ALLOW_EXTENDED_DASD_IO 允许访问隐藏扇区,该分区的一部分可能存在于分区的第一扇区(启动参数块)和分区的第一个有用扇区之间。 FSCTL_ALLOW_EXTENDED_DASD_IO 还允许访问丢失的群集,这些群集可能存在于最后一个有用的群集与分区的末尾之间。

此操作后发出的 I/O 请求将直接传递到设备驱动程序。 如果这些后续调用请求超出分区边界的数据,驱动程序会导致数据失败。

有关此操作的重叠 I/O 的影响,请参阅 DeviceIoControl的“备注”部分。

若要检索分区的句柄,请调用 CreateFile,并将 lpFileName 参数设置为以下形式的字符串:

\\.\X

其中,X 是驱动器号。

调用 CreateFile 的应用程序还必须在 CreateFiledwShareMode 参数中指定 FILE_SHARE_READFILE_SHARE_WRITE 标志。 有关详细信息,请参阅 createFile中的“磁盘设备”部分。

若要确定驱动器的分区结构并确定系统是否识别分区,请根据需要使用 IOCTL_DISK_GET_DRIVE_LAYOUT_EXIOCTL_DISK_GET_DRIVE_LAYOUT 控制代码。 有关单个分区的类似信息,请根据需要使用 IOCTL_DISK_GET_PARTITION_INFO_EXIOCTL_DISK_GET_PARTITION_INFO 控制代码。 若要确定群集的大小,请根据需要使用 GetDiskFreeSpaceExGetDiskFreeSpace 函数。

在 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

重叠的