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

IRP_MJ_DEVICE_CONTROL

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)