CancelIo 函式 (ioapiset.h)

取消所指定檔案呼叫線程所發出的所有擱置輸入和輸出 (I/O) 作業。 函式不會取消其他線程針對檔句柄發出的 I/O 作業。

若要取消另一個線程的 I/O 作業,請使用 CancelIoEx 函 式。

語法

BOOL CancelIo(
  [in] HANDLE hFile
);

參數

[in] hFile

檔案的句柄。

函式會取消此檔句柄的所有擱置 I/O 作業。

傳回值

如果函式成功,則傳回非零的值。 已成功要求指定之檔句柄之呼叫線程所發出之所有擱置 I/O 作業的取消作業。 線程可以使用 GetOverlappedResult 函式來判斷 I/O 作業本身何時完成。

如果函式失敗,傳回值為零, (0) 。 若要取得擴充的錯誤資訊,請呼叫 GetLastError 函 式。

備註

如果指定的檔句柄有任何擱置的 I/O 作業正在進行中,而且由呼叫線程發出, CancelIo 函式會取消它們。 CancelIo 只會取消句柄上的未處理 I/O,它不會變更句柄的狀態;這表示您無法依賴句柄的狀態,因為您無法知道作業是否已順利完成或取消。

I/O 作業必須發出為重疊的 I/O。 如果不是,I/O 作業不會傳回以允許線程呼叫 CancelIo 函式。 使用未以 FILE_FLAG_OVERLAPPED 開啟的檔案句柄呼叫 CancelIo 函式不會執行任何動作。

所有已取消且錯誤 ERROR_OPERATION_ABORTED完成的 I/O 作業,I/O 作業的所有完成通知都會正常發生。

在 Windows 8 和 Windows Server 2012 中,下列技術支援此函式。

技術 支援
伺服器消息塊 (SMB) 3.0 通訊協定 Yes
SMB 3.0 透明故障轉移 (TFO) Yes
具有向外延展檔案共用的SMB 3.0 (SO) Yes
叢集共用磁碟區文件系統 (CsvFS) Yes
彈性檔案系統 (ReFS) Yes

規格需求

需求
最低支援的用戶端 Windows XP [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2003 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 ioapiset.h (包含 Windows.h)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

CancelIoEx

CancelSynchronousIo

CreateFile

DeviceIoControl

檔案管理功能

LockFileEx

ReadDirectoryChangesW

ReadFile

ReadFileEx

同步和異步 I/O

WriteFile

WriteFileEx