Bagikan melalui


Fungsi BindIoCompletionCallback (winbase.h)

Mengaitkan port penyelesaian I/O yang dimiliki oleh kumpulan utas dengan handel file yang ditentukan. Setelah menyelesaikan permintaan I/O yang melibatkan file ini, utas pekerja non-I/O akan menjalankan fungsi panggilan balik yang ditentukan.

Sintaks

BOOL BindIoCompletionCallback(
  [in] HANDLE                          FileHandle,
  [in] LPOVERLAPPED_COMPLETION_ROUTINE Function,
  [in] ULONG                           Flags
);

Parameter

[in] FileHandle

Handel ke file yang dibuka untuk penyelesaian I/O yang tumpang tindih. Handel ini dikembalikan oleh fungsi CreateFile , dengan bendera FILE_FLAG_OVERLAPPED .

[in] Function

Penunjuk ke fungsi panggilan balik yang akan dijalankan dalam utas pekerja non-I/O saat operasi I/O selesai. Fungsi panggilan balik ini tidak boleh memanggil fungsi TerminateThread .

Untuk informasi selengkapnya tentang rutinitas penyelesaian, lihat FileIOCompletionRoutine.

[in] Flags

Parameter ini harus nol.

Mengembalikan nilai

Jika fungsi berhasil, nilai yang dikembalikan bukan nol.

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

Keterangan

Fungsi panggilan balik mungkin tidak dijalankan jika proses mengeluarkan permintaan asinkron pada file yang ditentukan oleh parameter FileHandle tetapi permintaan segera kembali dengan kode kesalahan selain ERROR_IO_PENDING.

Pastikan bahwa utas yang memulai permintaan I/O asinkron tidak berakhir sebelum permintaan selesai. Selain itu, jika fungsi dalam DLL diantrekan ke utas pekerja, pastikan bahwa fungsi di DLL telah menyelesaikan eksekusi sebelum DLL dibongkar.

Kumpulan utas mempertahankan port penyelesaian I/O. Saat Anda memanggil BindIoCompletionCallback, ini mengaitkan file yang ditentukan dengan port penyelesaian I/O kumpulan utas. Permintaan asinkron pada objek file tersebut akan selesai dengan memposting ke port penyelesaian, di mana permintaan tersebut akan diambil oleh utas pekerja kumpulan utas. Untuk panggilan balik yang harus mengeluarkan permintaan I/O yang selesai sebagai panggilan prosedur asinkron, kumpulan utas menyediakan kumpulan pekerja I/O. Utas pekerja I/O tidak menunggu pada port penyelesaian; mereka tidur dalam keadaan tunggu yang dapat diperingatkan sehingga paket permintaan I/O yang selesai dapat membangunkannya. Kedua jenis utas pekerja memeriksa apakah ada I/O yang tertunda pada mereka dan jika ada, mereka tidak keluar. Untuk informasi selengkapnya, lihat Panggilan Prosedur Asinkron.

Untuk mengkompilasi aplikasi yang menggunakan fungsi ini, tentukan _WIN32_WINNT sebagai 0x0500 atau yang lebih baru. Untuk informasi selengkapnya, lihat Menggunakan Header Windows.

Persyaratan

   
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header winbase.h (termasuk Windows.h)
Pustaka Kernel32.lib
DLL Kernel32.dll

Lihat juga

FileIOCompletionRoutine

Fungsi Proses dan Utas

Pengumpulan Utas