Partager via


Opérations de lecture et d’écriture

Windows prend en charge les opérations d’E/S de fichiers synchrones et asynchrones (qui se chevauchent) sur les ressources de communication série. Les opérations qui se chevauchent permettent au thread appelant d’effectuer d’autres tâches pendant que l’opération s’exécute en arrière-plan. Un thread utilise la fonction ReadFile ou ReadFileEx pour lire à partir d’une ressource de communication, et la fonction WriteFile ou WriteFileEx pour écrire dans une ressource de communication. ReadFile et WriteFile peuvent être exécutés de manière synchrone ou asynchrone. ReadFileEx et WriteFileEx ne peuvent être effectués que de manière asynchrone.

Le comportement de ces fonctions de lecture et d’écriture est affecté par le fait que la fonction est exécutée en tant qu’opération qui se chevauche, si les paramètres de délai d’attente sont associés au handle et si les paramètres de contrôle de flux sont associés au handle.

Un thread peut également écrire dans une ressource de communication à l’aide de la fonction TransmitCommChar , qui transmet un caractère spécifié avant toutes les données en attente dans la mémoire tampon de sortie. Cette fonction est utile pour transmettre un caractère de signal à haute priorité au système récepteur. La transmission du caractère de priorité élevée est toujours soumise à un contrôle de flux et à des délais d’écriture, et l’opération est effectuée de manière synchrone.

Un thread peut utiliser la fonction PurgeComm pour ignorer tous les caractères de la mémoire tampon de sortie ou d’entrée d’un appareil. PurgeComm peut également mettre fin aux opérations de lecture ou d’écriture en attente, même si les opérations ne sont pas terminées. Si un thread utilise PurgeComm pour vider une mémoire tampon de sortie, les caractères supprimés ne sont pas transmis. Pour vider la mémoire tampon de sortie tout en s’assurant que le contenu est transmis, un thread peut appeler la fonction FlushFileBuffers (une opération synchrone). Notez toutefois que FlushFileBuffers est soumis à un contrôle de flux, mais pas à des délais d’expiration d’écriture, et qu’il ne retourne pas tant que toutes les opérations d’écriture en attente n’auront pas été transmises.