Partager via


IOCTL_SERIAL_WAIT_ON_MASK IOCTL (ntddser.h)

La requête IOCTL_SERIAL_WAIT_ON_MASK est utilisée pour attendre l’occurrence d’un événement d’attente spécifié à l’aide d’une requête IOCTL_SERIAL_SET_WAIT_MASK.

Une requête wait-on-mask est terminée après l’un des événements suivants :

  • Un événement d’attente se produit qui a été spécifié par la demande set-wait-mask la plus récente.
  • Une demande IOCTL_SERIAL_SET_WAIT_MASK est reçue pendant qu’une demande wait-on-mask est en attente. Le pilote termine la requête wait-on-mask en attente avec l’état de STATUS_SUCCESS et le masque d’attente de sortie est défini sur zéro.
Un client peut attendre les événements d’attente représentés par des bits d’indicateur SERIAL_EV_RXCHAR via SERIAL_EV_EVENT2. Pour plus d’informations sur ces indicateurs d’événement, consultez SERIAL_EV_XXX.

Un client envoie une demande de IOCTL_SERIAL_WAIT_ON_MASK pour attendre l’occurrence d’un événement spécifié dans le masque d’attente fourni par la demande de IOCTL_SERIAL_SET_WAIT_MASK la plus récente. Si un ou plusieurs événements du masque d’attente actuel se produisent avant l’envoi de la requête IOCTL_SERIAL_WAIT_ON_MASK, cette demande est immédiatement terminée avec l’état de STATUS_SUCCESS et une valeur de masque de sortie qui identifie les événements. Si aucun événement dans le masque d’attente ne se produit avant l’envoi de la demande de IOCTL_SERIAL_WAIT_ON_MASK, cette demande est marquée comme étant en attente et attend dans la file d’attente du contrôleur série l’occurrence suivante d’un événement dans le masque d’attente actuel.

Une fois la demande de IOCTL_SERIAL_WAIT_ON_MASK d’un client terminée avec un état de STATUS_SUCCESS et une valeur de masque de sortie différente de zéro, le client peut envoyer une nouvelle demande de IOCTL_SERIAL_WAIT_ON_MASK pour attendre un autre événement dans le masque d’attente actuel. Seul un nouvel événement qui se produit après la fin de la demande de IOCTL_SERIAL_WAIT_ON_MASK précédente entraîne la fin de la nouvelle requête IOCTL_SERIAL_WAIT_ON_MASK avec l’état de STATUS_SUCCESS et une valeur de masque de sortie différente de zéro.

Code principal

IRP_MJ_DEVICE_CONTROL

Mémoire tampon d’entrée

Aucun.

Longueur de la mémoire tampon d’entrée

Aucun.

Mémoire tampon de sortie

AssociatedIrp.System tampon pointe vers une mémoire tampon ULONG qui contient un masque d’attente d’événement. Le masque d’attente d’événement indique les événements d’attente qui se sont produits. Le masque d’attente d’événement est défini sur zéro ou sur le bit-OR d’un ou plusieurs bits d’indicateur SERIAL_EV_XXX.

Longueur de la mémoire tampon de sortie

Le membre Parameters.DeviceIoControl.OutputBufferLength est défini sur la taille, en octets, d’un ULONG.

Bloc d’état

Le membre Information est défini sur la taille, en octets, d’un ULONG.

Le membre Status est défini sur l’une des valeurs d’état génériques pour les demandes de contrôle d’appareil série. Un état de STATUS_INVALID_PARAMETER indique qu’aucun événement d’attente n’est défini ou qu’une demande wait-on-mask est déjà en attente.

Exigences

Exigence Valeur
d’en-tête ntddser.h (include Ntddser.h)

Voir aussi

IOCTL_SERIAL_SET_WAIT_MASK

SERIAL_EV_XXX