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 demande d’attente sur masque 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 de IOCTL_SERIAL_SET_WAIT_MASK est reçue pendant qu’une demande d’attente sur masque est en attente. Le pilote termine la demande d’attente sur le masque en attente avec une status 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 les bits d’indicateur SERIAL_EV_RXCHAR via SERIAL_EV_EVENT2. Pour plus d’informations sur ces indicateurs d’événements, 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 demande de IOCTL_SERIAL_WAIT_ON_MASK, cette demande est immédiatement terminée avec une status 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 IOCTL_SERIAL_WAIT_ON_MASK , cette demande est marquée comme étant en attente et elle attend dans la file d’attente du contrôleur série la prochaine occurrence 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 une status de STATUS_SUCCESS et une valeur de masque de sortie différente de zéro, le client peut envoyer une nouvelle demande 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 l’exécution de la demande de IOCTL_SERIAL_WAIT_ON_MASK précédente entraîne l’exécution de la nouvelle demande de IOCTL_SERIAL_WAIT_ON_MASK avec une status 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

La mémoire tampon AssociatedIrp.System 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. Une status de STATUS_INVALID_PARAMETER indique qu’aucun événement d’attente n’est défini ou qu’une demande d’attente sur le masque est déjà en attente.

Configuration requise

Condition requise Valeur
En-tête ntddser.h (inclure Ntddser.h)

Voir aussi

IOCTL_SERIAL_SET_WAIT_MASK

SERIAL_EV_XXX