CancelIo 関数

指定したファイルの呼び出し元スレッドによって発行されたすべての保留中の入出力 (I/O) 操作を取り消します。 関数は、他のスレッドがファイル ハンドルに対して発行する I/O 操作を取り消しません。

別のスレッドからの I/O 操作を取り消すには、 CancelIoEx 関数を使用します。

構文

BOOL WINAPI CancelIo(
  _In_ HANDLE hFile
);

パラメーター

hFile [in]

ファイルへのハンドル。

この関数は、このファイル ハンドルに対するすべての保留中の I/O 操作を取り消します。

戻り値

関数が成功すると、戻り値は 0 以外になります。 指定されたファイル ハンドルの呼び出し元スレッドによって発行されたすべての保留中の I/O 操作の取り消し操作が正常に要求されました。 スレッドは GetOverlappedResult 関数を使用して、I/O 操作自体がいつ完了したかを判断できます。

関数が失敗した場合、戻り値はゼロ (0) になります。 拡張エラー情報を取得するには、 GetLastError 関数を呼び出します。

解説

指定したファイル ハンドルに対して保留中の I/O 操作が進行中で、呼び出し元のスレッドによって発行された場合、 CancelIo 関数はそれらを取り消します。 CancelIo は ハンドルの未処理の I/O のみを取り消し、ハンドルの状態は変更しません。つまり、操作が正常に完了したか取り消されたかを把握できないため、ハンドルの状態に依存できません。

I/O 操作は、重複した I/O として発行する必要があります。 そうでない場合、スレッドが CancelIo 関数を呼び出せるように I/O 操作は戻りません。 FILE_FLAG_OVERLAPPEDで開かれないファイル ハンドルを使用して CancelIo 関数を呼び出しても何も行われません。

取り消されたすべての I/O 操作はエラー ERROR_OPERATION_ABORTEDで完了し、I/O 操作のすべての完了通知は正常に行われます。

Windows 8とWindows Server 2012では、この関数は次のテクノロジでサポートされています。

テクノロジ サポートされています
サーバー メッセージ ブロック (SMB) 3.0 プロトコル
はい
SMB 3.0 Transparent Failover (TFO)
はい
スケールアウト ファイル共有を含む SMB 3.0 (SO)
はい
クラスター共有ボリューム ファイル システム (CsvFS)
はい
Resilient File System (ReFS)
はい

必要条件

要件
サポートされている最小のクライアント
Windows XP [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー
Windows Server 2003 [デスクトップ アプリ |UWP アプリ]
Header
IoAPI.h (Windows.h を含む);
Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP の WinBase.h (Windows.h を含む)
ライブラリ
Kernel32.lib
[DLL]
Kernel32.dll

関連項目

CancelIoEx

CancelSynchronousIo

CreateFile

DeviceIoControl

ファイル管理の関数

LockFileEx

ReadDirectoryChangesW

ReadFile

ReadFileEx

同期と非同期の I/O

WriteFile

WriteFileEx