Bagikan melalui


IOCTL_SERIAL_PURGE IOCTL (ntddser.h)

Permintaan IOCTL_SERIAL_PURGE membatalkan permintaan yang ditentukan dan menghapus data dari buffer yang ditentukan. Permintaan penghapusan menyeluruh dapat digunakan untuk membatalkan semua permintaan baca dan menulis permintaan dan untuk menghapus semua data dari buffer penerima dan buffer pengiriman.

Penyelesaian permintaan penghapusan menyeluruh tidak menunjukkan bahwa permintaan yang dibatalkan oleh permintaan pembersihan selesai. Klien harus memverifikasi bahwa permintaan yang dihapus menyeluruh selesai sebelum klien membebaskan atau menggunakan kembali RUNPS yang sesuai.

Kode utama

IRP_MJ_DEVICE_CONTROL

Buffer input

Anggota AssociatedIrp.SystemBuffer menunjuk ke ULONG yang dialokasikan klien yang digunakan untuk memasukkan masker pembersihan. Klien mengatur masker penghapusan menyeluruh ke bitwise-OR dari satu atau beberapa bendera pembersihan berikut:

SERIAL_PURGE_RXABORT

    Hapus menyeluruh semua permintaan baca (IRP_MJ_READ).

SERIAL_PURGE_RXCLEAR

    Hapus menyeluruh buffer penerima, jika ada.

SERIAL_PURGE_TXABORT

    Menghapus menyeluruh semua permintaan tulis (IRP_MJ_WRITE).

SERIAL_PURGE_TXCLEAR

    Hapus menyeluruh buffer pengiriman, jika ada.

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

Jika permintaan berhasil, anggota Informasi diatur ke ukuran, dalam byte, dari ULONG. Jika tidak, 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 pembersihan tidak valid.

Keterangan

Serial.sys dan SerCx memungkinkan permintaan IOCTL_SERIAL_PURGE untuk menentukan kombinasi satu atau beberapa bendera SERIAL_PURGE_XXX . Namun, SerCx2 lebih ketat.

SerCx2 mengharuskan semua permintaan baca dibersihkan jika buffer penerima dibersihkan. Dengan demikian, jika bendera SERIAL_PURGE_RXCLEAR diatur dalam permintaan IOCTL_SERIAL_PURGE , antrean permintaan I/O SerCx2 tidak boleh berisi permintaan baca, atau bendera SERIAL_PURGE_RXABORT harus ditetapkan. Jika tidak, permintaan IOCTL_SERIAL_PURGE gagal dengan kode status STATUS_INVALID_DEVICE_STATE.

Demikian pula, SerCx2 mengharuskan semua permintaan tulis dibersihkan jika buffer transmisi dibersihkan. Dengan demikian, jika bendera SERIAL_PURGE_TXCLEAR diatur dalam permintaan IOCTL_SERIAL_PURGE , antrean permintaan I/O SerCx2 tidak boleh berisi permintaan tulis, atau bendera SERIAL_PURGE_TXABORT harus ditetapkan. Jika tidak, permintaan IOCTL_SERIAL_PURGE gagal dengan kode status STATUS_INVALID_DEVICE_STATE.

Untuk informasi selengkapnya tentang SerCx2, SerCx, dan Serial.sys, lihat Gambaran Umum Driver Pengontrol Serial.

Persyaratan

Persyaratan Nilai
Header ntddser.h (termasuk Ntddser.h)