+---------------------------+ | 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ň