Bagikan melalui


Fungsi Input Konsol Tingkat Rendah

Penting

Dokumen ini menjelaskan fungsionalitas platform konsol yang tidak lagi menjadi bagian dari peta jalan ekosistem kami. Kami tidak menyarankan penggunaan konten ini dalam produk baru, tetapi kami akan terus mendukung penggunaan yang ada untuk masa depan yang tidak terbatas. Solusi modern pilihan kami berfokus pada urutan terminal virtual untuk kompatibilitas maksimum dalam skenario lintas platform. Anda dapat menemukan informasi selengkapnya tentang keputusan desain ini di konsol klasik vs. dokumen terminal virtual kami.

Buffer fungsi input konsol tingkat rendah berisi rekaman input yang dapat menyertakan informasi tentang keyboard, mouse, pengulangan ukuran buffer, fokus, dan peristiwa menu. Fungsi tingkat rendah menyediakan akses langsung ke buffer input, tidak seperti fungsi tingkat tinggi yang memfilter dan memproses data buffer input, membuang semua kecuali input keyboard.

Ada lima fungsi tingkat rendah untuk mengakses buffer input konsol:

Fungsi ReadConsoleInput, PeekConsoleInput, dan WriteConsoleInput menggunakan struktur INPUT_RECORD untuk membaca dari atau menulis ke buffer input.

Berikut ini adalah deskripsi fungsi input konsol tingkat rendah.

Function Deskripsi
ReadConsoleInput Membaca dan menghapus rekaman input dari buffer input. Fungsi tidak mengembalikan hingga setidaknya satu rekaman tersedia untuk dibaca. Kemudian semua rekaman yang tersedia ditransfer ke buffer proses panggilan sampai tidak ada lagi rekaman yang tersedia atau jumlah rekaman yang ditentukan telah dibaca. Rekaman yang belum dibaca tetap berada di buffer input untuk operasi baca berikutnya. Fungsi melaporkan jumlah total rekaman yang telah dibaca. Untuk contoh yang menggunakan ReadConsoleInput, lihat Membaca Peristiwa Buffer Input.
PeekConsoleInput Membaca tanpa menghapus rekaman input yang tertunda dalam buffer input. Semua rekaman yang tersedia hingga nomor yang ditentukan disalin ke dalam buffer proses panggilan. Jika tidak ada rekaman yang tersedia, fungsi akan segera kembali. Fungsi melaporkan jumlah total rekaman yang telah dibaca.
GetNumberOfConsoleInputEvents Menentukan jumlah rekaman input yang belum dibaca dalam buffer input.
WriteConsoleInput Tempatkan rekaman input ke dalam buffer input di belakang rekaman yang tertunda di buffer. Buffer input tumbuh secara dinamis, jika perlu, untuk menyimpan rekaman sebanyak yang ditulis. Untuk menggunakan fungsi ini, handel buffer input yang ditentukan harus memiliki hak akses GENERIC_WRITE.
FlushConsoleInputBuffer Membuang semua peristiwa yang belum dibaca di buffer input. Untuk menggunakan fungsi ini, handel buffer input yang ditentukan harus memiliki hak akses GENERIC_WRITE.

Alur proses aplikasi dapat melakukan operasi tunggu untuk menunggu input tersedia dalam buffer input. Untuk memulai operasi tunggu, tentukan handel ke buffer input dalam panggilan ke salah satu fungsi tunggu. Fungsi-fungsi ini dapat kembali ketika status satu atau beberapa objek diberi sinyal. Status handel input konsol menjadi sinyal ketika ada rekaman yang belum dibaca di buffer inputnya. Status diatur ulang ke tidak diberi sinyal ketika buffer input menjadi kosong. Jika tidak ada input yang tersedia, utas panggilan memasuki status tunggu yang efisien, mengkonsumsi waktu prosesor yang sangat sedikit sambil menunggu kondisi operasi tunggu terpenuhi.