Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Mengambil beberapa entri port penyelesaian secara bersamaan. Ini menunggu operasi I/O yang tertunda yang terkait dengan port penyelesaian yang ditentukan untuk diselesaikan.
Untuk menghapus antrean paket penyelesaian I/O satu per satu, gunakan fungsi GetQueuedCompletionStatus .
Sintaksis
BOOL WINAPI GetQueuedCompletionStatusEx(
_In_ HANDLE CompletionPort,
_Out_ LPOVERLAPPED_ENTRY lpCompletionPortEntries,
_In_ ULONG ulCount,
_Out_ PULONG ulNumEntriesRemoved,
_In_ DWORD dwMilliseconds,
_In_ BOOL fAlertable
);
Parameter-parameternya
Pelabuhan Penyelesaian[in]
Pegangan ke port penyelesaian. Untuk membuat port penyelesaian, gunakan fungsi CreateIoCompletionPort .
lpCompletionPortEntries[out]
Pada input, menunjuk ke array struktur OVERLAPPED_ENTRY yang telah dialokasikan sebelumnya.
Pada output, menerima array struktur OVERLAPPED_ENTRY yang menampung entri. Jumlah elemen array disediakan oleh ulNumEntriesRemoved.
Jumlah byte yang ditransfer selama setiap I/O, kunci penyelesaian yang menunjukkan pada file mana setiap I/O terjadi, dan alamat struktur tumpang tindih yang digunakan di setiap I/O asli semuanya dikembalikan dalam array lpCompletionPortEntrys .
ulHitung[in]
Jumlah maksimum entri yang akan dihapus.
ulNumEntriesDihapus[out]
Penunjuk ke variabel yang menerima jumlah entri yang benar-benar dihapus.
dwMilidetik[in]
Jumlah milidetik yang bersedia menunggu pemanggil hingga paket penyelesaian muncul di port penyelesaian. Jika paket penyelesaian tidak muncul dalam waktu yang ditentukan, waktu fungsi habis dan mengembalikan FALSE.
Jika dwMilliseconds adalah INFINITE (0xFFFFFFFF), fungsi tidak akan pernah habis. Jika dwMilliseconds adalah nol dan tidak ada operasi I/O untuk dihapus antrian, fungsi akan segera habis.
Windows XP, Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 dan Windows Server 2008 R2: Nilai dwMilliseconds memang mencakup waktu yang dihabiskan dalam status daya rendah. Misalnya, batas waktu terus menghitung mundur saat komputer sedang tidur.
Windows 8, Windows Server 2012, Windows 8.1, Windows Server 2012 R2, Windows 10 dan Windows Server 2016: Nilai dwMilliseconds tidak termasuk waktu yang dihabiskan dalam status daya rendah. Misalnya, batas waktu tidak terus menghitung mundur saat komputer sedang tidur.
fDapat diwaspadakan[in]
Jika parameter ini adalah FALSE, fungsi tidak kembali sampai periode waktu habis berlalu atau entri diambil.
Jika parameternya dan TRUE tidak ada entri yang tersedia, fungsi akan melakukan penantian yang dapat diperingatkan. Utas kembali ketika sistem mengantri rutinitas penyelesaian I/O atau APC ke utas dan utas menjalankan fungsi.
Rutinitas penyelesaian diantri ketika fungsi ReadFileEx atau WriteFileEx di mana fungsi tersebut ditentukan telah selesai, dan utas pemanggil adalah utas yang memulai operasi. APC diantrek saat Anda memanggil QueueUserAPC.
Mengembalikan nilai
Mengembalikan bukan nol TRUE jika berhasil atau nol FALSE sebaliknya.
Untuk mendapatkan informasi kesalahan yang diperluas, panggil GetLastError.
Komentar
Fungsi ini mengaitkan utas dengan port penyelesaian yang ditentukan. Utas dapat dikaitkan dengan paling banyak satu port penyelesaian.
Fungsi ini kembali TRUE ketika setidaknya satu I/O yang tertunda selesai, tetapi ada kemungkinan bahwa satu atau lebih operasi I/O gagal. Perhatikan bahwa terserah pengguna fungsi ini untuk memeriksa daftar entri yang dikembalikan dalam parameter lpCompletionPortEntries untuk menentukan mana yang sesuai dengan kemungkinan operasi I/O yang gagal dengan melihat status yang terkandung dalam anggota lpOverlapped di setiap OVERLAPPED_ENTRY.
Fungsi ini kembali FALSE ketika tidak ada operasi I/O yang dihapus. Ini biasanya berarti bahwa terjadi kesalahan saat memproses parameter ke panggilan ini, atau bahwa pegangan CompletionPort ditutup atau tidak valid.
Fungsi GetLastError memberikan informasi kesalahan yang diperluas.
Jika panggilan ke GetQueuedCompletionStatusEx gagal karena pegangan yang terkait dengannya ditutup, fungsi akan kembali FALSE dan GetLastError akan mengembalikan ERROR_ABANDONED_WAIT_0.
Aplikasi server mungkin memiliki beberapa utas yang memanggil fungsi GetQueuedCompletionStatusEx untuk port penyelesaian yang sama. Saat operasi I/O selesai, mereka diantri ke port ini dalam urutan first-in-first-out. Jika utas secara aktif menunggu panggilan ini, satu atau beberapa permintaan antrean menyelesaikan panggilan untuk utas tersebut saja.
Untuk informasi selengkapnya tentang teori port penyelesaian I/O, penggunaan, dan fungsi terkait, lihat Port Penyelesaian I/O.
Di Windows 8 dan Windows Server 2012, fungsi ini didukung oleh teknologi berikut.
| Teknologi | Didukung |
|---|---|
| Protokol Server Message Block (SMB) 3.0 | Ya |
| Failover Transparan (TFO) SMB 3.0 | Ya |
| SMB 3.0 dengan Scale-out File Shares (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] |
| Kepala Halaman |
IoAPI.h (termasuk Windows.h)WinBase.h di Windows Server 2008 R2, Windows 7, Windows Server 2008 dan Windows Vista (termasuk Windows.h) |
| Perpustakaan | Kernel32.lib |
| DLL | Kernel32.dll |
Lihat juga
Topik Ikhtisar
Fungsi