IOCTL_SERIAL_SET_WAIT_MASK IOCTL (ntddser.h)

Die IOCTL_SERIAL_SET_WAIT_MASK-Anforderung konfiguriert den seriellen Controllertreiber so, dass ein Client nach dem Auftreten eines der angegebenen Warteereignisse benachrichtigt wird.

Ein Client kann auf die Warteereignisse warten, die durch Flagbits SERIAL_EV_RXCHAR durch SERIAL_EV_EVENT2 dargestellt werden. Weitere Informationen zu diesen Ereignisflags finden Sie im Abschnitt Hinweise.

Ein Client gibt Warteereignisse an, indem er eine Eingabeereigniswartemaske auf das bitweise OR eines oder mehrerer Ereignisflags festlegt. Ein Client kann alle Warteereignisse löschen, indem die Wartemaske des Eingabeereignisses auf Null festgelegt wird.

Ein Client verwendet eine IOCTL_SERIAL_WAIT_ON_MASK-Anforderung , um auf das Auftreten eines Warteereignisses zu warten. Wenn beim Verarbeiten einer Set-Wait-Mask-Anforderung bereits eine Warteanforderung aussteht, wird die ausstehende Wait-on-Event-Anforderung mit einem status von STATUS_SUCCESS abgeschlossen, und die Ausgabewarte-Ereignismaske ist auf Null festgelegt.

Hauptcode

IRP_MJ_DEVICE_CONTROL

Eingabepuffer

Das AssociatedIrp.SystemBuffer-Element verweist auf einen ULONG-Puffer, den der Client zuordnet und auf eine Ereigniswartemaske festlegt. Die Wartemaske ist auf null oder auf das bitweise OR eines oder mehrerer SERIAL_EV_XXX-Flags-Bits festgelegt.

Eingabepufferlänge

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

Ausgabepuffer

Keine.

Länge des Ausgabepuffers

Keine.

Statusblock

Das Element Information ist auf 0 festgelegt.

Das Statuselement ist auf einen der generischen Statuswerte für Anforderungen zur seriellen Gerätesteuerung festgelegt. Ein status von STATUS_INVALID_PARAMETER gibt an, dass die Eingabewartemaske ungültig ist.

Hinweise

Die SERIAL_EV_XXX-Konstanten definieren die Flagbits in der Wartemaske für einen seriellen Port.

#define SERIAL_EV_RXCHAR     0x0001
#define SERIAL_EV_RXFLAG     0x0002
#define SERIAL_EV_TXEMPTY    0x0004
#define SERIAL_EV_CTS        0x0008
#define SERIAL_EV_DSR        0x0010
#define SERIAL_EV_RLSD       0x0020
#define SERIAL_EV_BREAK      0x0040
#define SERIAL_EV_ERR        0x0080
#define SERIAL_EV_RING       0x0100
#define SERIAL_EV_PERR       0x0200
#define SERIAL_EV_RX80FULL   0x0400
#define SERIAL_EV_EVENT1     0x0800
#define SERIAL_EV_EVENT2     0x1000

Die SERIAL_EV_XXX-Konstanten definieren die Ereignistypen, die in einer Wartemaske angegeben werden können. Nachdem ein Client (Anwendungs- oder Peripherietreiber) eine Verbindung mit einem seriellen Port hergestellt hat, kann der Client eine Wartemaske angeben, die die Typen von Ereignissen angibt, die der Client überwachen muss. Bei diesen Ereignissen handelt es sich um Änderungen im Hardwarezustand des seriellen Ports. Wenn ein Ereignis in der Wartemaske auftritt, wird der Client benachrichtigt.

Die IOCTL_SERIAL_SET_WAIT_MASK - und IOCTL_SERIAL_GET_WAIT_MASK-Steuerelementanforderungen verwenden Ereigniswartemasken, um eine Reihe von Ereignissen anzugeben, auf denen ein Client warten kann. Ein Wartemaskenwert ist entweder null oder der bitweise OR einer oder mehrerer SERIAL_EV_XXX-Konstanten . Der Wert der Wartemaske 0 gibt an, dass der Client nicht auf Ereignisse wartet.

Der Client sendet eine IOCTL_SERIAL_WAIT_ON_MASK-Steuerelementanforderung , um auf ein Ereignis in der aktuell festgelegten Wartemaske zu warten. Der serielle Controllertreiber schließt diese Anforderung ab, wenn ein Ereignis in der Wartemaske auftritt.

Die folgende Tabelle zeigt, welche SERIAL_EV_XXX-Flagbits von SerCx2, SerCx und Serial.sys unterstützt werden. Ein Ja-Eintrag in der Tabelle gibt an, dass die serielle Frameworkerweiterung oder der Treiber das entsprechende Flagbit unterstützt. Ein Nein-Eintrag gibt an, dass das Flagbit nicht unterstützt wird.

Flagbit SerCx2 SerCx Serial.sys
SERIAL_EV_RXCHAR Yes Yes Yes
SERIAL_EV_RXFLAG Siehe Hinweis. Nein Ja
SERIAL_EV_TXEMPTY Yes Yes Yes
SERIAL_EV_CTS Yes Yes Yes
SERIAL_EV_DSR Yes Yes Yes
SERIAL_EV_RLSD Siehe Hinweis. Yes Yes
SERIAL_EV_BREAK Yes Yes Yes
SERIAL_EV_ERR Yes Yes Yes
SERIAL_EV_RING Siehe Hinweis. Yes Yes
SERIAL_EV_PERR Siehe Hinweis. No No
SERIAL_EV_RX80FULL Siehe Hinweis. Nein Ja
SERIAL_EV_EVENT1 Siehe Hinweis. No No
SERIAL_EV_EVENT2 Siehe Hinweis. No No
 
Hinweis SerCx2 unterstützt möglicherweise das Flagbit im angegebenen Tabelleneintrag, abhängig vom seriellen Controllertreiber und den Funktionen der Hardware des seriellen Controllers.
 
Weitere Informationen zu SerCx2, SerCx und Serial.sys finden Sie unter Übersicht über serielle Controllertreiber.

Anforderungen

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

Weitere Informationen

IOCTL_SERIAL_GET_CHARS

IOCTL_SERIAL_GET_WAIT_MASK

IOCTL_SERIAL_SET_CHARS

IOCTL_SERIAL_WAIT_ON_MASK

SERIAL_CHARS

SERIAL_STATUS