Mailslot

Pamietacie czasy, gdy pliki w sieci udostepnial OS/2 LAN Manager albo gdy serwer uslug terminalowych nazywal sie Hydra? To bylo dawno temu, ale jako ze i jedno i drugie bylo dzielem Microsoftu, do dzisiaj mozna znalezc w systemie Windows pewne ciekawe pozostalosci. Takim zywym reliktem czasów sprzed prawie 20 lat sa obiekty mailslot. Mailslot to jednokierunkowa metoda przesylania komunikatów pomiedzy systemami. Nie jest to jednak zaden specjalnie gleboko schowany mechanizm i kazdy, kto zechce go uzyc – moze spróbowac. Mailslot nie ma wprawdzie zadnej gwarancji doreczenia komunikatu, ale przeciez nie zawsze jest to niezbedne. Z cech najlepiej swiadczacych o wieku i mocno juz archaicznej technologii wymienic mozna równiez ograniczenie dlugosci komunikatu do 424 znaków.

Mailslot ma zawsze dwa konce: nasluchujacy (serwer) i nadajacy (klient). Aby utworzyc koniec nasluchujacy nalezy posluzyc sie nazwa w formacie " \\.\Mailslot\jakastamnazwa"  Aby cos do takiego nasluchujacego serwera poslac, nalezy uzyc nazwy " \\nazwaserwera\Mailslot\jakastamnazwa"
Co ciekawe, nadawanie jest mozliwe w formie broadcastów do wielu komputerów – serwerów mailslot równoczesnie. Oczywiscie na kazdym nasluchujacym serwerze, mailslot musi sie nazywac tak samo. Aby nadawac do swojej domeny, nalezy uzyc adresu " \\*\Mailslot\jakastamnazwa" a do dowolnej innej: " \\nazwadomeny\mailslot\jakastamnazwa" Wyglada znajomo? Kojarzy sie z NET SEND? I bardzo slusznie. NET SEND i usluga Messenger byly takimi wlasnie klientami i serwerami mailslot. Byly, bo warto pamietac, ze poczawszy od Windows Vista, zostaly usuniete z systemu.

Poniewaz mechanizmy mailslot odchodza powoli w zapomnienie, postanowilem poszukac ich sladów. W szybkim przegladzie znalazlem dwa:

  • \\.\Mailslot\HydraLsServer – pamietacie co to jest Hydra? Takim kanalem mailslot posluguje sie serwer licencjonujacy dla uslug terminalowych.
  • \\.\Mailslot\tapi\tpXXXX – mailslot uzywany przez TAPI (Telephony Application Programming Interface)

Mozliwosc uzycia komunikacji przez mailslot zapewniona jest przez sterownik msfs.sys znajdujacy sie w kazdym systemie Windows. A co, jezeli ktos chce sie pobawic taka komunikacja a nie jest programista? Otóz moze. Sluzy do tego mocno zapomniane polecenie WAITFOR Wprawdzie nie da sie bezposrednio czytac zawartosci pakietów, ale zawsze sobie mozna cos przez siec poprzesylac...

Autor: Grzegorz Tworek [MVP]