次の方法で共有


NtCancelIoFile 関数

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

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

Note

この関数は、 CancelIo Win32 関数と同等のユーザー モードです。

構文

BOOL WINAPI NtCancelIoFile(
  _In_ HANDLE hFile
);

パラメーター

hFile [in]

ファイルへのハンドル。

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

戻り値

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

関数が失敗した場合は、0 を返します。 エラーの詳細情報を得るには、GetLastError 関数を呼び出します。

解説

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

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

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

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

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

必要条件

要件
ヘッダー
ntioapi.h
ライブラリ
ntdll.lib

関連項目

CancelIoEx