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 exécutés de manière asynchrone.

Le comportement de ces fonctions de lecture et d’écriture est affecté par l’exécution de la fonction 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 de priorité élevée au système de réception. La transmission du caractère de priorité élevée est toujours soumise au contrôle de flux et aux délais d’attente 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 sortie ou de la mémoire tampon 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 n’ont pas été 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 garantissant que le contenu est transmis, un thread peut appeler la fonction FlushFileBuffers (une opération synchrone). Notez toutefois que FlushFileBuffers est soumis au contrôle de flux, mais pas aux délais d’expiration d’écriture, et qu’il ne retourne pas tant que toutes les opérations d’écriture en attente n’ont pas été transmises.