IOCTL_SERIAL_SET_WAIT_MASK IOCTL (ntddser.h)
La requête IOCTL_SERIAL_SET_WAIT_MASK configure le pilote du contrôleur série pour notifier un client après l’occurrence d’un ensemble d’événements d’attente spécifié.
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 la section Remarques.
Un client spécifie les événements d’attente en définissant un masque d’attente d’événement d’entrée sur l’or au niveau du bit d’une ou plusieurs des indicateurs d’événement. Un client peut effacer tous les événements d’attente en définissant le masque d’attente d’événement d’entrée sur zéro.
Un client utilise une requête IOCTL_SERIAL_WAIT_ON_MASK pour attendre l’occurrence d’un événement d’attente. Si une requête wait-on-mask est déjà en attente lorsqu’une demande set-wait-mask est traitée, la demande wait-on-event en attente est terminée avec l’état de STATUS_SUCCESS et le masque d’événement d’attente de sortie est défini sur zéro.
Code principal
Mémoire tampon d’entrée
Le membre AssociatedIrp.SystemBuffer pointe vers une mémoire tampon ULONG que le client alloue et définit sur un masque d’attente d’événement. Le masque d’attente est défini sur zéro ou sur l’or au niveau du bit d’une ou de plusieurs SERIAL_EV_XXX bits d’indicateurs.
Longueur de la mémoire tampon d’entrée
Le membre Parameters.DeviceIoControl.InputBufferLength est défini sur la taille, en octets, d’un ULONG.
Mémoire tampon de sortie
Aucun.
Longueur de la mémoire tampon de sortie
Aucun.
Bloc d’état
Le membre Information est défini sur zéro.
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 que le masque d’attente d’entrée n’est pas valide.
Remarques
Les constantes SERIAL_EV_XXX définissent les bits d’indicateur dans le masque d’attente pour un port série.
#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
Les constantes SERIAL_EV_XXX définissent les types d’événements qui peuvent être spécifiés dans un masque d’attente. Une fois qu’un client (application ou pilote périphérique) ouvre une connexion à un port série, le client peut spécifier un masque d’attente qui indique les types d’événements dont le client a besoin pour surveiller. Ces événements sont des modifications dans l’état matériel du port série. Lorsqu’un événement dans le masque d’attente se produit, le client est averti.
Les demandes de contrôle IOCTL_SERIAL_SET_WAIT_MASK et IOCTL_SERIAL_GET_WAIT_MASK utilisent des masques d’attente d’événements pour spécifier un ensemble d’événements sur lesquels un client peut attendre. Une valeur de masque d’attente est égale à zéro ou au niveau du bit OU d’une ou plusieurs constantes SERIAL_EV_XXX. Une valeur de masque d’attente de zéro indique que le client n’attend aucun événement.
Le client envoie une demande de contrôle IOCTL_SERIAL_WAIT_ON_MASK pour attendre un événement dans le masque d’attente actuellement défini. Le pilote du contrôleur série termine cette requête lorsqu’un événement dans le masque d’attente se produit.
Le tableau suivant indique les bits d’indicateur SERIAL_EV_XXX pris en charge par SerCx2, SerCx et Serial.sys. Une entrée Oui dans la table indique que l’extension ou le pilote du framework série prend en charge le bit d’indicateur correspondant. Une entrée Aucun indique que le bit d’indicateur n’est pas pris en charge.
Bit d’indicateur | SerCx2 | SerCx | Serial.sys |
---|---|---|---|
SERIAL_EV_RXCHAR | Oui | Oui | Oui |
SERIAL_EV_RXFLAG | Voir la note. | Non | Oui |
SERIAL_EV_TXEMPTY | Oui | Oui | Oui |
SERIAL_EV_CTS | Oui | Oui | Oui |
SERIAL_EV_DSR | Oui | Oui | Oui |
SERIAL_EV_RLSD | Voir la note. | Oui | Oui |
SERIAL_EV_BREAK | Oui | Oui | Oui |
SERIAL_EV_ERR | Oui | Oui | Oui |
SERIAL_EV_RING | Voir la note. | Oui | Oui |
SERIAL_EV_PERR | Voir la note. | Non | Non |
SERIAL_EV_RX80FULL | Voir la note. | Non | Oui |
SERIAL_EV_EVENT1 | Voir la note. | Non | Non |
SERIAL_EV_EVENT2 | Voir la note. | Non | Non |
Exigences
Exigence | Valeur |
---|---|
d’en-tête | ntddser.h (include Ntddser.h) |