+---------------------------+
| Event Control block (ECB) |
+---------------------------+
Tuto strukturu předáváme ovladači, když po něm něco chceme.
Některé položky jsou v opačném pořadí ! tj. Vyšší-nižší.
Tato struktura je pro DOS na pracovní stanici.
+---------------+-----------------------------+------------+--------------+
|Posunutí |Název |typ |Uspořádání |
+---------------+-----------------------------+------------+--------------+
|00h |Link Address |BYTE[4] |Offset-Segment|
+---------------+-----------------------------+------------+--------------+
|04h |Adresa ESR |BYTE[4] |Offset-Segment|
+---------------+-----------------------------+------------+--------------+
|08h |InUseFlag |BYTE | |
+---------------+-----------------------------+------------+--------------+
|09h |Completion code |BYTE | |
+---------------+-----------------------------+------------+--------------+
|0Ah |Číslo soketu |WORD |Vyšši-nižší |
+---------------+-----------------------------+------------+--------------+
|0Ch |IPX workspace |BYTE[4] | |
+---------------+-----------------------------+------------+--------------+
|10h |Driver workspace |BYTE[12] | |
+---------------+-----------------------------+------------+--------------+
|1Ch |Cílová adresa |BYTE[6] | |
+---------------+-----------------------------+------------+--------------+
|22h |Počet fragmentů |WORD |Normálně |
+---------------+-----------------------------+------------+--------------+
|24h |Adresa 1.fragmentu |BYTE[4] |Offset-Segment|
+---------------+-----------------------------+------------+--------------+
|28h |Delka 1.fragmentu |BYTE[2] |Normálně |
+---------------+-----------------------------+------------+--------------+
|2Ah |Adresa 2.fragmentu |BYTE[4] |Offset-Segment|
+---------------+-----------------------------+------------+--------------+
|2Eh |Delka 2.fragmentu |BYTE[2] |Normálně |
+---------------+-----------------------------+------------+--------------+
| .......... | ...................... | ........ | |
+---------------+-----------------------------+------------+--------------+
Význam položek:
Link Addres:
Tuto polozku pouziva ovladač. Nemusíte s ní nic dělat, ale
můžete ji použít pro vase potřeby, jako indentifikace volných bloků.
Adresa ESR:
Adresa procedury ESR, která se bude volat po dokončení práce s
tímto blokem. Třeba po dojití paketu do ECB připraveného na příjem
se po úspěšném přijetí zavolá tato procedura. V té můžete tento
paket zpracovat a zadat další příjem. Pokud budete mít zájem, můžu
se o ní rozepsat více a i s parametry které dostává. Pokud ji
nepoužíváte, musí být vyplněna nulamy.
InUseFlag:
Je to příznak, jestli se tento ECB používá a nebo byl požadavek
úspěšně splněn. Odtud zjistíte, jestli vám něco došlo a nebo byl
paket už poslán.
Hodnoty:
00h - ECB se nepoužívá. Buďto byl požadavek splněn a nebo se
tento blok nepoužívá.
0F8h - Čeká na ve frontě na vyslání.
0FAh - Je právě zpracováván.
0FBh - Požadavek byl splněn, ale EBC ještě čeká na zpracování.
0FCh - ECB je použit AES (plánovač) , čeká na uplynutí nastaveného
času.
0FDh - Je použito IPX a čeká na uplynutí nastaveného času.
0FEh - Čeká na příjem paketu.
0FFh - Čeká na poslání paketu.
Po slnění požadavku nastaví IPX tuto položku na nulovou.
Completion Code:
Po splnění požadavku (nulová hodnota v InUseFlag) se tady
nastaví "úspěšnost" dokončení.
Při posílání paketu:
00h - V pořádku odesláno.
0FCh - Požadavek byl zrušen.
0FDh - Špatně vytvořený paket. Je menší než 30 byte (velikost
hlavičky), je větší než maximální délka (576 byte), první
fragment (část, ze kterých se skládá paket) je moc malý na
hlavičku a nebo nulový počet fragmentů.
0FEh - Paket nemůže být doručen. (asi když posíláte na stejný
počítač z kterého vysíláte a nemáte požadavek na příjem)
0FFh - Chyba hardware.
Při přijímání paketu:
00h - V pořádku, byl přijat paket.
0FCh - Požadavek příjmu byl zrušen.
0FDh - Přetečení. Paket byl moc veliký nebo máte málo místa
v fragmentech a všechny došlé data.
0FFh - Soket, který používáte je zavřen.
V případě naplánování události:
00h - V pořádku. Nastavený čas uplynul.
0F9h - Událos byla zrušena.
Při požadavku na zrušení příjmu,vysílání a pod:
00h - Událost byla zrušena.
0FCh - Událos nemůže být zrušena.
Číslo soketu:
Číslo soketu do kterého vysíláte\příjmáte. Musíte tento soket
nejdřív otevřít. Když ECB vysíláte, je tady číslo soketu z kterého
je paket poslán a když příjmá tak číslo soketu do kterého příjmáte.
IPX Workspace:
Driver Workspace:
Rezervováno pro IPX a ovladač. Pokud není ECB používáno, můžete
sem zapisovat co chcete.
Cílová adresa:
Sem napíšete adresu stanice, do které chcete paket poslat. V
skutečnosti se tento paket pošle do celé sítě, ale odchytne si jej
jen ta stanice, pro kterou je určen. Adresa každé stanice je dána
síťové kartě už u výrobce (u Ethernetu) a stačí když si ji zjistíte
pomocí služby IPX. Potom stací poslat tomu druhému svoji adresu a
začít komunikovat. Další možnost je poslat paket všem stanicím.
Potom tuto hodnotu vyplnte hodnotou 0FFFFFFFFFFFFh (samé efka).
Paket potom dojde každému do určeného soketu, pokud má požadavek na
příjem.
Počet fragmentů:
IPX paket se může skládat z jednoho nebo více částí. Když
budete mít hlavičku i všechna data paketu na jednom místě za sebou
jako nějakou strukturu, nastavte toto na 1. Běžná praxe je mít 2
části, v jedné mít hlavičku a ve druhém posílaná data. Při posílání
potom driver postupně bere tyto fragmenty a slepí je do jednoho, ten
potom pošle jako IPX paket.
Pro každý fragment následuje sekvence položek:
+---------------+-----------------------------+------------+--------------+
|2Ah |Adresa fragmentu |BYTE[4] |Offset-Segment|
+---------------+-----------------------------+------------+--------------+
|2Eh |Delka fragmentu |BYTE[2] |Normalne |
+---------------+-----------------------------+------------+--------------+
Pocet těchto bloků odpovídá položce Počet fragmentů. Adresa
fragmentu je celá adresa místa, kde jsou ulozena data pro tento
fragment a Delka fragmentu je jeho celková délka. První fragment
musí být větší nebo mít 30 byte, aby se do něj vlezla hlavička IPX.
výheň