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
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) |