Fungsi GetQueuedCompletionStatus (ioapiset.h)
Mencoba untuk menghapus antrean paket penyelesaian I/O dari port penyelesaian I/O yang ditentukan. Jika tidak ada paket penyelesaian yang diantrekan, fungsi menunggu operasi I/O yang tertunda yang terkait dengan port penyelesaian selesai.
Untuk menghapus antrean beberapa paket penyelesaian I/O sekaligus, gunakan fungsi
Sintaksis
BOOL GetQueuedCompletionStatus(
[in] HANDLE CompletionPort,
LPDWORD lpNumberOfBytesTransferred,
[out] PULONG_PTR lpCompletionKey,
[out] LPOVERLAPPED *lpOverlapped,
[in] DWORD dwMilliseconds
);
Parameter
[in] CompletionPort
Handel ke port penyelesaian. Untuk membuat port penyelesaian, gunakan fungsi CreateIoCompletionPort.
lpNumberOfBytesTransferred
Pointer ke variabel yang menerima jumlah byte yang ditransfer dalam operasi I/O yang telah selesai.
[out] lpCompletionKey
Pointer ke variabel yang menerima nilai kunci penyelesaian yang terkait dengan handel file yang operasi I/O-nya telah selesai. Kunci penyelesaian adalah kunci per file yang ditentukan dalam panggilan ke CreateIoCompletionPort.
[out] lpOverlapped
Penunjuk ke variabel yang menerima alamat struktur
Bahkan jika Anda telah melewati fungsi handel file yang terkait dengan port penyelesaian dan struktur
[in] dwMilliseconds
Jumlah milidetik pemanggil bersedia menunggu paket penyelesaian muncul di port penyelesaian. Jika paket penyelesaian tidak muncul dalam waktu yang ditentukan, waktu fungsi habis, mengembalikan FALSE, dan menetapkan *lpOverlapped ke NULL.
Jika dwMillisecondsINFINITE, fungsi tidak akan pernah kehabisan waktu. Jika dwMilliseconds nol dan tidak ada operasi I/O untuk menghapus antrean, fungsi akan segera habis.
Mengembalikan nilai
Mengembalikan nonzero (TRUE) jika berhasil atau nol (FALSE) jika tidak.
Untuk mendapatkan informasi kesalahan yang diperluas, panggil GetLastError.
Untuk informasi selengkapnya, lihat bagian Keterangan.
Komentar
Fungsi ini mengaitkan utas dengan port penyelesaian yang ditentukan. Utas dapat dikaitkan dengan paling banyak satu port penyelesaian.
Jika panggilan ke GetQueuedCompletionStatus gagal karena handel port penyelesaian yang terkait dengannya ditutup saat panggilan luar biasa, fungsi mengembalikan FALSE, *lpOverlapped akan NULL, dan GetLastError akan mengembalikan ERROR_ABANDONED_WAIT_0.
Windows Server 2003 dan Windows XP: Menutup handel port penyelesaian saat panggilan luar biasa tidak akan mengakibatkan perilaku yang dinyatakan sebelumnya. Fungsi akan terus menunggu hingga entri dihapus dari port atau sampai waktu habis terjadi, jika ditentukan sebagai nilai selain INFINITE.
Jika fungsi GetQueuedCompletionStatus
- Jika *lpOverlappedNULL, fungsi tidak menghapus antrean paket penyelesaian dari port penyelesaian. Dalam hal ini, fungsi tidak menyimpan informasi dalam variabel yang diarahkan oleh lpNumberOfBytes dan parameter lpCompletionKey, dan nilainya tidak ditentukan.
- Jika *lpOverlapped tidak NULL dan fungsi menghapus antrean paket penyelesaian untuk operasi I/O yang gagal dari port penyelesaian, fungsi menyimpan informasi tentang operasi yang gagal dalam variabel yang diarahkan oleh lpNumberOfBytes, lpCompletionKey, dan lpOverlapped. Untuk mendapatkan informasi kesalahan yang diperluas, panggil GetLastError.
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
Syarat | Nilai |
---|---|
klien minimum yang didukung | Windows XP [aplikasi desktop | Aplikasi UWP] |
server minimum yang didukung |
Windows Server 2003 [aplikasi desktop | Aplikasi UWP] |
Platform Target |
Windows |
Header |
ioapiset.h (termasuk Windows.h) |
Pustaka |
Kernel32.lib |
DLL |
Kernel32.dll |
Lihat juga
DeviceIoControl
Port Penyelesaian I/O
Topik Ringkasan
ReadFile
Menggunakan Header Windows
WriteFile