Freigeben über


IOCTL_SERIAL_PURGE IOCTL (ntddser.h)

Die IOCTL_SERIAL_PURGE Anforderung bricht die angegebenen Anforderungen ab und löscht Daten aus den angegebenen Puffern. Die Bereinigungsanforderung kann verwendet werden, um alle Lese- und Schreibanforderungen abzubrechen und alle Daten aus dem Empfangspuffer und dem Übertragungspuffer zu löschen.

Der Abschluss der Bereinigungsanforderung gibt nicht an, dass die von der Löschanforderung abgebrochenen Anforderungen abgeschlossen sind. Ein Client muss überprüfen, ob die gelöschten Anforderungen abgeschlossen sind, bevor der Client die entsprechenden IRPs freigibt oder wiederverwendet.

Hauptcode

IRP_MJ_DEVICE_CONTROL

Eingabepuffer

Der AssociatedIrp.SystemBuffer-Member verweist auf eine vom Client zugewiesene ULONG, die zum Eingeben eines Bereinigungsformats verwendet wird. Der Client legt die Bereinigungsmaske auf ein bitweises OR eines oder mehrerer der folgenden Löschflags fest:

SERIAL_PURGE_RXABORT

    Löscht alle Leseanforderungen (IRP_MJ_READ).

SERIAL_PURGE_RXCLEAR

    Löscht den Empfangspuffer, sofern vorhanden.

SERIAL_PURGE_TXABORT

    Löscht alle Schreibanforderungen (IRP_MJ_WRITE).

SERIAL_PURGE_TXCLEAR

    Löscht den Übertragungspuffer, sofern vorhanden.

Länge des Eingabepuffers

Das Parameters.DeviceIoControl.InputBufferLength-Element ist auf die Größe eines ULONG-Elements in Bytes festgelegt.

Ausgabepuffer

Keine.

Länge des Ausgabepuffers

Keine.

Statusblock

Wenn die Anforderung erfolgreich ist, wird das Information-Element auf die Größe eines ULONG-Elements in Bytes festgelegt. Andernfalls wird das Information-Element auf 0 (null) festgelegt.

Das Element Status ist auf einen der generischen Statuswerte für Anforderungen der seriellen Gerätesteuerung festgelegt. Eine status STATUS_INVALID_PARAMETER gibt an, dass die Bereinigungsmaske ungültig ist.

Hinweise

Serial.sys und SerCx ermöglichen es einer IOCTL_SERIAL_PURGE-Anforderung , eine beliebige Kombination aus einem oder mehreren SERIAL_PURGE_XXX-Flags anzugeben. SerCx2 ist jedoch restriktiver.

SerCx2 erfordert, dass alle Leseanforderungen gelöscht werden, wenn der Empfangspuffer gelöscht wird. Wenn also das SERIAL_PURGE_RXCLEAR-Flag in einer IOCTL_SERIAL_PURGE-Anforderung festgelegt ist, darf entweder die SerCx2-E/A-Anforderungswarteschlange keine Leseanforderungen enthalten, oder das flag SERIAL_PURGE_RXABORT muss festgelegt werden. Andernfalls schlägt die IOCTL_SERIAL_PURGE-Anforderung mit einem STATUS_INVALID_DEVICE_STATE status Code fehl.

Ebenso erfordert SerCx2, dass alle Schreibanforderungen gelöscht werden, wenn der Übertragungspuffer gelöscht wird. Wenn also das SERIAL_PURGE_TXCLEAR-Flag in einer IOCTL_SERIAL_PURGE-Anforderung festgelegt ist, darf entweder die SerCx2-E/A-Anforderungswarteschlange keine Schreibanforderungen enthalten, oder das SERIAL_PURGE_TXABORT-Flag muss festgelegt werden. Andernfalls schlägt die IOCTL_SERIAL_PURGE-Anforderung mit einem STATUS_INVALID_DEVICE_STATE status Code fehl.

Weitere Informationen zu SerCx2, SerCx und Serial.sys finden Sie unter Übersicht über serielle Controllertreiber.

Anforderungen

Anforderung Wert
Header ntddser.h (include Ntddser.h)