La boite aux lettres (BAL / mailslots) s'appelle \\nom_ordinateur\mailslot\chemin\nom_bal Elle peut donc s'utiliser pour des communications entre P.C. Elle utilise le mode de communication Datagramme qui ne garantit pas la livraison des message. On peut envoyer des messages à l'ensemble des ordinateurs en utilisant le nom \\*\mailslot\chemin\nom_bal. Je ne l'ai testée qu'en local entre deux Threads. On peut utiliser le nom \\.\mailslot\chemin\nom_bal Un thread devient créateur de mailslot par la commande : HMailslot = CreateMailslot("\\.\mailslot\chemin\nom_bal",SizeMaxCom,MAILSLOT_WAIT_FOREVER,NULL); Le nom de la boîte doit être unique et elle ne peut être détruite manuellement, elle l'est automatiquement à la mort du process. Le thread ecrivant dans la mailslot peut l'ouvrir HComWrite =CreateFile("\\.\mailslot\chemin\nom_bal", Malheureusement j'ai observé que sous NT, on ne pouvait l'ouvrir qu'une fois simultanément. Les lectures / écritures s'opère par les ReadFile et WriteFile standards. Voir aussi la fonction GetMailslotInfo La lecture s'opère message par message même s'il y a plusieurs messages en attente. Je n'ai pas noté de saturation sous NT de la mailslot, mais sous Windows 98, j'ai noté par exemple une saturation à 4000 messages, les nouveaux messages étant perdus sans avertissement. Sous 98 et NT j'ai également noté des temps d'écriture et de lecture (300+200 us sur un P120 sous NT, 100+100 sur un P166 sous NT) deux fois plus long que les pipes anonymes . Les mailslots sont à priori disponible sous 95/98/nt mais la fonction GetMailslotInfo qui permet de récupérer le nombre de message en attente a un problème sous 95.
|
|