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 通訊協定 No
SMB 3.0 透明故障轉移 (TFO) No
具有向外延展檔案共用的SMB 3.0 (SO) No
叢集共用磁碟區文件系統 (CsvFS) Yes
彈性檔案系統 (ReFS) Yes

規格需求

需求
最低支援的用戶端 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

重疊