IOCTL_SERIAL_PURGE IOCTL (ntddser.h)
La requête IOCTL_SERIAL_PURGE annule les requêtes spécifiées et supprime les données des mémoires tampons spécifiées. La demande de vidage peut être utilisée pour annuler toutes les demandes de lecture et d’écriture, et pour supprimer toutes les données de la mémoire tampon de réception et de la mémoire tampon de transmission.
L’achèvement de la demande de vidage n’indique pas que les demandes annulées par la demande de vidage sont terminées. Un client doit vérifier que les demandes purgées sont terminées avant que le client libère ou réutilise les irPs correspondants.
Code principal
Mémoire tampon d’entrée
Le membre AssociatedIrp.SystemBuffer pointe vers un ULONG alloué au client utilisé pour entrer un masque de vidage . Le client définit le masque de vidage sur un ou plusieurs indicateurs de vidage suivants :
SERIAL_PURGE_RXABORT
-
Vide toutes les demandes de lecture (IRP_MJ_READ).
SERIAL_PURGE_RXCLEAR
-
Vide la mémoire tampon de réception, le cas échéant.
SERIAL_PURGE_TXABORT
-
Vide toutes les requêtes d’écriture (IRP_MJ_WRITE).
SERIAL_PURGE_TXCLEAR
-
Vide la mémoire tampon de transmission, le cas échéant.
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
Si la requête réussit, l'Informations membre est défini sur la taille, en octets, d’un ULONG. Dans le cas contraire, 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 de vidage n’est pas valide.
Remarques
Serial.sys et SerCx permettent à une demande de IOCTL_SERIAL_PURGE de spécifier une combinaison d’un ou plusieurs indicateurs de SERIAL_PURGE_XXX. Toutefois, SerCx2 est plus restrictif.
SerCx2 exige que toutes les demandes de lecture soient purgées si la mémoire tampon de réception est vidée. Par conséquent, si l’indicateur de SERIAL_PURGE_RXCLEAR est défini dans une requête IOCTL_SERIAL_PURGE, la file d’attente de requêtes d’E/S S SerCx2 ne doit pas contenir de demandes de lecture, ou l’indicateur de SERIAL_PURGE_RXABORT doit être défini. Sinon, la requête IOCTL_SERIAL_PURGE échoue avec un code d’état STATUS_INVALID_DEVICE_STATE.
De même, SerCx2 exige que toutes les demandes d’écriture soient purgées si la mémoire tampon de transmission est vidée. Par conséquent, si l’indicateur SERIAL_PURGE_TXCLEAR est défini dans une requête IOCTL_SERIAL_PURGE, la file d’attente de requêtes D/S SerCx2 ne doit pas contenir de demandes d’écriture, ou l’indicateur de SERIAL_PURGE_TXABORT doit être défini. Sinon, la requête IOCTL_SERIAL_PURGE échoue avec un code d’état STATUS_INVALID_DEVICE_STATE.
Pour plus d’informations sur SerCx2, SerCx et Serial.sys, consultez Vue d’ensemble des pilotes de contrôleur série.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | ntddser.h (include Ntddser.h) |