Freigeben über


IOCTL_SERIAL_WAIT_ON_MASK IOCTL (ntddser.h)

Die IOCTL_SERIAL_WAIT_ON_MASK-Anforderung wird verwendet, um auf das Auftreten eines Warteereignisses zu warten, das mithilfe einer IOCTL_SERIAL_SET_WAIT_MASK-Anforderung angegeben wird.

Eine Wait-on-Mask-Anforderung wird abgeschlossen, nachdem eines der folgenden Ereignisse auftritt:

  • Es tritt ein Warteereignis auf, das von der letzten Set-Wait-Mask-Anforderung angegeben wurde.
  • Eine IOCTL_SERIAL_SET_WAIT_MASK Anforderung wird empfangen, während eine Wait-on-Mask-Anforderung aussteht. Der Treiber schließt die ausstehende Wait-on-Mask-Anforderung mit einer status von STATUS_SUCCESS ab, und die Ausgabewartemaske ist auf 0 (null) festgelegt.
Ein Client kann auf die Warteereignisse warten, die durch Flagbits SERIAL_EV_RXCHAR bis SERIAL_EV_EVENT2 dargestellt werden. Weitere Informationen zu diesen Ereignisflags finden Sie unter SERIAL_EV_XXX.

Ein Client sendet eine IOCTL_SERIAL_WAIT_ON_MASK Anforderung, um auf das Auftreten eines Ereignisses zu warten, das in der Wartemaske angegeben wurde, die von der letzten IOCTL_SERIAL_SET_WAIT_MASK Anforderung bereitgestellt wurde. Wenn ein oder mehrere Ereignisse in der aktuellen Wartemaske auftreten, bevor die IOCTL_SERIAL_WAIT_ON_MASK-Anforderung gesendet wird, wird diese Anforderung sofort mit einer status von STATUS_SUCCESS und einem Ausgabemaskenwert abgeschlossen, der die Ereignisse identifiziert. Wenn kein Ereignis in der Wartemaske auftritt, bevor die IOCTL_SERIAL_WAIT_ON_MASK Anforderung gesendet wird, wird diese Anforderung als ausstehend markiert und wartet in der seriellen Controllerwarteschlange auf das nächste Vorkommen eines Ereignisses in der aktuellen Wartemaske.

Nachdem die IOCTL_SERIAL_WAIT_ON_MASK-Anforderung eines Clients mit einer status von STATUS_SUCCESS und einem Ausgabeformatwert ungleich null abgeschlossen wurde, kann der Client eine neue IOCTL_SERIAL_WAIT_ON_MASK Anforderung senden, um auf ein anderes Ereignis in der aktuellen Wartemaske zu warten. Nur ein neues Ereignis, das auftritt, nachdem die vorherige IOCTL_SERIAL_WAIT_ON_MASK Anforderung abgeschlossen wurde, führt dazu, dass die neue IOCTL_SERIAL_WAIT_ON_MASK Anforderung mit einer status von STATUS_SUCCESS und einem Ausgabemaskenwert ungleich null abgeschlossen wird.

Hauptcode

IRP_MJ_DEVICE_CONTROL

Eingabepuffer

Keine.

Länge des Eingabepuffers

Keine.

Ausgabepuffer

AssociatedIrp.System-Puffer verweist auf einen ULONG-Puffer, der eine Ereigniswartemaske enthält. Die Wartemaske für Ereignisse gibt an, welche Warteereignisse aufgetreten sind. Die Ereigniswartemaske ist auf null oder auf das bitweise OR eines oder mehrerer SERIAL_EV_XXX Flagbits festgelegt.

Länge des Ausgabepuffers

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

Statusblock

Der Information-Member wird auf die Größe eines ULONG-Elements in Bytes 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 keine Warteereignisse festgelegt sind oder dass bereits eine Wait-on-Mask-Anforderung aussteht.

Anforderungen

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

Weitere Informationen

IOCTL_SERIAL_SET_WAIT_MASK

SERIAL_EV_XXX