Bagikan melalui


Fungsi CancelIoEx (ioapiset.h)

Menandai operasi I/O yang luar biasa untuk handel file yang ditentukan. Fungsi ini hanya membatalkan operasi I/O dalam proses saat ini, terlepas dari utas mana yang membuat operasi I/O.

Sintaks

BOOL CancelIoEx(
  [in]           HANDLE       hFile,
  [in, optional] LPOVERLAPPED lpOverlapped
);

Parameter

[in] hFile

Handel ke file.

[in, optional] lpOverlapped

Penunjuk ke struktur data TUMPANG TINDIH yang berisi data yang digunakan untuk I/O asinkron.

Jika parameter ini NULL, semua permintaan I/O untuk parameter hFile dibatalkan.

Jika parameter ini bukan NULL, hanya permintaan I/O tertentu yang dikeluarkan untuk file dengan struktur tumpang tindih lpOverlap yang ditentukan yang ditandai sebagai dibatalkan, yang berarti Anda dapat membatalkan satu atau beberapa permintaan, sementara fungsi CancelIo membatalkan semua permintaan yang beredar pada handel file.

Mengembalikan nilai

Jika fungsi berhasil, nilai yang dikembalikan bukan nol. Operasi pembatalan untuk semua operasi I/O yang tertunda yang dikeluarkan oleh proses panggilan untuk handel file yang ditentukan berhasil diminta. Aplikasi tidak boleh membebaskan atau menggunakan kembali struktur TUMPANG TINDIH yang terkait dengan operasi I/O yang dibatalkan hingga selesai. Utas dapat menggunakan fungsi GetOverlappedResult untuk menentukan kapan operasi I/O itu sendiri telah selesai.

Jika fungsi gagal, nilai yang dikembalikan adalah 0 (nol). Untuk mendapatkan informasi kesalahan yang diperluas, panggil fungsi GetLastError .

Jika fungsi ini tidak dapat menemukan permintaan untuk dibatalkan, nilai yang dikembalikan adalah 0 (nol), dan GetLastError mengembalikan ERROR_NOT_FOUND.

Keterangan

Fungsi CancelIoEx memungkinkan Anda membatalkan permintaan di utas selain utas panggilan. Fungsi CancelIo hanya membatalkan permintaan di utas yang sama yang disebut fungsi CancelIo . CancelIoEx hanya membatalkan I/O yang beredar pada handel, itu tidak mengubah status handel; ini berarti Anda tidak dapat mengandalkan status handel karena Anda tidak dapat mengetahui apakah operasi berhasil diselesaikan atau dibatalkan.

Jika ada operasi I/O tertunda yang sedang berlangsung untuk handel file yang ditentukan, fungsi CancelIoEx menandainya untuk pembatalan. Sebagian besar jenis operasi dapat segera dibatalkan; operasi lain dapat terus menuju penyelesaian sebelum benar-benar dibatalkan dan pemanggil diberi tahu. Fungsi CancelIoEx tidak menunggu semua operasi yang dibatalkan selesai.

Jika handel file dikaitkan dengan port penyelesaian, paket penyelesaian I/O tidak diantrekan ke port jika operasi sinkron berhasil dibatalkan. Untuk operasi asinkron yang masih tertunda, operasi pembatalan akan mengantre paket penyelesaian I/O.

Operasi yang dibatalkan diselesaikan dengan salah satu dari tiga status; Anda harus memeriksa status penyelesaian untuk menentukan status penyelesaian. Tiga status tersebut adalah:

  • Operasi selesai secara normal. Ini dapat terjadi bahkan jika operasi dibatalkan, karena permintaan pembatalan mungkin belum dikirimkan pada waktunya untuk membatalkan operasi.
  • Operasi dibatalkan. Fungsi GetLastError mengembalikan ERROR_OPERATION_ABORTED.
  • Operasi gagal dengan kesalahan lain. Fungsi GetLastError mengembalikan kode kesalahan yang relevan.
Di Windows 8 dan Windows Server 2012, fungsi ini didukung oleh teknologi berikut.
Teknologi Didukung
Protokol Server Message Block (SMB) 3.0 Ya
SMB 3.0 Transparent Failover (TFO) Ya
SMB 3.0 dengan Berbagi File Peluasan Skala (SO) Ya
Sistem File Volume Bersama Kluster (CsvFS) Ya
Sistem File Tangguh (ReFS) Ya

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2008 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header ioapiset.h (termasuk Windows.h)
Pustaka Kernel32.lib
DLL Kernel32.dll

Lihat juga

CancelIo

CancelSynchronousIo

Membatalkan Operasi I/O Tertunda

Fungsi Manajemen File

I/O Sinkron dan Asinkron