IOCTL_SERIAL_SET_WAIT_MASK IOCTL (ntddser.h)
Permintaan IOCTL_SERIAL_SET_WAIT_MASK mengonfigurasi driver pengontrol serial untuk memberi tahu klien setelah terjadinya salah satu rangkaian peristiwa tunggu yang ditentukan.
Klien dapat menunggu peristiwa tunggu yang diwakili oleh bit bendera SERIAL_EV_RXCHAR melalui SERIAL_EV_EVENT2. Untuk informasi selengkapnya tentang bendera peristiwa ini, lihat bagian Keterangan.
Klien menentukan peristiwa tunggu dengan mengatur masker tunggu peristiwa input ke bitwise-OR dari satu atau beberapa bendera peristiwa. Klien dapat menghapus semua peristiwa tunggu dengan mengatur masker tunggu peristiwa input ke nol.
Klien menggunakan permintaan IOCTL_SERIAL_WAIT_ON_MASK untuk menunggu terjadinya peristiwa tunggu. Jika permintaan wait-on-mask sudah tertunda saat permintaan set-wait-mask diproses, permintaan tunggu-on-event yang tertunda selesai dengan status STATUS_SUCCESS dan masker peristiwa tunggu output diatur ke nol.
Kode utama
Buffer input
Anggota AssociatedIrp.SystemBuffer menunjuk ke buffer ULONG yang dialokasikan dan diatur klien ke masker tunggu acara. Masker tunggu diatur ke nol atau ke bitwise-OR dari satu atau beberapa bit bendera SERIAL_EV_XXX .
Panjang buffer input
Anggota Parameters.DeviceIoControl.InputBufferLength diatur ke ukuran, dalam byte, dari ULONG.
Buffer output
Tidak ada.
Panjang buffer output
Tidak ada.
Blok status
Anggota Informasi diatur ke nol.
Anggota Status diatur ke salah satu Nilai Status Generik untuk Permintaan Kontrol Perangkat Serial. Status STATUS_INVALID_PARAMETER menunjukkan bahwa masker tunggu input tidak valid.
Keterangan
Konstanta SERIAL_EV_XXX menentukan bit bendera di masker tunggu untuk port serial.
#define SERIAL_EV_RXCHAR 0x0001 #define SERIAL_EV_RXFLAG 0x0002 #define SERIAL_EV_TXEMPTY 0x0004 #define SERIAL_EV_CTS 0x0008 #define SERIAL_EV_DSR 0x0010 #define SERIAL_EV_RLSD 0x0020 #define SERIAL_EV_BREAK 0x0040 #define SERIAL_EV_ERR 0x0080 #define SERIAL_EV_RING 0x0100 #define SERIAL_EV_PERR 0x0200 #define SERIAL_EV_RX80FULL 0x0400 #define SERIAL_EV_EVENT1 0x0800 #define SERIAL_EV_EVENT2 0x1000
Konstanta SERIAL_EV_XXX menentukan jenis peristiwa yang dapat ditentukan dalam masker tunggu. Setelah klien (aplikasi atau driver periferal) membuka koneksi ke port serial, klien dapat menentukan masker tunggu yang menunjukkan jenis peristiwa yang perlu dipantau klien. Peristiwa ini adalah perubahan dalam status perangkat keras port serial. Ketika peristiwa di masker tunggu terjadi, klien akan diberi tahu.
Permintaan kontrol IOCTL_SERIAL_SET_WAIT_MASK dan IOCTL_SERIAL_GET_WAIT_MASK menggunakan masker tunggu peristiwa untuk menentukan serangkaian peristiwa di mana klien dapat menunggu. Nilai masker tunggu adalah nol atau bitwise-OR dari satu atau beberapa konstanta SERIAL_EV_XXX . Nilai masker tunggu nol menunjukkan bahwa klien tidak menunggu peristiwa apa pun.
Klien mengirimkan permintaan kontrol IOCTL_SERIAL_WAIT_ON_MASK untuk menunggu peristiwa di masker tunggu yang saat ini diatur. Driver pengontrol serial menyelesaikan permintaan ini ketika peristiwa di masker tunggu terjadi.
Tabel berikut menunjukkan bit bendera SERIAL_EV_XXX mana yang didukung oleh SerCx2, SerCx, dan Serial.sys. Entri Ya dalam tabel menunjukkan bahwa ekstensi kerangka kerja serial atau driver mendukung bit bendera yang sesuai. Entri Tidak menunjukkan bahwa bit bendera tidak didukung.
Bit bendera | SerCx2 | SerCx | Serial.sys |
---|---|---|---|
SERIAL_EV_RXCHAR | Ya | Ya | Ya |
SERIAL_EV_RXFLAG | See note. | Tidak | Ya |
SERIAL_EV_TXEMPTY | Ya | Ya | Ya |
SERIAL_EV_CTS | Ya | Ya | Ya |
SERIAL_EV_DSR | Ya | Ya | Ya |
SERIAL_EV_RLSD | See note. | Ya | Ya |
SERIAL_EV_BREAK | Ya | Ya | Ya |
SERIAL_EV_ERR | Ya | Ya | Ya |
SERIAL_EV_RING | See note. | Ya | Ya |
SERIAL_EV_PERR | See note. | Tidak | Tidak |
SERIAL_EV_RX80FULL | See note. | Tidak | Ya |
SERIAL_EV_EVENT1 | See note. | Tidak | Tidak |
SERIAL_EV_EVENT2 | See note. | Tidak | Tidak |
Persyaratan
Persyaratan | Nilai |
---|---|
Header | ntddser.h (termasuk Ntddser.h) |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk