Freigeben über


Schnittstelle für serielle E/A-Anforderungen

Um ein Peripheriegerät zu steuern, das mit einem Port auf einem seriellen Controller verbunden ist, sendet eine Clientanwendung oder ein Peripheriegerätetreiber E/A-Anforderungen an den Port. Ein Client verwendet IRP_MJ_WRITE - und IRP_MJ_READ-Anforderungen , um Daten an einen seriellen Port zu übertragen und von diesem zu empfangen. Darüber hinaus definiert Windows eine Reihe von seriellen E/A-Steuerungsanforderungen (IOCTLs), die ein Client zum Konfigurieren eines seriellen Ports verwenden kann.

Die seriellen IRP_MJ_XXX-Anforderungen und serielle IOCTLs bilden zusammen eine serielle E/A-Anforderungsschnittstelle, die für eine Reihe von seriellen Controllergeräten unterstützt wird. Diese Schnittstelle wird vom Serial.sys-Treiber und von der Kombination aus SerCx2 oder SerCx und einem erweiterungsbasierten seriellen Controllertreiber unterstützt.

SerCx2, SerCx und Serial.sys unterstützen viele der gleichen seriellen IOCTLs. SerCx2, SerCx und Serial.sys jedoch verschiedene Teilmengen der IOCTLs unterstützen, die in Anforderungen zur seriellen Gerätesteuerung angegeben sind. In der folgenden Tabelle sind die Teilmengen der IOCTLs zusammengefasst, die von SerCx2, SerCx und Serial.sys unterstützt werden. Ein Ja-Eintrag in der Tabelle gibt an, dass die erweiterung oder der Treiber des seriellen Frameworks die entsprechende IOCTL unterstützt, und ein Nein-Eintrag gibt an, dass dies nicht der Fall ist.

Serielle iOCTL SerCx2 SerCx Serial.sys

IOCTL_SERIAL_APPLY_DEFAULT_CONFIGURATION

Ja

Ja

Nein

IOCTL_SERIAL_CLEAR_STATS

Nein

Ja

Ja

IOCTL_SERIAL_CLR_DTR

(siehe Hinweis 1).

Ja

Ja

IOCTL_SERIAL_CLR_RTS

Ja

Ja

Ja

IOCTL_SERIAL_CONFIG_SIZE

Nein

Nein

Ja

IOCTL_SERIAL_GET_BAUD_RATE

Ja

Ja

Ja

IOCTL_SERIAL_GET_CHARS

Siehe Hinweis 2.

Ja

Ja

IOCTL_SERIAL_GET_COMMSTATUS

Ja

Ja

Ja

IOCTL_SERIAL_GET_DTRRTS

Ja

Ja

Ja

IOCTL_SERIAL_GET_HANDFLOW

(siehe Hinweis 1).

Ja

Ja

IOCTL_SERIAL_GET_LINE_CONTROL

Ja

Ja

Ja

IOCTL_SERIAL_GET_MODEM_CONTROL (siehe Hinweis 4.)

Ja

Ja

Ja

IOCTL_SERIAL_GET_MODEMSTATUS

Nein

Ja

Ja

IOCTL_SERIAL_GET_PROPERTIES

Ja

Ja

Ja

IOCTL_SERIAL_GET_STATS

Nein

Ja

Ja

IOCTL_SERIAL_GET_TIMEOUTS

Ja

Ja

Ja

IOCTL_SERIAL_GET_WAIT_MASK

Ja

Ja

Ja

IOCTL_SERIAL_IMMEDIATE_CHAR

Nein

Ja

Ja

IOCTL_SERIAL_LSRMST_INSERT

Nein

Ja

Ja

IOCTL_SERIAL_PURGE

Ja

Ja

Ja

IOCTL_SERIAL_RESET_DEVICE (siehe Hinweis 5.)

Nein

Nein

Ja

IOCTL_SERIAL_SET_BAUD_RATE

Ja

Ja

Ja

IOCTL_SERIAL_SET_BREAK_OFF

Ja

Ja

Ja

IOCTL_SERIAL_SET_BREAK_ON

Ja

Ja

Ja

IOCTL_SERIAL_SET_CHARS

Siehe Hinweis 2.

Ja

Ja

IOCTL_SERIAL_SET_DTR

(siehe Hinweis 1).

Ja

Ja

IOCTL_SERIAL_SET_FIFO_CONTROL

(siehe Hinweis 1).

Ja

Ja

IOCTL_SERIAL_SET_HANDFLOW (Siehe Hinweis 3.)

Ja

Ja

Ja

IOCTL_SERIAL_SET_LINE_CONTROL

Ja

Ja

Ja

IOCTL_SERIAL_SET_MODEM_CONTROL (Siehe Hinweis 4.)

Ja

Ja

Ja

IOCTL_SERIAL_SET_QUEUE_SIZE

Ja

Ja

Ja

IOCTL_SERIAL_SET_RTS

Ja

Ja

Ja

IOCTL_SERIAL_SET_TIMEOUTS

Ja

Ja

Ja

IOCTL_SERIAL_SET_WAIT_MASK

Ja

Ja

Ja

IOCTL_SERIAL_SET_XOFF

Nein

Ja

Ja

IOCTL_SERIAL_SET_XON

Nein

Ja

Ja

IOCTL_SERIAL_WAIT_ON_MASK

Ja

Ja

Ja

IOCTL_SERIAL_XOFF_COUNTER

Nein

Ja

Ja

**Notizen**
  1. SerCx2 unterstützt diese IOCTL je nach Implementierung des seriellen Controllertreibers und den Funktionen der seriellen Controllerhardware möglicherweise nicht.

  2. SerCx2 unterstützt keine Sonderzeichen. SerCx2 schließt eine IOCTL_SERIAL_SET_CHARS-Anforderung immer mit einem STATUS_SUCCESS Statuscode ab, legt jedoch keine Sonderzeichen fest oder führt als Reaktion auf diese Anforderung keine anderen Vorgänge aus. Für eine IOCTL_SERIAL_GET_CHARS-Anforderung legt SerCx2 alle Zeichenwerte in der SERIAL_CHARS-Struktur auf NULL fest und schließt die Anforderung mit einem STATUS_SUCCESS Statuscode ab.

  3. SerCx2 und SerCx unterstützen nur Teilmengen der Flags, die für die Elemente FlowReplace und ControlHandShake der SERIAL_HANDFLOW-Struktur definiert sind. Serial.sys unterstützt alle diese Flags. Weitere Informationen finden Sie unter SERIAL_HANDFLOW.

  4. Die IOCTL_SERIAL_GET_MODEM_CONTROL - und IOCTL_SERIAL_SET_MODEM_CONTROL-Anforderungen werden hauptsächlich für Hardwaretests verwendet. Für die Modemsteuerungsvorgänge ist kein Standardregisterlayout definiert. Peripherietreiber, die IOCTLs für die Modemsteuerung verwenden, riskieren, sich von den Hardwarefeatures eines bestimmten seriellen Controllers abhängig zu machen.

  5. Der Serial.sys-Treiber führt immer eine IOCTL_SERIAL_RESET_DEVICE-Anforderung mit STATUS_SUCCESS aus, führt jedoch keinen Vorgang als Reaktion auf diese Anforderung aus. SerCx2 und SerCx unterstützen IOCTL_SERIAL_RESET_DEVICE Anforderungen nicht und führen diese Anforderungen immer mit STATUS_NOT_IMPLEMENTED aus.

Weitere Informationen zu IOCTL_SERIAL_XXX-Anforderungen sowie Lese- und Schreibanforderungen für serielle Controller finden Sie im Ntddser.h-Header .