Partager via


IOCTL_SERIAL_PURGE IOCTL (ntddser.h)

La demande IOCTL_SERIAL_PURGE annule les demandes 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 IRP correspondants.

Code principal

IRP_MJ_DEVICE_CONTROL

Mémoire tampon d'entrée

Le membre AssociatedIrp.SystemBuffer pointe vers un ULONG alloué au client qui est utilisé pour entrer un masque de vidage. Le client définit le masque de vidage sur un ou plusieurs des indicateurs de vidage suivants :

SERIAL_PURGE_RXABORT

    Vide toutes les demandes de lecture (IRP_MJ_READ).

SERIAL_PURGE_RXCLEAR

    Purge la mémoire tampon de réception, le cas échéant.

SERIAL_PURGE_TXABORT

    Vide toutes les demandes 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 demande réussit, le membre Information est défini sur la taille, en octets, d’un ULONG. Sinon, 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 en série. Une status de STATUS_INVALID_PARAMETER indique que le masque de vidage n’est pas valide.

Remarques

Serial.sys et SerCx permettent à une demande IOCTL_SERIAL_PURGE de spécifier n’importe quelle combinaison d’un ou de plusieurs indicateurs SERIAL_PURGE_XXX . Toutefois, SerCx2 est plus restrictif.

SerCx2 nécessite 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 SERIAL_PURGE_RXCLEAR est défini dans une demande de IOCTL_SERIAL_PURGE , la file d’attente de demandes d’E/S SerCx2 ne doit contenir aucune demande de lecture, ou l’indicateur SERIAL_PURGE_RXABORT doit être défini. Sinon, la demande IOCTL_SERIAL_PURGE échoue avec un code STATUS_INVALID_DEVICE_STATE status.

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 demande de IOCTL_SERIAL_PURGE , la file d’attente de demandes d’E/S SerCx2 ne doit pas contenir de demandes d’écriture, ou l’indicateur SERIAL_PURGE_TXABORT doit être défini. Sinon, la demande IOCTL_SERIAL_PURGE échoue avec un code STATUS_INVALID_DEVICE_STATE status.

Pour plus d’informations sur SerCx2, SerCx et Serial.sys, consultez Vue d’ensemble des pilotes de contrôleur série.

Configuration requise

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