Fungsi GetOverlappedResult (ioapiset.h)
Mengambil hasil operasi yang tumpang tindih pada file yang ditentukan, pipa bernama, atau perangkat komunikasi. Untuk menentukan interval batas waktu atau menunggu utas yang dapat diperingatkan, gunakan GetOverlappedResultEx.
Sintaks
BOOL GetOverlappedResult(
[in] HANDLE hFile,
[in] LPOVERLAPPED lpOverlapped,
[out] LPDWORD lpNumberOfBytesTransferred,
[in] BOOL bWait
);
Parameter
[in] hFile
Handel ke file, pipa bernama, atau perangkat komunikasi. Ini adalah handel yang sama yang ditentukan ketika operasi yang tumpang tindih dimulai oleh panggilan ke salah satu fungsi berikut:
- ReadFile
- WriteFile
- ConnectNamedPipe
- TransactNamedPipe
- DeviceIoControl
- WaitCommEvent
- ReadDirectoryChangesW
- LockFileEx
[in] lpOverlapped
Penunjuk ke struktur TUMPANG TINDIH yang ditentukan ketika operasi yang tumpang tindih dimulai.
[out] lpNumberOfBytesTransferred
Penunjuk ke variabel yang menerima jumlah byte yang benar-benar ditransfer oleh operasi baca atau tulis. Untuk operasi TransactNamedPipe , ini adalah jumlah byte yang dibaca dari pipa. Untuk operasi DeviceIoControl , ini adalah jumlah byte data output yang dikembalikan oleh driver perangkat. Untuk operasi ConnectNamedPipe atau WaitCommEvent , nilai ini tidak ditentukan.
[in] bWait
Jika parameter ini TRUE, dan anggota Internal dari struktur lpOverlappedSTATUS_PENDING, fungsi tidak akan kembali hingga operasi selesai. Jika parameter ini FALSE dan operasi masih tertunda, fungsi mengembalikan FALSE dan fungsi GetLastError mengembalikan ERROR_IO_INCOMPLETE.
Mengembalikan nilai
Jika fungsi berhasil, nilai yang dikembalikan bukan nol.
Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.
Keterangan
Hasil yang dilaporkan oleh fungsi GetOverlappedResult adalah hasil dari operasi tumpang tindih terakhir handel yang ditentukan tempat struktur TUMPANG TINDIH yang ditentukan disediakan, dan yang hasil operasinya tertunda. Operasi yang tertunda ditunjukkan ketika fungsi yang memulai operasi mengembalikan FALSE, dan fungsi GetLastError mengembalikan ERROR_IO_PENDING. Ketika operasi I/O tertunda, fungsi yang memulai operasi mereset anggota hEvent dari struktur TUMPANG TINDIH ke status tidak bertanda. Kemudian ketika operasi yang tertunda telah selesai, sistem mengatur objek peristiwa ke status tersinyal.
Jika parameter bWaitTRUE, GetOverlappedResult menentukan apakah operasi yang tertunda telah selesai dengan menunggu objek peristiwa berada dalam status disinyalir.
Jika anggota hEvent dari struktur TUMPANG TINDIH ADALAH NULL, sistem menggunakan status handel hFile untuk memberi sinyal ketika operasi telah selesai. Penggunaan file, pipa bernama, atau handel perangkat komunikasi untuk tujuan ini tidak disarankan. Lebih aman untuk menggunakan objek peristiwa karena kebingungan yang dapat terjadi ketika beberapa operasi tumpang tindih bersamaan dilakukan pada file yang sama, pipa bernama, atau perangkat komunikasi. Dalam situasi ini, tidak ada cara untuk mengetahui operasi mana yang menyebabkan status objek diberi sinyal.
Contoh
Untuk contoh yang menggunakan GetOverlappedResult, lihat Pengujian untuk Akhir File
Persyaratan
Klien minimum yang didukung | Windows XP [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows Server 2003 [aplikasi desktop | Aplikasi UWP] |
Target Platform | Windows |
Header | ioapiset.h (termasuk Windows.h pada Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Pustaka | Kernel32.lib |
DLL | Kernel32.dll |
Lihat juga
CancelIo, CreateEvent, GetOverlappedResultEx, TUMPANG TINDIH, Input dan Output Tumpang Tindih, Fungsi Sinkronisasi