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 Bereinigungsanforderung 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 clientgeteilte ULONG, die verwendet wird, um ein Löschformateinzugeben. Der Client legt die Bereinigungsmaske auf ein bitweises ODER eines oder mehrerer der folgenden Bereinigungskennzeichnungen 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.
Eingabepufferlänge
Der Parameters.DeviceIoControl.InputBufferLength Member wird auf die Größe eines ULONG-Elements in Bytes festgelegt.
Ausgabepuffer
Nichts.
Länge des Ausgabepuffers
Nichts.
Statusblock
Wenn die Anforderung erfolgreich ist, wird der Information Member auf die Größe eines ULONG-Elements in Bytes festgelegt. Andernfalls wird der Information Member auf Null festgelegt.
Der Status- Member ist auf einen der generischen Statuswerte für anforderungen für serielle Gerätesteuerungfestgelegt. Ein Status von STATUS_INVALID_PARAMETER gibt an, dass die Bereinigungsmaske ungültig ist.
Bemerkungen
Serial.sys und SerCx ermöglichen es einer IOCTL_SERIAL_PURGE Anforderung, eine beliebige Kombination aus einer 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 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 SERIAL_PURGE_RXABORT Flag muss festgelegt werden. Andernfalls schlägt die IOCTL_SERIAL_PURGE-Anforderung mit einem STATUS_INVALID_DEVICE_STATE Statuscode fehl.
Ebenso erfordert SerCx2, dass alle Schreibanforderungen gelöscht werden, wenn der Übertragungspuffer gelöscht wird. Wenn das SERIAL_PURGE_TXCLEAR-Flag in einer IOCTL_SERIAL_PURGE Anforderung festgelegt ist, darf 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 Statuscode fehl.
Weitere Informationen zu SerCx2, SerCx und Serial.sysfinden Sie unter Übersicht über serielle Controllertreiber.
Anforderungen
Anforderung | Wert |
---|---|
Header- | ntddser.h (include Ntddser.h) |