Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

B-Tree Filer / BTF-9

.TXT
Скачиваний:
16
Добавлен:
01.05.2014
Размер:
239.97 Кб
Скачать
9. ‘ҐвҐўлҐ гвЁ«Ёвл
------------------

ЋЇЁб ­­лҐ ¤® бЁе Ї®а б।бвў  B-Tree Filer Ї®§ў®«пов ў ¬
ЇЁб вм Ў §л ¤ ­­ле, Ўлбва® Ё ­ ¤Ґ¦­® а Ў®в ойЁҐ Їа ЄвЁзҐбЄЁ ў
«оЎ®© бҐвҐў®© б।Ґ. Ћ¤­ Є®, бгйҐбвўгов Ё ҐйҐ ў®Їа®бл, Є®в®алҐ
­г¦­® гзЁвлў вм ¤«п в®Ј®, зв®Ўл ­ ЇЁб вм в Єго ЇаЁЄ« ¤­го
Їа®Ја ¬¬г, Є®в®а п ¤Ґ©б⢨⥫쭮 ЁбЇ®«м§®ў «  ЇаҐЁ¬гйҐбвў  бҐвЁ.
‚®-ЇҐаўле, ЇаЁЄ« ¤­ п Їа®Ја ¬¬  ¤®«¦­  гЎҐ¤Ёвмбп, зв® ®­ 
¤Ґ©б⢨⥫쭮 Ё¬ҐҐв ¤®бвгЇ Є ¦Ґ« Ґ¬®© бҐвЁ. ЌҐ®Ўе®¤Ё¬® § ЇЁа вм Ё
®вЇЁа вм а §¤Ґ«пҐ¬лҐ д ©«л. ’ॡгҐвбп гЇа ў«пвм ЇҐз вмо ®взҐв®ў.
Ђ Їап¬ п бўп§м ¬Ґ¦¤г а Ў®зЁ¬Ё бв ­жЁп¬Ё ўў®¤Ёв ­®ўго бдҐаг
дг­ЄжЁ®­ «м­®Ј® ­ §­ зҐ­Ёп Їа®Ја ¬¬, ®вЄалў п бдҐаг "ЈагЇЇ®ў®Ј®
Їа®Ја ¬¬­®Ј® ®ЎҐбЇҐзҐ­Ёп".

‘ гзҐв®¬ ўбҐЈ® нв®Ј® ¬л ᮧ¤ «Ё ваЁ ¤®Ї®«­Ёвм«м­ле ¬®й­ле
¬®¤г«п ¤«п ¬­®Ј®Ї®«м§®ў вҐ«мбЄ®© ўҐабЁЁ B-Tree Filer. (‚
®¤­®Ї®«м§®ў вҐ«мбЄго ўҐабЁо ®­Ё ­Ґ ўе®¤пв.) ЏаЁ§­ ў п «Ё¤Ёаго饥
Ї®«®¦Ґ­ЁҐ Novell ­  ал­ЄҐ бҐвҐ© ¤«п PC, ¬л ЇаҐ¤« Ј Ґ¬ ¬®¤г«м
NETWARE, ®ЎҐбЇҐзЁў ойЁ© Ў®«м讥 зЁб«® бЇҐжЁдЁз­ле ¤«п Novell
б।бвў.Њ®¤г«м NETBIOS ЇаҐ¤« Ј Ґв ¤®бвгЇ Є Ї®¤Їа®Ја ¬¬ ¬ ЇҐаҐ¤ зЁ
б®®ЎйҐ­Ё© ¬Ґ¦¤г а Ў®зЁ¬Ё бв ­жЁп¬Ё, Ї®¤¤Ґа¦Ёў Ґ¬л¬ Ў®«миЁ­бвў®¬
ᮢ६Ґ­­ле бҐвҐ©, ўЄ«оз п Novell, 3Com, PC LAN Ё PC-NET. Њ®¤г«м
SHARE ўЄ«оз Ґв ў бҐЎп Ї®¤Їа®Ја ¬¬л § ЇЁа ­Ёп д ©«®ў, б­ Ў¦Ґ­­лҐ
гвЁ«Ёв®© MS-DOS 3.x SHARE Ё ­ҐЄ®в®ал¬Ё Ї®¤Їа®Ја ¬¬ ¬Ё,
бЇҐжЁдЁзҐбЄЁ¬Ё ¤«п MS-NET Ё PC-LAN.

’аЁ ¤Ґ¬®­бва жЁ®­­лҐ Їа®Ја ¬¬л Ї®Є §лў ов ў®§¬®¦­®бвЁ
бҐвҐўле гвЁ«Ёв. NETINFO Ё¤Ґ­вЁдЁжЁагҐв ўЁ¤  ЄвЁў­®© бҐвЁ, Ґб«Ё
бҐвм Ё¬ҐҐвбп, Ё б®®Ўй Ґв ўбҐ ᢥ¤Ґ­Ёп ® бҐвЁ, Є®в®алҐ ®­  ¬®¦Ґв
®ЇаҐ¤Ґ«Ёвм. NSEND Ё NRECEIVE пў«повбп Ї ав­Ґа ¬Ё: ®­Ё Є®ЇЁагов
д ©« б ®¤­®© а Ў®зҐ© бв ­жЁЁ ­  ¤агЈго (ЎҐ§ Ї®б।бвў 
д ©«-бҐаўҐа ), ЁбЇ®«м§гп ¤«п нв®Ј® бҐаўЁб­лҐ б।бвў  NetBIOS Ё«Ё
NetWare, ® Є®в®але ўл г§­ ҐвҐ ­Ё¦Ґ ў ¤ ­­®© Ј« ўҐ. ќвЁ
¤Ґ¬®­бва жЁ®­­лҐ Їа®Ја ¬¬л ®ЇЁб ­л ў Ї®б«Ґ¤­Ґ¬ а §¤Ґ«Ґ ¤ ­­®©
Ј« ўл.

ЋЎйҐҐ ўўҐ¤Ґ­ЁҐ ў Є®­жҐЇжЁЁ ®аЈ ­Ё§ жЁЁ бҐвҐ© б¬. ў «оЎ®© Ё§
б«Ґ¤гойЁе Є­ЁЈ:

Understanding Local Area Networks
Stan Schatt, Howard W.Sams & Co, 1988.

Local Area Networks, The Second Generation
T.W.Madrone, John Wiley and Sons, 1988.

Communications and Networking for the IBM PC and Compatibles
Larry Jordan, Brady Books, Simon & Schuster, 1986.

A. Novell NetWare
-----------------

„«п ¤®бвгЇ  Є ¬®й­л¬ б।бвў ¬ бў®Ґ© ®ЇҐа жЁ®­­®© бЁб⥬л
Advanced NetWare дЁа¬  Novell Ї®бв ў«пҐв в®«мЄ® Ї®¤Їа®Ја ¬¬л ­ 
п§лЄҐ ‘Ё. ќв® ®бв ў«пҐв Їа®Ја ¬¬Ёбв®ў, а Ў®в ойЁе ­  Turbo
Pascal, ў ЎҐбЇ®¬®й­®¬ Ї®«®¦Ґ­ЁЁ. Њ®¤г«м NETWARE, Ї®бв ў«пҐ¬л© ў
б®бв ўҐ ¤ ­­®Ј® Їа®¤гЄв , ॠ«Ё§гҐв ¬­®ЈЁҐ б।бвў  Ё­вҐадҐ©б  б
ЇаЁЄ« ¤­л¬Ё Їа®Ја ¬¬ ¬Ё (API) NetWare - бҐаўЁб­лҐ б।бвў  ¤«п
¤®бвгЇ  Є дг­ЄжЁп¬ «®Є «м­®© бҐвЁ NetWare (LAN). €­бва㬥­вл,
б®Ўа ­­лҐ ў ¬®¤г«Ґ NETWARE, ¤Ґ« ов ¤®бвгЇ­л¬Ё в ЄЁҐ б।бвў , Є Є
бҐвҐў п бЁб⥬  ЎгдҐаЁ§ жЁЁ ЇҐз вЁ, бҐаўЁб­лҐ дг­ЄжЁЁ ®Ў¬Ґ­ 
б®®ЎйҐ­Ёп¬Ё, Їап¬ п бўп§м бв ­жЁп-бв ­жЁп, б।бвў  ва ббЁа®ўЄЁ
ва ­§ ЄжЁ© NetWare SFT, Ё в.¤.

‚ ¤Ґ©б⢨⥫쭮бвЁ ў NetWare API Ї®¤Їа®Ја ¬¬ §­ зЁвҐ«м­®
Ў®«миҐ, 祬 ॠ«Ё§®ў ­® ­ ¬Ё. Њл ўлЎа «Ё ¤«п ॠ«Ё§ жЁЁ ⥠Ё§
­Ёе, Є®в®алҐ, б ­ иҐ© в®зЄЁ §аҐ­Ёп, ­ Ё«гзиЁ¬ ®Ўа §®¬ ¤®Ї®«­пов
Ї®¤Їа®Ја ¬¬л B-Tree Filer. …б«Ё ў ¬ ­г¦­л ¤агЈЁҐ бҐвҐўлҐ
Ї®¤Їа®Ја ¬¬л, в® ¬л ­ ¤ҐҐ¬бп, зв® ­ и Ёб室­л© Є®¤, ў Є®¬ЎЁ­ жЁЁ
б ¤®Єг¬Ґ­в жЁҐ© Novell, Ї®§ў®«Ёв ॠ«Ё§®ў вм «оЎлҐ ў иЁ ¦Ґ« ­Ёп.

Џ®¤Їа®Ја ¬¬л ў ¤ ­­®¬ ¬®¤г«Ґ бЇҐжЁдЁз­л ¤«п б।л NetWare.
ЌҐЄ®в®алҐ ®ЇҐа жЁ®­­лҐ бЁб⥬л, б®ў¬ҐбвЁ¬лҐ б NetWare (ўа®¤Ґ
CBIS Network-OS), Ї®¤¤Ґа¦Ёў ов ­ҐЄ®в®алҐ Ё§ нвЁе дг­ЄжЁ©, ­®
¬ «®ўҐа®пв­®, зв®Ўл ®­Ґ Ї®¤¤Ґа¦Ёў «Ё ўбҐ.

ЏаЁ ­ ЇЁб ­ЁЁ ¤ ­­®© Ј« ўл ­ ¬ ЇаЁи«®бм ЇаҐ¤Ї®«®¦Ёвм, зв® ўл
§­ Є®¬л б ®ЎйЁ¬Ё Є®­жҐЇжЁп¬Ё «®Є «м­ле бҐвҐ©, Ё зв® ўл ў Є Є®©-в®
б⥯Ґ­Ё §­ ҐвҐ бҐаЁо Їа®¤гЄв®ў Novell Advanced NetWare. ‚
з бв­®бвЁ, ўл ¤®«¦­л §­ вм, зв® в Є®Ґ д ©«-бҐаўҐал, а Ў®зЁҐ
бв ­жЁЁ Ё бЁбвҐ¬л ЎгдҐаЁ§ жЁЁ ЇҐз вЁ. „ ­­®Ґ агЄ®ў®¤бвў® ­Ґ
Їлв Ґвбп ®Ўкпб­Ёвм ­Ё а Ў®вг NetWare, ­Ё Є ЎҐ«м­го а §ў®¤Єг,
в®Ї®«®ЈЁо Ё«Ё ⥮аЁо нв®© бҐвЁ. Ћб­®ўл §­ ­Ё© Ї® нвЁ¬ ў®Їа®б ¬
б¬. ў б«Ґ¤гойЁе бЇа ў®з­ЁЄ е:

ђгЄ®ў®¤бвў® Ї®«м§®ў вҐ«п Novell
‘Їа ў®з­ЁЄ Ї® Ё­вҐа䥩бг б ЇаЁЄ« ¤­л¬Ё Їа®Ја ¬¬ ¬Ё (API)
Novell, ը 1
‘Їа ў®з­ЁЄ Ї® Ё­вҐа䥩бг б ЇаЁЄ« ¤­л¬Ё Їа®Ја ¬¬ ¬Ё (API)
Novell, ը 2

‚бо нвг «ЁвҐа вгаг ¬®¦­® § Є § вм ­ҐЇ®б।б⢥­­® ­  дЁа¬Ґ
Novell.

‚ ¤ ­­®¬ а §¤Ґ«Ґ ¬л ЇЁиҐ¬ NETWARE § Ј« ў­л¬Ё ЎгЄў ¬Ё, Ґб«Ё
Ё¬ҐҐвбп ў ўЁ¤г ¬®¤г«м B-Tree Filer, Ё NetWare ᬥ蠭­л¬Ё ЎгЄў ¬Ё,
Ґб«Ё Ё¬ҐҐвбп ў ўЁ¤г ®ЇҐа жЁ®­­ п бЁб⥬  Novell.

Њ®¤г«м NETWARE ўЄ«оз Ґв ў ᥡп б।бвў , Є®в®алҐ ¬®¦­®
Ї®¤а §¤Ґ«Ёвм ­  Їпвм Є вҐЈ®аЁ©:

- “Їа ў«Ґ­ЁҐ д ©« ¬Ё Ё ¤ЁаҐЄв®аЁп¬Ё;

- ’а ббЁа®ўЄ  ва ­§ ЄжЁ©;

- ЃгдҐаЁ§ жЁп ЇҐз вЁ;

- Ѓ §®ўлҐ бҐаўЁб­лҐ б।бвў  ®Ў¬Ґ­  б®®ЎйҐ­Ёп¬Ё
(Є ­ «л Ё иЁа®Є®ўҐй вҐ«м­лҐ б।бвў );

- Џа®¤ўЁ­гвлҐ бҐаўЁб­лҐ б।бвў  ®Ў¬Ґ­  б®®ЎйҐ­Ёп¬Ё
(IPX Ё SPX).

„«п в®Ј®, зв®Ўл ®ЇЁблў вм ў§ Ё¬®бўп§ ­­лҐ Ї®¤Їа®Ја ¬¬л
ў¬ҐбвҐ, ¬л Ўг¤Ґ¬ а бб¬ ваЁў вм Є ¦¤го Є вҐЈ®аЁо ў ®в¤Ґ«м­®¬
а §¤Ґ«Ґ.

…б«Ё ўл гЈ«гЎ«Ґ­­® Ё§гзЁвҐ Ёб室­л© Є®¤ NETWARE, ўл гўЁ¤ЁвҐ,
зв® ­ҐЄ®в®алҐ Ё¤Ґ­вЁдЁЄ в®ал § ¤Ґ©бвў®ў ­л ¤«п Ё­вҐа䥩б , ­® ­Ґ
¤®Єг¬Ґ­вЁа®ў ­л. ЌҐб¬®вап ­  в®, зв® ўбҐ нвЁ Ё¤Ґ­вЁдЁЄ в®ал
ўлЇ®«­пов Ї®«Ґ§­лҐ дг­ЄжЁЁ, ¬л аҐиЁ«Ё, зв® Ґб«Ё ¬л Ї®Їлв Ґ¬бп Ёе
§¤Ґбм ¤®Єг¬Ґ­вЁа®ў вм, в® ¤ ­­ п Ј« ў  ђгЄ®ў®¤бвў  Ї® B-Tree
Filer ЇаҐўа вЁвбп ў ⮬, ®ЎкҐ¬®¬ ў Ї®«­л© Є®¬Ї«ҐЄв ¤®Єг¬Ґ­в жЁЁ
¤«п а §а Ў®взЁЄ  Novell. Њл ў§п«Ё Єгаб ­  ¤®Єг¬Ґ­вЁа®ў ­ЁҐ «Ёим
вҐе вЁЇ®ў Ё Ї®¤Їа®Ја ¬¬, б Є®в®ал¬Ё ¤Ґ©б⢨⥫쭮 ­Ґ®Ўе®¤Ё¬®
а Ў®в вм ®Ўлз­®¬г Їа®Ја ¬¬Ёбвг, ­Ґ бЇҐжЁ «Ё§Ёаго饬гбп
ЁбЄ«озЁвҐ«м­® Ї® бҐвп¬. …б«Ё г ў б Ё¬ҐҐвбп ¤®Єг¬Ґ­в жЁп Novell Ё
ўл е®вЁвҐ ў®бЇ®«м§®ў вмбп ­Ґ¤®Єг¬Ґ­вЁа®ў ­­л¬Ё Ї®¤Їа®Ја ¬¬ ¬Ё
NETWARE, в® Ї®«­л© ўЇҐаҐ¤! Њл Ё б ¬Ё Ёе ЁбЇ®«м§гҐ¬.

ЂвваЁЎгвл д ©«®ў Ё ¤ЁаҐЄв®аЁ©
-----------------------------

ЏҐаў п ЈагЇЇ  б।бвў а §а Ў®вЄЁ ў ¬®¤г«Ґ NETWARE ўЄ«оз Ґв ў
ᥡп бҐаўЁб­лҐ дг­ЄжЁЁ, Ё¬ҐойЁҐ ¤Ґ«® б д ©« ¬Ё, ¤ЁаҐЄв®аЁп¬Ё Ё
Ё­д®а¬ жЁҐ© ® ­Ёе. Џ®бв ў«пҐ¬лҐ ў ¬®¤г«Ґ Ї®¤Їа®Ја ¬¬л ЇаҐ¤« Ј ов
б«Ґ¤гойЁҐ дг­ЄжЁЁ:

- ЋЇаҐ¤Ґ«Ґ­ЁҐ в®Ј®, § Ја㦥­  «Ё NetWare;

- ЏаЁҐ¬ Ё«Ё гбв ­®ўЄ  а биЁаҐ­­ле д ©«®ўле  ваЁЎгв®ў;

- ЋЇаҐ¤Ґ«Ґ­ЁҐ в®Ј®, пў«пҐвбп «Ё д ©« а §¤Ґ«пҐ¬л¬,
Ё«Ё гбв ­®ўЄ  ҐЈ® ў Є зҐб⢥ в Є®ў®Ј®;

- ЏаЁҐ¬ «®ЈЁзҐбЄ®Ј® ­®¬Ґа  NetWare ¤«п ¬ аиагв  ­  бҐвҐў®¬
¤ЁбЄ®ў®¤Ґ;

- ЏаЁҐ¬ Ё«Ё гбв ­®ўЄ  Їа ў ¤®бвгЇ  Є ¤ЁаҐЄв®аЁЁ
(­  з⥭ЁҐ, ­  § ЇЁбм Ё в.¤.);

- ЏҐаҐЄ«о祭ЁҐ ¬Ґ¦¤г ०Ё¬ ¬Ё NetWare: а биЁаҐ­­®Ј® ०Ё¬ 
б § ЇЁа ­Ёп¬Ё Ё ०Ё¬  б®ў¬ҐбвЁ¬®бвЁ б DOS;

- ЋЇаҐ¤Ґ«Ґ­ЁҐ в®Ј®, Ё¬ҐҐв «Ё а Ў®з п бв ­жЁп ЇаЁўЁ«ҐЈЁЁ
Є®­б®«Ё;

- —⥭ЁҐ ¤ вл Ё ўаҐ¬Ґ­Ё бҐаўҐа  бҐвЁ.


Љ®­бв ­вл
---------

NwRead = $01;
NwWrite = $02;
NwOpen = $04;
NwCreate = $08;
NwDelete = $10;
NwParental = $20;
NwSearch = $40;
NwModify = $80;

ЋЇаҐ¤Ґ«Ґ­Ёп ЎЁв®ў®Ј® ­ Ў®а  ў ¬ бЄҐ ¤Ґ©бвўгойЁе Їа ў
¤®бвгЇ , ў®§ўа й Ґ¬®© <GetDirMask>.

NwPermanent = $01;
NwTemporary = $02;
NwLocal = $80;

ЋЇаҐ¤Ґ«Ґ­Ёп ЎЁв®ў®Ј® ­ Ў®а  ў Ї а ¬Ґвॠ<StatusFlags>,
ў®§ўа й Ґ¬®¬ Ё§ <GetDirHandle>.


’ЁЇл
----

DayOfTheWeek = (Sunday, Monday, Tuesday, Wennesday, Thursday,
Friday, Saturday);

€бЇ®«м§гҐвбп ў б®зҐв ­ЁЁ б Ї®¤Їа®Ја ¬¬®© <GetServerDateTime>.

ServerInformation =
record
Len : Word;
ServName : array [1..48] of Char;
NetWareVer : Byte;
NetWareSub : Byte;
MaxConns : Word;
UsedConns : Word;
MaxVols : Word;
Revision : Byte;
SFTLevel : Byte;
TTSLevel : Byte;
PeakConn : Word;
AccountVer : Byte;
VAPVer : Byte;
QueueVer : Byte;
PrintServVer : Byte;
VirtualVer : Byte;
SecurityVer : Byte;
BridgeVer : Byte;
Reserved : Array[1..60] of Byte;
end;

‘вагЄвга , ў®§ўа й Ґ¬ п Їа®жҐ¤га®© <GetServerInfo>.
Ѓ®«миЁ­бвў® Ї®«Ґ© ®ЇЁблў Ґв ­®¬Ґа  ўҐабЁ© Їа®Ја ¬¬­®Ј®
®ЎҐбЇҐзҐ­Ёп NetWare, а Ў®в о饣® б ¤ ­­л¬ бҐаўҐа®¬. Ќ ЁЎ®«ҐҐ
ў ¦­л¬Ё пў«повбп Ї®«п <NetWareVer> (Ј« ў­л© ­®¬Ґа ўҐабЁЁ),
<NetWareSub> (ўбЇ®¬®Ј вҐ«м­л© ­®¬Ґа ўҐабЁЁ), <MaxConns>
(¬ ЄбЁ¬ «м­®Ґ зЁб«® Ї®¤б®Ґ¤Ё­пҐ¬ле а Ў®зЁе бв ­жЁ©) Ё <UsedConns>
(д ЄвЁзҐбЄ®Ґ зЁб«® ᮥ¤Ё­Ґ­Ё©).


ConsolePriv
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function ConsolePriv : Boolean;

Џ а ¬Ґвал
---------

ђҐ§г«мв в ‚®§ўа й Ґв True, Ґб«Ё а Ў®з п бв ­жЁп Ё¬ҐҐв
ЇаЁўЁ«ҐЈЁЁ Є®­б®«Ё.


ЋЇЁб ­ЁҐ
--------

ЌҐЄ®в®алҐ бҐаўЁб­лҐ Ї®¤Їа®Ја ¬¬л NetWare вॡгов, зв®Ўл
ўл§лў ой п бв ­жЁп Ё¬Ґ«  ЇаЁўЁ«ҐЈЁЁ Є®­б®«Ё. €§ ўЄ«о祭­ле ў
б®бв ў ¬®¤г«п NETWARE в®«мЄ® <TTSDisable> Ё <TTSEnable> вॡгов
­ «ЁзЁп в Є®© ЇаЁўЁ«ҐЈЁЁ. „ ­­ п Ї®¤Їа®Ја ¬¬  ®ЇаҐ¤Ґ«пҐв, Ё¬ҐҐв
«Ё ўл§лў ой п бв ­жЁп в Єго ЇаЁўЁ«ҐЈЁо.


FileIsShareable
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function FileIsShareable(Path : PathName;
var FAttr : Word;
var ErrCode : Word) : Boolean;

Џ а ¬Ґвал
---------

Path €¬п д ©«  DOS.

FAttr ‚®§ўа й Ґ¬лҐ  вваЁЎгвл д ©«  DOS.

ErrCode 0 ў б«гз Ґ гбЇҐи­®Ј® ўлЇ®«­Ґ­Ёп;
Ё­ зҐ Є®¤ ®иЁЎЄЁ DOS.

ђҐ§г«мв в True, Ґб«Ё д ©« а §¤Ґ«пҐ¬л©; Ё­ зҐ False.

ЋЇЁб ­ЁҐ
--------

‚®§ўа й Ґв True, Ґб«Ё д ©«, § ¤ ­­л© Ї а ¬Ґв஬ Path,
Ї®¬ҐзҐ­ ў NetWare Є Є а §¤Ґ«пҐ¬л©. ЂвваЁЎгвл DOS д ©« 
ў®§ўа й овбп ў <FAttr>.

ЂвваЁЎгвл <DOS> д ©«  ЇаҐ¤бв ў«пов б®Ў®© б«®ў®, ЎЁв®ўл©
­ Ў®а Є®в®а®Ј® Ё­вҐаЇаҐвЁагҐвбп б«Ґ¤гойЁ¬ ®Ўа §®¬:

7 6 5 4 3 2 1 0
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | ------ ’®«мЄ® з⥭ЁҐ
| | | | | --------- ‘Єалвл©
| | | | ------------ ‘Ёб⥬­л©
| | | --------------- ЊҐвЄ  ⮬  Ё«Ё в®«мЄ® ¤«п ўлЇ®«­Ґ­Ёп
| | ------------------ ‘гЎ¤ЁаҐЄв®аЁп
| --------------------- Њ®¤ЁдЁжЁа®ў ­ б ¬®¬Ґ­в  Є®ЇЁа®ў ­Ёп
--------------------------- ђ §¤Ґ«пҐ¬л© (бЇҐжЁдЁз­® ¤«п NetWare)

” ЄвЁзҐбЄЁ  ваЁЎг⠯।бв ў«пҐв б®Ў®© Ї® а §¬Ґаг Ў ©в, ­®
Ґ¬г ®вў®¤Ёвбп б«®ў®, зв® ®ЎҐбЇҐзЁў Ґв ­ҐЇа®вЁў®аҐзЁў®бвм б
¬®¤г«Ґ¬ Turbo Pascal DOS.

ЋиЁЎЄЁ (ў®§ўа й Ґ¬лҐ ў ErrCode)
------

0 “бЇҐи­®Ґ § ўҐа襭ЁҐ.

2 ” ©« ­Ґ ­ ©¤Ґ­.

5 „®бвгЇ ­Ґ а §аҐиҐ­.


ЏаЁ¬Ґз ­Ёп
----------

NetWare ЁбЇ®«м§гҐв бв аиЁ© ЎЁв ®Ўлз­®Ј® Ў ©в   ваЁЎгв 
д ©«®ў DOS ¤«п ®Ў®§­ зҐ­Ёп ЇаЁ§­ Є  а §¤Ґ«пҐ¬®бвЁ д ©« . —в®Ўл
¤®бвгЇ Є д ©«г Ё¬Ґ«® ­ҐбЄ®«мЄ® а Ў®зЁе бв ­жЁ©, нв®в ЎЁв ¤®«¦Ґ­
Ўлвм пў­® гбв ­®ў«Ґ­ ЇаЁ ᮧ¤ ­ЁЁ д ©« , Ё«Ё ¦Ґ Ї®§¤­ҐҐ,
ЇаЁЄ« ¤­®© Їа®Ја ¬¬®©.

” ©«л, ®вЄалвлҐ ў бҐвЁ Novell ЇаЁ Ї®¬®йЁ Є®¬ ­¤ ¤«п бҐвҐўле
д ©«®ўле Ў«®Є®ў B-Tree Filer,  ўв®¬ вЁзҐбЄЁ Ї®«гз ов  ваЁЎгвл
а §¤Ґ«пҐ¬ле.

GetDirHandle
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function GetDirHandle(Drive : Char; var StatusFlags : Byte) : Byte;

Џ а ¬Ґвал
---------

Drive ЃгЄў  ¤«п Їа®ўҐа塞®Ј® ¤ЁбЄ®ў®¤ .

StatusFlags ‚®§ўа й Ґ¬л© вЁЇ «®ЈЁзҐбЄ®Ј® ­®¬Ґа  (handle)
¤ЁаҐЄв®аЁЁ.

ђҐ§г«мв в ‹®ЈЁзҐбЄЁ© ­®¬Ґа ¤ЁаҐЄв®аЁЁ,
0 ¤«п ­ҐўҐа­®Ј® ¤ЁбЄ®ў®¤ .


ЋЇЁб ­ЁҐ
--------

<Drive> § ¤ Ґв ЎгЄўг ¤ЁбЄ®ў®¤ , ­ ЇаЁ¬Ґа, 'A', 'B', Ё в.¤.
(ђҐЈЁбва ЇаЁ н⮬ §­ зҐ­Ёп ­Ґ Ё¬ҐҐв). ‘ҐаўЁб­лҐ дг­ЄжЁЁ ¤«п
бҐвҐўле д ©«®ў ­Ґ ®Ўа й овбп ­ҐЇ®б।б⢥­­® Є ¤ЁбЄ®ў®¤ ¬; ў¬Ґбв®
нв®Ј® ®­Ё ЁбЇ®«м§гов ®¤­®Ў ©в®ўлҐ «®ЈЁзҐбЄЁҐ ­®¬Ґа  ¤ЁаҐЄв®аЁ©.
„ ­­л© ўл§®ў Ї®§ў®«пҐв Їа®Ја ¬¬ ¬ ®ЇаҐ¤Ґ«Ёвм ⥪гйЁ© «®ЈЁзҐбЄЁ©
­®¬Ґа ¤ЁаҐЄв®аЁЁ, бўп§ ­­л© б Є®­ЄаҐв­л¬ ¤ЁбЄ®ў®¤®¬.

…б«Ё дг­ЄжЁп ў®§ўа й Ґв 0, нв® ®§­ з Ґв, зв® § ¤ ­ ­ҐўҐа­л©
¤ЁбЄ®ў®¤ <Drive>. ‚ Їа®вЁў­®¬ б«гз Ґ ў®§ўа й Ґ¬®Ґ §­ зҐ­ЁҐ а ў­®
«®ЈЁзҐбЄ®¬г ­®¬Ґаг ¤«п ¤ ­­®Ј® ¤ЁбЄ®ў®¤  (<Drive>).

StatusFlags ЇаҐ¤бв ў«пҐв б®Ў®© Ў ©в, ЎЁв®ўл© ­ Ў®а Є®в®а®Ј®
Ё­вҐаЇаҐвЁагҐвбп б«Ґ¤гойЁ¬ ®Ўа §®¬:

7 6 5 4 3 2 1 0
| | |
| | |
| | |
| | ------ ‹®ЈЁзҐбЄЁ© ­®¬Ґа Ї®бв®п­­®© ¤ЁаҐЄв®аЁЁ
| --------- ‹®ЈЁзҐбЄЁ© ­®¬Ґа ўаҐ¬Ґ­­®© ¤ЁаҐЄв®аЁЁ
--------------------------- Ћв®Ўа ¦ Ґвбп ­  «®Є «м­®¬ ¤ЁбЄ®ў®¤Ґ

ЏаЁ ®Є®­з ­ЁЁ а Ў®вл ⥪г饩 Їа®Ја ¬¬л «®ЈЁзҐбЄЁҐ ­®¬Ґа 
Ї®бв®п­­ле ¤ЁаҐЄв®аЁ© ­Ґ ®бў®Ў®¦¤ овбп,   ўаҐ¬Ґ­­лҐ «®ЈЁзҐбЄЁҐ
­®¬Ґа  ®бў®Ў®¦¤ овбп. "Ћв®Ўа ¦ Ґвбп ­  «®Є «м­®¬ ¤ЁбЄ®ў®¤Ґ"
®§­ з Ґв, зв® «®ЈЁзҐбЄЁ© ­®¬Ґа ¤ЁаҐЄв®аЁЁ ®в­®бЁвбп Є ¤ЁбЄ®ў®¤г,
дЁ§ЁзҐбЄЁ ­ е®¤п饬гбп ­  а Ў®зҐ© бв ­жЁЁ. …б«Ё ­Ё ®¤Ё­ Ё§ д« Ј®ў
­Ґ гбв ­®ў«Ґ­, в® ®в®Ўа ¦Ґ­Ёп ¬Ґ¦¤г ¤ЁбЄ®ў®¤®¬ Ё Є ЄЁ¬-«ЁЎ®
«®ЈЁзҐбЄЁ¬ ­®¬Ґа®¬ ¤ЁаҐЄв®аЁЁ ­Ґ бгйҐбвўгҐв.


GetDirPath
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function GetDirPath(DirHandle : Byte; var Path : String) : Byte;

Џ а ¬Ґвал
---------

DirHandle ‹®ЈЁзҐбЄЁ© ­®¬Ґа ¤ЁаҐЄв®аЁЁ.

DirPath ‚®§ўа й Ґ¬л© ¬ аиагв Є ¤ЁаҐЄв®аЁЁ,
бўп§ ­­®© б DirHandle.

ђҐ§г«мв в 0 ЇаЁ гбЇҐи­®¬ § ўҐа襭ЁЁ; Ё­ зҐ Є®¤ ®иЁЎЄЁ NetWare


ЋЇЁб ­ЁҐ
--------

‚®§ўа й Ґв ⥪гйго ¤ЁаҐЄв®аЁо, бўп§ ­­го б «®ЈЁзҐбЄЁ¬
­®¬Ґа®¬ ¤ЁаҐЄв®аЁЁ.

ЋиЁЎЄЁ (ў®§ўа й Ґ¬лҐ ў Є зҐб⢥ १г«мв в  дг­ЄжЁЁ)
------

$9B ЌҐўҐа­л© «®ЈЁзҐбЄЁ© ­®¬Ґа ¤ЁаҐЄв®аЁЁ.

ЏаЁ¬Ґз ­Ёп
----------

<Path> Ё¬ҐҐв вЁЇ String, Ї®бЄ®«мЄг NetWare Ї®§ў®«пҐв Ё¬Ґвм
Ў®«ҐҐ ¤«Ё­­лҐ­ ¬ аиагвл, 祬 DOS. ‚®§ўа й Ґ¬ п бва®Є  ¬®¦Ґв
д ЄвЁзҐбЄЁ Ё¬Ґвм ¤«Ё­г ¤® 255 Ў ©в®ў.


GetDirRights
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function GetDirRights(DirHandle : Byte;
Path : String;
var Rights : Byte) : Byte;

Џ а ¬Ґвал
---------

DirHandle ‹®ЈЁзҐбЄЁ© ­®¬Ґа ¤ЁаҐЄв®аЁЁ (§ ¤ ойЁ© ¤ЁбЄ®ў®¤).

Path €¬п бгЎ-¤ЁаҐЄв®аЁЁ DOS, ®в­®бЁвҐ«м­® DirHandle.

Rirhts ‚®§ўа й овбп ¤Ґ©бвўгойЁҐ Їа ў  ¤®бвгЇ .

ђҐ§г«мв вл 0 ЇаЁ гбЇҐи­®¬ § ўҐа襭ЁЁ; Ё­ зҐ Є®¤ ®иЁЎЄЁ NetWare.


ЋЇЁб ­ЁҐ
--------

‚®§ўа й Ґв ¤Ґ©бвўгойЁҐ Їа ў  ¤®бвгЇ  ¤ЁаҐЄв®аЁЁ а Ў®зҐ©
бв ­жЁЁ, гЇа ў«пойЁҐ д ©«®ўл¬Ё ®ЇҐа жЁп¬Ё, Є®в®алҐ бв ­жЁп ¬®¦Ґв
ўлЇ®«­пвм ў § ¤ ­­®© ¤ЁаҐЄв®аЁЁ. <DirHandle> ¤®«¦Ґ­ Ўлвм а ­ҐҐ
®ЇаҐ¤Ґ«Ґ­ ў ўл§®ўҐ <GetDirHandle>. <Path> (¬ аиагв) ­Ґ ¤®«¦Ґ­
ўЄ«оз вм ў бҐЎп ЎгЄўг ¤ЁбЄ®ў®¤ . ‘гЎ-¤ЁаҐЄв®аЁп Ё­вҐаЇаҐвЁагҐвбп
®в­®бЁвҐ«м­® ¤ЁбЄ®ў®¤  Ё ⥪г饩 ¤ЁаҐЄв®аЁЁ, § ¤ ў Ґ¬ле
<DirHandle>.

<Rights> нв® Ў ©в, ЎЁв®ў®Ґ ¬­®¦Ґбвў® Є®в®а®Ј®
Ё­вҐаЇаҐвЁагҐвбп б«Ґ¤гойЁ¬ ®Ўа §®¬:

7 6 5 4 3 2 1 0
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | ------ —⥭ЁҐ а §аҐиҐ­®
| | | | | | --------- ‡ ЇЁбм а §аҐиҐ­ 
| | | | | ------------ ” ©«л ¬®Јгв Ўлвм ®вЄалвл
| | | | --------------- ” ©«л ¬®Јгв Ўлвм ᮧ¤ ­л
| | | ------------------ ” ©«л ¬®Јгв Ўлвм г¤ «Ґ­л
| | --------------------- ‘гЎ-¤ЁаҐЄв®аЁЁ ¬®Јгв Ўлвм ᮧ¤ ­л
| | Ё«Ё г¤ «Ґ­л
| ------------------------ Џ®ЁбЄ ¤«п ¤ ­­®© ¤ЁаҐЄв®аЁЁ а §аҐиҐ­
--------------------------- ЃЁвл бв вгб  д ©«  ¬®Јгв Ўлвм
¬®¤ЁдЁжЁа®ў ­л

ЋиЁЎЄЁ
------

$98 ’®¬ ­Ґ бгйҐбвўгҐв.

$9B ЌҐўҐа­л© «®ЈЁзҐбЄЁ© ­®¬Ґа ¤ЁаҐЄв®аЁЁ.

ЏаЁ¬Ґз ­Ёп
----------

<Path> Ё¬ҐҐв вЁЇ String, Ї®бЄ®«мЄг NetWare Ї®§ў®«пҐв
§ ¤ ў вм Ў®«ҐҐ ¤«Ё­­лҐ ¬ аиагвл, 祬 DOS.


GetExtFAttr
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function GetExtFAttr(Path : PathName; var Attr : Byte) : Byte;

Џ а ¬Ґвал
---------

Path €¬п д ©¤  DOS.

Attr ‚®§ўа й Ґ¬лҐ а биЁаҐ­­лҐ  вваЁЎгвл д ©«л.

ђҐ§г«мв вл 0 ЇаЁ гбЇҐи­®¬ § ўҐа襭ЁЁ; Ё­ зҐ Є®¤ ®иЁЎЄЁ NetWare.


ЋЇЁб ­ЁҐ
--------

‚®§ўа й Ґв а биЁаҐ­­лҐ  ваЁЎгвл § ¤ ­­®Ј® д ©«  ў Ї а ¬ҐваҐ
<Attr>.

ђ биЁаҐ­­лҐ д ©«®ўлҐ  ваЁЎгвл ЇаҐ¤бв ў«пов б®Ў®© Ў ©в,
ЎЁв®ў®Ґ ¬­®¦Ґбвў® Є®в®а®Ј® Ё­вҐаЇаҐвЁагҐвбп б«Ґ¤гойЁ¬ ®Ўа §®¬:

7 6 5 4 3 2 1 0
| | | | | | |
| | | | ------------ ђҐ¦Ё¬ Ї®ЁбЄ 
| | | ------------------ ’а ­§ ЄжЁЁ а §аҐиҐ­л
| | --------------------- Ѓлбва п Ё­¤ҐЄб жЁп
| ------------------------ Љ®­ва®«м ¤®бвгЇ  з⥭Ёп
--------------------------- Љ®­ва®«м ¤®бвгЇ  § ЇЁбЁ

ЃЁвл ०Ё¬  Ї®ЁбЄ  Ё¬Ґов б¬лб« в®«мЄ® Є®Ј¤  <Path> § ¤ Ґв
ўлЇ®«­пҐ¬л© д ©«, ­ ЇаЁ¬Ґа .EXE- Ё«Ё .COM-д ©«. ‡­ зҐ­ЁҐ нв®Ј®
ЎЁв  ®ЇаҐ¤Ґ«пҐв, Ўг¤Ґв «Ё Ё Є ЄЁ¬ ®Ўа §®¬ ўлЇ®«­пҐ¬л© д ©« Ўг¤Ґв
ЁбЄ вм бў®Ё д ©«л ¤ ­­ле (Ё«Ё ®ўҐа«Ґ©­лҐ д ©«л). ЋЎлз­® ­ЁЄ Є®Ј®
Ї®ЁбЄ  ­Ґ ўлЇ®«­пҐвбп, Ё д ©« ¤ ­­ле ¤®«¦Ґ­ ­ е®¤Ёвмбп ў ⥪г饩
¤ЁаҐЄв®аЁЁ Ё«Ё ў ¤агЈ®© ¤ЁаҐЄв®аЁЁ, пў­® ­ §ў ­­®© ў ЇаЁЄ« ¤­®©
Їа®Ја ¬¬Ґ. Љ®Ј¤  Ї®ЁбЄ а §аҐиҐ­, NetWare  ўв®¬ вЁзҐбЄЁ б­ з « 
Їа®б¬ ваЁў Ґв ¤ЁаҐЄв®аЁо Ї® 㬮«з ­Ёо, § вҐ¬ ўбҐ ¤ЁбЄ®ў®¤л Ї®ЁбЄ 
(нЄўЁў «Ґ­в NetWare ¤«п DOS PATH). Џ®ЁбЄ Їа®Ёб室Ёв, Є®Ј¤ 
ЇаЁЄ« ¤­ п Їа®Ја ¬¬  ¤Ґ« Ґв ¤«п в®Ј®, зв®Ўл ®вЄалвм д ©«, ўл§®ў
Turbo Pascal Reset().

‚ᥠў¬Ґб⥠ваЁ ЎЁв  ¬®Јг⠯।бв ў«пвм б®Ў®© §­ зҐ­Ёп ®в 0
¤® 7, Ё­вҐаЇаҐвЁагҐ¬лҐ Є Є:

0 Љ®¬ ­¤ Ї®ЁбЄ  ­Ґв. ‚лЇ®«­пҐ¬л© д ©« Ўг¤Ґв ЁбЇ®«м§®ў вм
¬Ґв®¤ Ї®ЁбЄ , § ¤ ­­л© ў д ©«Ґ NetWare SHELL.CFG.
ќв®в ०Ё¬ пў«пҐвбп 㬮«з ­ЁҐ¬ ¤«п ўбҐе ўлЇ®«­пҐ¬ле
д ©«®ў.

1 …б«Ё ўлЇ®«­пҐ¬л¬ д ©«®¬ § ¤ Ґвбп Ї®«­®Ґ Ё¬п ¬ аиагв ,
в® Ї®ЁбЄ Ўг¤Ґв ўлЇ®«­Ґ­ в®«мЄ® Ї® н⮬㠬 аиагвг.
…б«Ё § ¤ ­® в®«мЄ® Ё¬п д ©« , в® NetWare Ўг¤Ґв
ЁбЄ вм ҐЈ® б­ з «  ў ⥪г饩 ¤ЁаҐЄв®аЁЁ,   § вҐ¬
­  ўбҐе ¤ЁбЄ®ў®¤ е Ї®ЁбЄ .

2 Џ®ЁбЄ в®«мЄ® ў ¤ЁаҐЄв®аЁЁ Ї® 㬮«з ­Ёо.

3 …б«Ё ўлЇ®«­пҐ¬л¬ д ©«®¬ § ¤ Ґвбп Ї®«­®Ґ Ё¬п ¬ аиагв ,
в® Ї®ЁбЄ Ўг¤Ґв ўлЇ®«­Ґ­ в®«мЄ® Ї® н⮬㠬 аиагвг.
…б«Ё § ¤ ­® в®«мЄ® Ё¬п д ©«  Ё д ©« ®вЄалв в®«мЄ®
¤«п з⥭Ёп, в® NetWare Ўг¤Ґв ЁбЄ вм ҐЈ® б­ з «  ў
⥪г饩 ¤ЁаҐЄв®аЁЁ,   § вҐ¬ ­  ўбҐе ¤ЁбЄ®ў®¤ е Ї®ЁбЄ .

4 ђҐ§ҐаўЁагҐвбп.

5 NetWare Ўг¤Ґв ўлЇ®«­пвм Ї®ЁбЄ б­ з «  ў ¤ЁаҐЄв®аЁЁ
Ї® 㬮«з ­Ёо,   § вҐ¬ ­  ўбҐе ¤ЁбЄ®ў®¤ е Ї®ЁбЄ ,
­Ґ§ ўЁбЁ¬® ®в в®Ј®, § ¤ ­ «Ё ¬ аиагв.

6 ђҐ§ҐаўЁагҐвбп.

7 …б«Ё д ©« ®вЄалв в®«мЄ® ­  з⥭ЁҐ, в® NetWare Ўг¤Ґв
ўлЇ®«­пвм Ї®ЁбЄ б­ з «  ў ¤ЁаҐЄв®аЁЁ Ї® 㬮«з ­Ёо,
  § вҐ¬ ­  ўбҐе ¤ЁбЄ®ў®¤ е Ї®ЁбЄ , ­Ґ§ ўЁбЁ¬® ®в в®Ј®,
§ ¤ ­ «Ё ¬ аиагв.

‚ б«гз Ґ, Ґб«Ё гбв ­®ў«Ґ­ ЎЁв ва ­§ ЄжЁ©, д ©« Ї®§ў®«пҐв
Ї®¤¤Ґа¦Єг ва ббЁа®ўЄЁ ва ­§ ЄжЁ© (TTS). …б«Ё гбв ­®ў«Ґ­ ЎЁв
Ўлбва®© Ё­¤ҐЄб жЁЁ, NetWare Ўг¤Ґв ¤Ґа¦ вм Ё­¤ҐЄб ўбҐе Ў«®Є®ў ў
д ©«Ґ, зв®Ўл 㢥«ЁзЁвм бЄ®а®бвм Їа®Ё§ў®«м­®Ј® ¤®бвгЇ . ќв®в ЎЁв
¤®«¦Ґ­ Ўлвм гбв ­®ў«Ґ­ ¤«п з бв® ЁбЇ®«м§гҐ¬ле д ©«®ў б а §¬Ґа®¬
Ў®«ҐҐ 2 ¬ҐЈ Ў ©в. ЃЁвл Є®­ва®«п з⥭Ёп Ё § ЇЁбЁ ®§­ з Ґв, зв®
Є ¦¤л© ¤®бвгЇ Є д ©«г Ўг¤Ґв ॣЁбваЁа®ў вмбп ў д ©«Ґ-¦га­ «Ґ
Є®­ва®«п ¤®бвгЇ  (б।бвў®, ­Ґ ॠ«Ё§®ў ­­®Ґ ў ­ҐЄ®в®але ўҐабЁпе
NetWare).

ЋиЁЎЄЁ (ў®§ўа й Ґ¬лҐ ў Є зҐб⢥ १г«мв в  дг­ЄжЁЁ)
------

2 ” ©« ­Ґ ­ ©¤Ґ­.

18 ‡ Їа иЁў ой п бв ­жЁп ­Ґ Ё¬ҐҐв Їа ў Ї®ЁбЄ .


GetServerDateTime
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

procedure GetServerDateTime(var Year : Word;
var Month, Day, Hour, Minute, Second : Byte;
var WeekDay : DayOfTheWeek);

Џ а ¬Ґвал
---------

Year ‚®§ўа й Ґ¬л© Ј®¤ (1900-1999).

Month ‚®§ўа й Ґ¬л© ¬Ґбпж (1..12).

Day ‚®§ўа й Ґ¬л© ¤Ґ­м ¬Ґбпж  (1..31).

Hour ‚®§ўа й Ґ¬л© з б (0..23).

Minute ‚®§ўа й Ґ¬ п ¬Ё­гв  (0..59).

Second ‚®§ўа й Ґ¬ п ᥪ㭤  (0..59).

WeekDay ‚®§ўа й Ґ¬л© ¤Ґ­м ­Ґ¤Ґ«Ё (Sunday..Saturday).

ЋЇЁб ­ЁҐ
--------

‚®§ўа й Ґв бҐвҐў®Ґ ўаҐ¬п Ё ¤ вг Ё§ д ©«-бҐаўҐа .

ЏаЁ¬Ґз ­Ёп
----------

Џ®бЄ®«мЄг а Ў®зЁҐ бв ­жЁЁ, а Ў®в ойЁҐ ў NetWare, ¬®Јгв Ё¬Ґвм
а §­лҐ гбв ­®ўЄЁ ў­гв७­Ёе з б®ў, е®а®иҐ© Їа ЄвЁЄ®© пў«пҐвбп
бЁ­еа®­Ё§ жЁп бҐвҐўле ®ЇҐа жЁ© Ї® ўаҐ¬Ґ­Ё Ё ¤ вҐ, ў®§ўа й Ґ¬л¬
д ©«-бҐаўҐа®¬. „®«¦­  «Ё ЇаЁЄ« ¤­ п Їа®Ја ¬¬  ЇаЁ­г¤ЁвҐ«м­®
бЎа блў вм «®Є «м­лҐ §­ зҐ­Ёп ¤ вл/ўаҐ¬Ґ­Ё, Ё«Ё ЁЈ­®аЁа®ў вм Ёе,
аҐи Ґв Їа®Ја ¬¬Ёбв.


GetServerInfo
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

procedure GetServerInfo(var ServerInfo : ServerInformation);

Џ а ¬Ґвал
---------

ServerInfo ‚®§ўа й Ґвбп Ї®¤а®Ў­ п Ё­д®а¬ жЁп, ®ЇЁблў ой п
бҐаўҐа.


ЋЇЁб ­ЁҐ
--------

‚®§ўа й Ґв Ї®¤а®Ў­го Ё­д®а¬ жЁо ® д ©«-бҐаўҐаҐ Ї® 㬮«з ­Ёо.
ќв  Ё­д®а¬ жЁп ўЄ«оз Ґв ў бҐЎп ўҐабЁо NetWare, ў Є®в®а®© а Ў®в Ґв
бҐаўҐа, Ё¬п бҐаўҐа , ¬ ЄбЁ¬ «м­®Ґ зЁб«® Ё д ЄвЁзҐбЄ®Ґ зЁб«®
Ї®¤б®Ґ¤Ё­Ґ­­ле а Ў®зЁе бв ­жЁ©. Ѓ®«ҐҐ Ї®¤а®Ў­®Ґ ®ЇЁб ­ЁҐ Ї®«Ґ© ў
<ServerInfo> б¬. ¤«п вЁЇ  <ServerInformation>.


GetWSInfo
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

procedure GetWSInfo(var ShellMajor, ShellMinor
ShellRevision : Byte;
var OSType, OSVer, Hardware : Str10);

Џ а ¬Ґвал
---------

ShellMajor „ҐбпвЁз­ п з бвм ўҐабЁЁ ®Ў®«®зЄЁ NetWare.

ShellMinor „а®Ў­ п з бвм.

ShellRevision Ќ®¬Ґа ॢЁ§ЁЁ ®Ў®«®зЄЁ.

OSType ’ЁЇ ўҐабЁЁ NetWare.

OSVer ‘ва®Є®ў®Ґ ЇаҐ¤бв ў«Ґ­ЁҐ ­®¬Ґа  ўҐабЁЁ.

Hardware ’ЁЇ  ЇЇ а в­®Ј® ®ЎҐбЇҐзҐ­Ёп бҐвЁ.


ЋЇЁб ­ЁҐ
--------

‚®§ўа й Ґв Ё­д®а¬ жЁо ® ўҐабЁЁ NetWare Ё§ «®Є «м­®© Є®ЇЁЁ
®Ў®«®зЄЁ. „ ­­ п дг­ЄжЁп ¤®бвгЇ­  в®«мЄ® ¤«п Advanced NetWare
ўҐабЁ© 2.20 Ё бв аиҐ. <GetServerInfo> ¤®бвгЇ­  ¤«п ўбҐе ўҐабЁ©
NetWare. <GetWSInfo> ў®§ўа й Ґв ­г«ҐўлҐ Ё«Ё ЇгбвлҐ Ї а ¬Ґвал,
Ґб«Ё дг­ЄжЁп ­Ґ Ї®¤¤Ґа¦Ёў Ґвбп.

IsLockModeExtended
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function IsLockModeExtended : Boolean;

Џ а ¬Ґвал
---------

ђҐ§г«мв в True ЇаЁ ЁбЇ®«м§®ў ­ЁЁ а биЁаҐ­­®Ј® ०Ё¬ 
§ ЇЁа ­Ёп; False ў Їа®вЁў­®¬ б«гз Ґ.

ЋЇЁб ­ЁҐ
--------

‚®§ўа й Ґв True ЇаЁ ЁбЇ®«м§®ў ­ЁЁ а биЁаҐ­­®Ј® ०Ё¬ 
§ ЇЁа ­Ёп Advanced NetWare. ‚ Їа®вЁў­®¬ б«гз Ґ § ЇЁа ­Ёп ў®§¬®¦­л
ў ०Ё¬Ґ б®ў¬ҐбвЁ¬®бвЁ, Є®в®ал© ¤®«¦Ґ­ ЁбЇ®«м§®ў вмбп ЇаЁ
ўлЇ®«­Ґ­ЁЁ ЇаЁЄ« ¤­®© Їа®Ја ¬¬л ў NetWare ўҐабЁ© ¤® 4.61.

‡ ЇЁа ­Ёп ў ०Ё¬Ґ б®ў¬ҐбвЁ¬®бвЁ ўлЇ®«­повбп Ї® 㬮«з ­Ёо.


MakeFileShareable
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function MakeFileShareable(Path : PathName) : Boolean;

Џ а ¬Ґвал
---------

Path €¬п д ©«  DOS.

ђҐ§г«мв в 0 ЇаЁ гбЇҐи­®¬ § ўҐа襭ЁЁ; Ё­ зҐ Є®¤ ®иЁЎЄЁ DOS.


ЋиЁЎЄЁ (ў®§ўа й Ґ¬лҐ ў Є зҐб⢥ १г«мв в  дг­ЄжЁЁ)
------

0 “бЇҐи­®Ґ § ўҐа襭ЁҐ.

2 ” ©« ­Ґ ­ ©¤Ґ­.

5 „®бвгЇ ­Ґ а §аҐиҐ­.


ЋЇЁб ­ЁҐ
--------

Џ®¬Ґз Ґв д ©«, § ¤ ­­л© ў Ї а ¬ҐвॠPath, Є Є а §¤Ґ«пҐ¬л©.
ќв® гбв ­ ў«Ёў Ґв бв аиЁ© ЎЁв д ©«®ў®Ј®  ваЁЎгв , ­® ­Ґ
¬®¤ЁдЁжЁагҐв Є ЄЁе-«ЁЎ® ¤агЈЁе ЎЁв®ў. Ќ ЇаЁ¬Ґа, ЁбЇ®«м§®ў ­ЁҐ
¤ ­­®© Ї®¤Їа®Ја ¬¬л ¤«п бЄалв®Ј® д ©«  б  ваЁЎг⮬ ¤®бвгЇ  в®«мЄ®
¤«п з⥭Ёп ¤ бв а §¤Ґ«пҐ¬л©, бЄалвл© д ©«, ¤®бвгЇ­л© в®«мЄ® ¤«п
з⥭Ёп.


NetWareLoaded
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function NetWareLoaded(var LoggedOn : Boolean) : Boolean;

Џ а ¬Ґвал
---------

LoggedOn ‚®§ўа й Ґв True, Ґб«Ё бв ­жЁп § аҐЈЁбваЁа®ў « бм
ў бҐвЁ; Ё­ зҐ False.

ђҐ§г«мв в ‚®§ўа й Ґв True, Ґб«Ё NetWare API ¤®бвгЇ­л.

ЋЇЁб ­ЁҐ
--------

ЏаЁЄ« ¤­лҐ Їа®Ја ¬¬л, Є®в®ал¬ ­г¦Ґ­ ¤®бвгЇ Є б«г¦ҐЎ­л¬
б।бвў ¬ NetWare, ¤®«¦­л ЇҐаў®© ўл§лў вм нвг Ї®¤Їа®Ја ¬¬г, зв®Ўл
Ј а ­вЁа®ў вм, зв® ®Ў®«®зЄ  NetWare (®Ўлз­® нв® NET3.COM Ё«Ё
ANET3.COM) Ўл«  § Ја㦥­  ­  ⥪г饩 а Ў®зҐ© бв ­жЁЁ. Џ а ¬Ґва
<LoggedOn> § ¤ Ґв, Ўл«  «Ё ⥪гй п бв ­жЁп § аҐЈЁбваЁа®ў ­  ў
бҐвЁ. ‚ᥠнв® ­Ґ®Ўе®¤Ё¬®, зв®Ўл ЇаЁЄ« ¤­ п Їа®Ја ¬¬  ¬®Ј« 
гбЇҐи­® ЁбЇ®«м§®ў вм Ї®¤Їа®Ја ¬¬л ¬®¤г«п NETWARE.


SetExtFAttr
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function SetExtFAttr(Path : PathName; Attr : Byte) : Byte;

Џ а ¬Ґвал
---------

Path €¬п д ©«  DOS.

Attr “бв ­ ў«Ёў Ґ¬лҐ а биЁаҐ­­лҐ  ваЁЎгвл.

ђҐ§г«мв в 0 ЇаЁ гбЇҐи­®¬ § ўҐа襭ЁЁ; Ё­ зҐ Є®¤ ®иЁЎЄЁ NetWare.


ЋЇЁб ­ЁҐ
--------

“бвў ­ ў«Ёў Ґв а биЁаҐ­­лҐ  ваЁЎгвл д ©«  <Path> ў §­ зҐ­ЁҐ
<Attr>. „®Ї®«­ЁвҐ«м­го Ё­д®а¬ жЁо ® ў®§¬®¦­ле  ваЁЎгв е б¬. ў
®ЇЁб ­ЁЁ <GetExtFAttr>.

ЋиЁЎЄЁ (ў®§ўа й Ґ¬лҐ ў Є зҐб⢥ १г«мв в  дг­ЄжЁЁ)
------

0 “бЇҐи­®Ґ § ўҐа襭ЁҐ.

2 ” ©« ­Ґ ­ ©¤Ґ­.

5 „®бвгЇ ­Ґ а §аҐиҐ­.



SetLockMode
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

procedure SetLockMode(Extended : Boolean);

Џ а ¬Ґвал
---------

Extended True, зв®Ўл а §аҐиЁвм а биЁаҐ­­л© ०Ё¬ § ЇЁа ­Ёп;
False, зв®Ўл § ЇаҐвЁвм.

ЋЇЁб ­ЁҐ
--------

“бв ­ ў«Ёў Ґв ०Ё¬ § ЇЁа ­Ёп. Џ® 㬮«з ­Ёо § ЇЁа ­ЁҐ
а Ў®в Ґв ў ०Ё¬Ґ б®ў¬ҐбвЁ¬®бвЁ, Є®в®ал© ¤®«¦Ґ­ Ўлвм ЁбЇ®«м§®ў ­,
Ґб«Ё ЇаЁЄ« ¤­ п Їа®Ја ¬¬  ¤®«¦­  а Ў®в вм ў NetWare ўҐабЁЁ ¤®
4.61.




’а ббЁа®ўЄ  ва ­§ ЄжЁ©
----------------------

Novel Advanced NetWare SFT (NetWare, гбв®©зЁў п Є бЁб⥬­л¬
бЎ®п¬) ®ЎҐбЇҐзЁў Ґв б«®¦­го бЁб⥬г ва ббЁа®ўЄЁ ва ­§ ЄжЁ©,
Ї®§ў®«пойго г«гзиЁвм 楫®бв­®бвм ¤ ­­ле. Ѓ« Ј®¤ ап бҐаўЁб­л¬
б।бвў ¬ ва ббЁа®ўЄЁ ва ­§ ЄжЁ© (TTS) бҐвҐў п ®ЇҐа жЁ®­­ п
бЁб⥬  ¬®¦Ґв Ј а ­вЁа®ў вм, зв® «ЁЎ® ўбп Ї®б«Ґ¤®ў вҐ«м­®бвм
®ЇҐа жЁ© § ЇЁиҐвбп ­  ¤ЁбЄ, «ЁЎ® ­  ¤ЁбЄ ­Ґ § ЇЁиҐвбп ­ЁзҐЈ®.
Њ®¤г«м NETWARE в Є¦Ґ Ї®¤¤Ґа¦Ёў Ґв нвЁ дгЄжЁЁ:

- ЋЇаҐ¤Ґ«Ґ­ЁҐ, ¤®бвгЇ­л «Ё бҐаўЁб­лҐ б।бвў  TTS;

- Ќ з «®, Є®­Ґж Ё«Ё  Ў®авЁа®ў ­ЁҐ ва ­§ ЄжЁЁ;

- Џа®ўҐаЄ  бв вгб  ва ­§ ЄжЁЁ;

- Ћв¬Ґ­  Ё«Ё а §аҐиҐ­ЁҐ ва ббЁа®ўЄЁ ва ­§ ЄжЁЁ.

NetWare Ї®¤¤Ґа¦Ёў Ґв ¤ўҐ Є вҐЈ®аЁЁ ва ­§ ЄжЁ©: пў­го Ё
­Ґпў­го. џў­лҐ ва ­§ ЄжЁЁ Ё­ЁжЁЁаговбп, Є®Ј¤  ЇаЁЄ« ¤­ п
Їа®Ја ¬¬  ўлЇ®«­пҐв пў­®Ґ ®Ўа йҐ­ЁҐ Є ®ЇҐа жЁ®­­®© бЁб⥬Ґ.
ЌҐпў­ п ва ­§ ЄжЁп ­ зЁ­ Ґвбп  ўв®¬ вЁзҐбЄЁ, Є®Ј¤  ®ЇҐа жЁ®­­ п
бЁб⥬  а бЇ®§­ Ґв, зв® ЇаЁЄ« ¤­ п Їа®Ја ¬¬   ЄвЁўЁа®ў « 
Є®­ЄаҐв­лҐ га®ў­Ё § ЇЁа ­Ёп § ЇЁбҐ©. ‡¤Ґбм ¤®Єг¬Ґ­вЁа®ў ­ в®«мЄ®
пў­л© ¬Ґв®¤; Ў®«ҐҐ Ї®¤а®Ў­го Ё­д®а¬ жЁо ® ­Ґпў­ле ва ­§ ЄжЁпе б¬.
ў ¤®Єг¬Ґ­в жЁЁ Novell Ё ®ЇЁб ­Ёпе Їа®жҐ¤га <TTSGetAppThresh> Ё
<TTSGetWSThresh>.


ЏаЁ¬Ґал
-------

Ќ ЁЎ®«ҐҐ з бв® TTS ЁбЇ®«м§говбп ў® ўаҐ¬п ¤®Ў ў«Ґ­Ёп,
г¤ «Ґ­Ёп Ё«Ё ¬®¤ЁдЁЄ жЁЁ § ЇЁбЁ Ў §л ¤ ­­ле. TSS ®б®ЎҐ­­® 業­л ў
н⮬ б«гз Ґ ⥬, зв® ®­Ё ¬®Јгв Ј а ­вЁа®ў вм, зв® ўбп ва ­§ ЄжЁп
楫ЁЄ®¬ - ®Ў­®ў«Ґ­ЁҐ д ©«  ¤ ­­ле Ё бўп§ ­­ле б ­Ё¬ Ё­¤ҐЄб®ў,-
Їа®Ё§®©¤Ґв Ї®«­®бвмо, «ЁЎ® ­Ґ Їа®Ё§®©¤Ґв ў®®ЎйҐ. „ ¦Ґ ०Ё¬
б®еа ­­®бвЁ B-Tree Filer б ¬ Ї® ᥡҐ нв®Ј® ®ЎҐбЇҐзЁвм ­Ґ ¬®¦Ґв.
‘«Ґ¤гойЁ© ЇаЁ¬Ґа, ®б­®ў ­­л© ­  Ї®¤Їа®Ја ¬¬ е, а бб¬ ваЁў Ґ¬ле ў
ѓ« ўҐ 6, Ї®Є §лў Ґв ¬ ЄҐв в Є®Ј® த  ЁбЇ®«м§®ў ­Ёп TTS.

var
UseTTS : Boolean;
TransactionActive : Boolean;

procedure BeginTransaction;
begin
if UseTTS and not TransactionActive then
case TTSBegin of
0, $FE, $FF : TransactionActive := True;
else
{‚л室 §  ЇаҐ¤Ґ«л а Ў®зҐ© ®Ў« бвЁ. ЋЎа Ў®вЄ  ®иЁЎЄЁ}
end;
end;

procedure EndTransaction;
var
ID : LongInt;
Retries : Word;
begin
if UseTTS and TransactionActive then
case TTSEnd(ID) of
0, $FE :
begin
Retries := 0;
while Retries < 100 do begin
if TTSStatus(ID) then
{ ’а ­§ ЄжЁп § ЇЁб ­  ­  ¤ЁбЄ }
Exit;
Delay(100);
inc(Retries);
end;
{ ’а ­§ ЄжЁп гвҐап­ . ЋЎа Ў®вЄ  ®иЁЎЄЁ }
end;
else
{ TTS ®в¬Ґ­Ґ­л. ЋЎа Ў®вЄ  ®иЁЎЄЁ }
end;
end;

procedure AbortTransaction;
begin
if UseTTS and TransactionActive then
case TTSAbort of
0, $FE, $FF : TransactionActive := False;
else
{ TTS ®в¬Ґ­Ґ­л. ЋЎа Ў®вЄ  ®иЁЎЄЁ }
end;
end;

function AddRecord(P : PersonDef) : Boolean;
var
KeyNr : Integer;
RefNr : LongInt;
Key : IsamKeyStr;
begin
AddRecord := False;

{‡ ЇҐаҐвм Ў §г ¤ ­­ле}
repeat
BTLockFileBlock(PF);
until not IsLockError(True);

{ Ќ з вм ва ­§ ЄжЁо }
BeginTransaction;

BTAddRec(PF, RefNr, P);
if not IsamOK then begin
{ЋЎа Ў®вЄ  ®иЁЎЄЁ}
BTUnLockFileBlock(PF);
AbortTransaction;
Exit;
end;

for KeyNr := 1 to NrKeys do begin
Key := CreateKey(P, KeyNr);
BTAddKey(PF, KeyNr, RefNr, Key);
if not IsamOK then begin
{“¤ «Ґ­ЁҐ ¤®Ў ў«Ґ­­ле ¤® бЁе Ї®а Є«о祩}
UndoAdd(P, RefNr, KeyNr-1);
{“¤ «Ґ­ЁҐ ­®ў®© § ЇЁбЁ}
BTDeleteRec(PF, RefNr);
{ЋЎа Ў®вЄ  ®иЁЎЄЁ}
BTUnLockFileBlock(PF);
AbortTransaction;
Exit;
end;
end;

BTUnLockFileBlock(PF);
if IsamOK then
EndTransaction;
AddRecord := IsamOK;
end;

var
LoggedOn : Boolean;

begin
{“ЎҐ¤Ёвмбп, зв® TTS ¤®бвгЇ­л}
UseTTS := False;
if NetWareLoaded(LoggedOn) then
if LoggedOn then
UseTTS := TTSAvailable ;
TransactionActive := False;
...
end.

Џ®Є § ­­®Ґ ўЄ«о祭ЁҐ ўл§®ў®ў TTS гЇа®й Ґв ®бв «м­го «®ЈЁЄг
Їа®Ја ¬¬л. ЏаЁ¬Ґа в Є¦Ґ Ї®Є §лў Ґв, Є Є § йЁвЁвмбп ®в Ї®ЇлвЄЁ
­ з вм ­®ўго ва ­§ ЄжЁо, ў в® ўаҐ¬п Є Є  ЄвЁў­  ¤агЈ п.

Ћв¬ҐвЁ¬, зв® ўл室 Ё§ Їа®жҐ¤гал EndTransaction ­Ґ Їа®Ёб室Ёв
¤® вҐе Ї®а, Ї®Є  ва ­§ ЄжЁп ­Ґ Ўг¤Ґв Ї®«­®бвмо ®в®Ўа ¦Ґ­  ­ 
¤ЁбЄҐ. (NetWare ¬®¦Ґв ЄҐиЁа®ў вм ¤ ­­лҐ ¤«п § ЇЁбЁ ­  ¤ЁбЄ ў
Ї ¬пвЁ ў вҐзҐ­ЁҐ ­ҐбЄ®«мЄЁе ᥪ㭤). Љ®­бҐаў вЁў­л© Ї®¤е®¤,
ЇаЁ­пвл© ў EndTransaction, ­Ґ ўбҐЈ¤  ४®¬Ґ­¤гҐвбп, Ї®бЄ®«мЄг ®­
¬®¦Ґв ЇаЁў®¤Ёвм Є ­ҐЇаЁпв­л¬ § ¤Ґа¦Є ¬ ў ॠЄжЁЁ Їа®Ја ¬¬л.
„агЈ®© Ї®¤е®¤ б®бв®Ёв ў ўҐ¤Ґ­ЁЁ бЇЁбЄ  Ё¤Ґ­вЁдЁЄ в®а®ў,
ва ­§ ЄжЁЁ Є®в®але Ўл«Ё § ўҐа襭л, Ё ўл§лў вм <TTSStatus> Ї®§¦Ґ,
ў® ўаҐ¬п ўлЇ®«­Ґ­Ёп. ’ Є®© Ї®¤е®¤ в Є¦Ґ Ё¬ҐҐв бў®Ё ­Ґ¤®бв вЄЁ -
Ґб«Ё Їа®и«® ­ҐбЄ®«мЄ® ᥪ㭤,   ва ­§ ЄжЁп ўбҐ ҐйҐ ­Ґ Ўл« 
§ ўҐа襭 , зв® ¤Ґ« вм ЇаЁЄ« ¤­®© Їа®Ја ¬¬Ґ? ’ Є®© १г«мв в,
ў®§¬®¦­®, ®§­ з Ґв бЎ®© ў бҐаўҐаҐ Ё«Ё ўбҐ© бҐвЁ ў 楫®¬. ‚ в Є®¬
б«гз Ґ Ґ¤Ё­б⢥­­ п १®­­ п ॠЄжЁп Їа®Ја ¬¬л б®бв®Ёв ў ⮬,
зв®Ўл б®®ЎйЁвм ­®¬Ґа  ­Ґ§ ўҐа襭­ле ва ­§ ЄжЁ© Ї®«м§®ў вҐ«о (¤«п
ў®§¬®¦­®бвЁ Ёе Ї®б«Ґ¤го饣® Ї®ўв®аҐ­Ёп) Ё ®бв ­®ўЁвм Їа®Ја ¬¬г.

‚ б«гз Ґ, Ґб«Ё Їа®Ё§®и«  ®иЁЎЄ , Ї®¤Їа®Ја ¬¬  AddRecord
¤®«¦­  ўлЇ®«­Ёвм ⥠¦Ґ ¤Ґ©бвўЁп Ї® "®вЄ вг ­ § ¤", зв® Ё ў
б«гз Ґ, Є®Ј¤  TTS ­Ґ ЁбЇ®«м§говбп. ќвЁ ¤Ґ©бвўЁп б®бв®пв ў
®Ў­®ў«Ґ­ЁЁ б®Ўб⢥­­ле ў­гв७­Ёе ЎгдҐа®ў B-Tree Filer;
AbortTransaction Ј а ­вЁагҐв, зв® ­Ё ®¤­® Ё§ нвЁе ®Ў­®ў«Ґ­Ё© ­ 
¤ЁбЄҐ ®ва ¦Ґ­® ­Ґ Ўг¤Ґв.

€ ­ Є®­Ґж ®в¬ҐвЁ¬, зв® ЇаЁЄ« ¤­ п Їа®Ја ¬¬  ¤®«¦­ 
®ЇаҐ¤Ґ«Ёвм ¤®бвгЇ­®бвм TTS ¤® в®Ј®, Є Є Їлв вмбп ®Ўа й вмбп Є
­Ё¬. …йҐ ®¤Ё­ ў ¦­л© и Ј Ї®Є § ­ ­Ґ Ўл«. ЏаҐ¦¤Ґ 祬 ва ббЁа®ўЄ 
ва ­§ ЄжЁ© ¬®¦Ґв Ўлвм ЁбЇ®«м§®ў ­  ¤«п «оЎ®Ј® д ©« , н⮬г д ©«г
¤®«¦Ґ­ Ўлвм ЇаЁбў®Ґ­ а биЁаҐ­­л© д ©«®ўл©  ваЁЎгв Novell,
Ї®§ў®«пойЁ© ўлЇ®«­пвм ва ббЁа®ўЄг. „®Ї®«­ЁвҐ«м­го Ё­д®а¬ жЁо ®Ў
н⮬ б¬. ўлиҐ, ў ®ЇЁб ­ЁЁ <SetExtFAttr>. „«п д ©«®ў®Ј® Ў«®Є 
B-Tree Filer ᮮ⢥вбвўгойЁ©  ваЁЎгв ¤®«¦Ґ­ Ўлвм ЇаЁбў®Ґ­ д ©« ¬
¤ ­­ле, Ё­¤ҐЄб®ў Ё ¤Ё «®Ј .


TTSAbort
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function TTSAbort : Byte;

Џ а ¬Ґвал
---------

ђҐ§г«мв в 0 ЇаЁ гбЇҐи­®¬ § ўҐа襭ЁЁ; Ё­ зҐ Є®¤ ®иЁЎЄЁ NetWare.

ЋЇЁб ­ЁҐ
--------

ЂЎ®авЁагҐв «оЎго Ї®¤ўҐиҐ­­го ва ­§ ЄжЁо. “бЇҐи­®Ґ § ўҐа襭ЁҐ
<TTSAbort> ®§­ з Ґв "ў®§ўа йҐ­­го" ва ­§ ЄжЁо, в.Ґ. зв® «оЎлҐ
®Ў­®ў«Ґ­Ёп ¤ЁбЄ , бўп§ ­­лҐ б ¤ ­­®© ва ­§ ЄжЁҐ©, Ўл«Ё
 ­­г«Ёа®ў ­л Ё«Ё г¤ «Ґ­л Ё§ ЎгдҐа®ў Ї ¬пвЁ. —в®Ўл нв  дг­ЄжЁп
¬®Ј«  а Ў®в вм, TTS ¤®«¦­л Ўлвм ¤®бвгЇ­л Ё а §аҐиҐ­л.

ЋиЁЎЄЁ
------

$FD TTS § ЇаҐйҐ­л ("ў®§ўа в" ва ­§ ЄжЁЁ ­Ґ Ї®«гзЁ«бп).

$FE ’а ­§ ЄжЁп  Ў®авЁа®ў ­ , ­® § ЇЁбЁ ®бв «Ёбм § ЇҐавл¬Ё.

$FF ЂЄвЁў­ле ва ­§ ЄжЁ© ­Ґ Ўл«®.

ЏаЁ¬Ґз ­Ёп
----------

ЂЎ®авЁа®ў ­ЁҐ ва ­§ ЄжЁЁ ®Ўлз­® ®бў®Ў®¦¤ Ґв ўбҐ § ЇҐавлҐ
дЁ§ЁзҐбЄЁҐ Ё «®ЈЁзҐбЄЁҐ § ЇЁбЁ, бўп§ ­­лҐ б ¤ ­­®© ва ­§ ЄжЁҐ©.


TTSAvailable
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function TTSAvailable : Boolean;

Џ а ¬Ґвал
---------

ђҐ§г«мв в True, Ґб«Ё TTS ¤®бвгЇ­л; Ё­ зҐ False.

ЋЇЁб ­ЁҐ
--------

ќв  дг­ЄжЁп ¤®«¦­  ўл§лў вмбп а ­миҐ ўбҐе ®бв «м­ле
Ї®¤Їа®Ја ¬¬ TTS, зв®Ўл ®ЇаҐ¤Ґ«Ёвм ¤®бвгЇ­®бвм бҐаўЁб­ле б।бвў
ва ббЁа®ўЄЁ ва ­§ ЄжЁ© (TTS).


TTSBegin
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function TTSBegin : Byte;

Џ а ¬Ґвал
---------

ђҐ§г«мв в 0 ЇаЁ гбЇҐи­®¬ § ўҐа襭ЁЁ;
Ё­ зҐ Є®¤ ®иЁЎЄЁ NetWare.

ЋЇЁб ­ЁҐ
--------

Ќ зЁ­ Ґв пў­го ва ­§ ЄжЁо. "’а ­§ ЄжЁп" - нв®
Ї®б«Ґ¤®ў вҐ«м­®бвм «®ЈЁзҐбЄЁ бўп§ ­­ле д ©«®ўле ®ЇҐа жЁ©, Є®в®алҐ
¤®«¦­л Їа®Ёб室Ёвм ЈагЇЇ®© - «ЁЎ® ўбп ЈагЇЇ  ®ЇҐа жЁ© ¤®«¦­ 
§ ўҐаиЁвмбп гбЇҐи­®, «ЁЎ® ­Ґ Їа®Ёб室Ёвм ў®®ЎйҐ. Џ®б«Ґ ­ з « 
ва ­§ ЄжЁЁ ­ Є ЄЁҐ бўп§ ­­лҐ б ­Ґ© д ©«®ўлҐ ®ЇҐа жЁЁ ­Ґ Ўг¤гв
®в®Ўа ¦Ґ­л ­  ¤ЁбЄҐ ¤® вҐе Ї®а, Ї®Є  ­Ґ Їа®Ё§®©¤Ґв ўл§®ў
<TTSEnd>.

ЋиЁЎЄЁ (ў®§ўа й Ґ¬лҐ ў Є зҐб⢥ १г«мв в  дг­ЄжЁЁ)
------

$96 ‚л室 §  ЇаҐ¤Ґ«л ¤Ё­ ¬ЁзҐбЄ®© а Ў®зҐ© ®Ў« бвЁ.

$FE ЌҐпў­ п ва ­§ ЄжЁп 㦥  ЄвЁў­ 
(­Ґпў­ п ва ­§ ЄжЁп ⥯Ґам ЇаҐўа вЁ« бм ў пў­го).

$FF џў­ п ва ­§ ЄжЁп 㦥  ЄвЁў­ 
(бгйҐбвўгой п ва ­§ ЄжЁп Їа®¤®«¦ Ґвбп).

’®«мЄ® $96 а бб¬ ваЁў Ґвбп Є Є гб«®ўЁҐ ®иЁЎЄЁ. …б« нв®
ў®§¬®¦­®6 Їа®Ја ¬¬  Ї®§¦Ґ ¤®«¦­  Ї®Їлв вмбп Ї®ўв®аЁвм нвг
дг­ЄжЁо.

ЏаЁ¬Ґз ­Ёп
----------

„«п в®Ј®, зв®Ўл д ©« ¬®Ј Ўлвм ЁбЇ®«м§®ў ­ б ва ббЁа®ўЄ®©
ва ­§ ЄжЁ©, ®­ ¤®«¦Ґ­ Ўлвм Ї®¬ҐзҐ­ (д« Ј®¬) Є Є ва ­§ ЄжЁ®­­л©
(б¬. <GetExtFAttr>). Ља®¬Ґ в®Ј®, бҐаўЁб­лҐ б।бвў  TTS ¤®«¦­л
Ўлвм ¤®бвгЇ­л Ё а §аҐиҐ­л (б¬. <TTSAvailable> Ё <TTSEnable>).

ЌҐпў­лҐ ва ­§ ЄжЁЁ, гЇ®¬п­гвлҐ ў ®ЇЁб ­ЁЁ ®иЁЎЄЁ $FE, §¤Ґбм
­Ґ ®ЇЁблў овбп. Ѓ®«ҐҐ Ї®¤а®Ў­го Ё­д®а¬ жЁо б¬. ў ‘Їа ў®з­ЁЄҐ Ї®
API Novell, ⮬ 2.


TTSDisable
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function TTSDisable : Boolean;

Џ а ¬Ґвал
---------

ђҐ§г«мв в True, Ґб«Ё бҐаўЁб­лҐ б।бвў  TTS ўлЄ«о祭л;
Ё­ зҐ False.

ЋЇЁб ­ЁҐ
--------

‚лЄ«оз Ґв бҐаўЁб­лҐ б।бвў  TTS (¤«п ўбҐ© бҐвЁ). „«п
ўлЄ«о祭Ёп TTS ўл§лў ой п Їа®Ја ¬¬  ¤®«¦­  Ё¬Ґвм ЇаЁўЁ«ҐЈЁЁ
Є®­б®«Ё (б¬. <ConsolePriv)>.

‚®§ўа в ¤Ґ©бвўЁп «оЎле ва ­§ ЄжЁ©, ўлЇ®«­Ґ­­ле Ї®б«Ґ
ўлЄ«о祭Ёп TTS, ­Ґў®§¬®¦Ґ­. ’а ­§ ЄжЁп, ­Ґ § ЇЁб ўи п ­ЁзҐЈ®
Ї®б«Ґ ўлЄ«о祭Ёп, ¬®¦Ґв ⥬ ­Ґ ¬Ґ­ҐҐ Ўлвм ॢҐабЁа®ў ­ , ў в®
ўаҐ¬п Є Є ва ­§ ЄжЁЁ ўлЄ«о祭л. ЋЎлз­® ўлЄ«о祭ЁҐ ва ­§ ЄжЁ©
ўлЇ®«­пҐвбп в®«мЄ® ў 楫пе вҐбвЁа®ў ­Ёп.


TTSEnable
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function TTSEnable : Boolean;

Џ а ¬Ґвал
---------

ђҐ§г«мв в True, Ґб«Ё бҐаўЁб­лҐ б।бвў  TTS ўЄ«о祭л;
Ё­ зҐ False.

ЋЇЁб ­ЁҐ
--------

‚Є«оз Ґв бҐаўЁб­лҐ б।бвў  TTS. „«п ўЄ«о祭Ёп TTS
ўл§лў ой п Їа®Ја ¬¬  ¤®«¦­  Ё¬Ґвм ЇаЁўЁ«ҐЈЁЁ Є®­б®«Ё (б¬.
<ConsolePriv)>. …б«Ё TTS ¤®бвгЇ­л, в® ®­Ё  ЄвЁў­л Ї® 㬮«з ­Ёо.

€­д®а¬ жЁп «оЎ®© ЇаҐ¤л¤г饩 ва ­§ ЄжЁЁ бвЁа Ґвбп, § 
ЁбЄ«о祭ЁҐ¬ ва ­§ ЄжЁ©, Є®в®алҐ Ўл«Ё  ЄвЁў­л ў ¬®¬Ґ­в ўлЄ«о祭Ёп
Ё Ї®б«Ґ нв®Ј® ­ЁзҐЈ® ­Ґ § ЇЁблў «Ё. ќвЁ ва ­§ ЄжЁЁ ­Ґ бвЁа овбп Ё
¬®Јгв Ўлвм ў®§ўа йҐ­л.

ЏаЁ¬Ґз ­Ёп
----------

‚ᥣ¤  Їа®ўҐап©вҐ ¤®бвгЇ­®бвм TTS (ўл§®ў®¬ <TTSAvailable>)
ЇҐаҐ¤ ЁбЇ®«м§®ў ­ЁҐ¬ <TTSEnable>. NetWare ¬®¦Ґв ўҐа­гвм True ¤«п
<TTSEnable>, Ґб«Ё TTS ­Ґ ¤®бвгЇ­л,


TTSEnd
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function TTSEnd(var ID : LongInt) : Byte;

Џ а ¬Ґвал
---------

ID ‚®§ўа й Ґвбп ®в­®бЁвҐ«м­л© ­®¬Ґа ва ­§ ЄжЁЁ.

ђҐ§г«мв в 0 ЇаЁ гбЇҐи­®¬ § ўҐа襭ЁЁ;
Ё­ зҐ Є®¤ ®иЁЎЄЁ NetWare.

ЋЇЁб ­ЁҐ
--------

‡ ўҐаи Ґв ва ­§ ЄжЁо. ‚ ¬®¬Ґ­в ў®§ўа в  Ё§ нв®© дг­ЄжЁЁ
ва ­§ ЄжЁп ­Ґ ®Ўп§ вҐ«м­® Ўл«  ®в®Ўа ¦Ґ­  ­  ¤ЁбЄҐ. (Ќ ЇаЁ¬Ґа, ў
нв® ўаҐ¬п Їа®Ё§®иҐ« бЎ®© бҐаўҐа ). „«п в®Ј®, зв®Ўл г§­ вм, Ўл« 
«Ё ўлЇ®«­Ґ­  § ЇЁбм ва ­§ ЄжЁЁ ­  ¤ЁбЄ, ЁбЇ®«м§г©вҐ §­ зҐ­ЁҐ
<ID>, ў®§ўа й Ґ¬®Ґ <TTSEnd>, ў ўл§®ўҐ <TTSStatus>.

ЋиЁЎЄЁ (ў®§ўа й Ґ¬лҐ ў Є зҐб⢥ १г«мв в  дг­ЄжЁЁ)
------

$9D TTS ўлЄ«о祭л.

$FE ’а ­§ ЄжЁп § Є®­зҐ­ , ­® § ЇЁбЁ ®бв «Ёбм § ЇҐавл¬Ё.

$FF ЂЄвЁў­®© ва ­§ ЄжЁЁ ­Ґ Ўл«®.

ЏаЁ¬Ґз ­Ёп
----------

…б«Ё ¤® Ї®«­®Ј® ®в®Ўа ¦Ґ­Ёп ва ­§ ЄжЁЁ ­  ¤ЁбЄҐ Їа®Ё§®иҐ«
бЎ®© бҐаўҐа , ЇаЁ ҐЈ® ЇҐаҐ§ Јаг§ЄҐ «оЎлҐ Ё§¬Ґ­Ґ­Ёп Ўг¤г⠮⬥­Ґ­л
("®вЄ в").

…б«Ё бҐаўЁб­лҐ б।бвў  ва ббЁа®ўЄЁ ва ­§ ЄжЁ© ўлЄ«о祭л, ­®
¤®бвгЇ­л, <ID> ¬®¦Ґв Ўлвм ⥬ ­Ґ ¬Ґ­ҐҐ ЇҐаҐ¤ ­ ў <TTSStatus>,
зв®Ўл ®ЇаҐ¤Ґ«Ёвм, ®в®Ўа §Ґ­  «Ё ва ­§ ЄжЁп ­  ¤ЁбЄҐ. ‹оЎлҐ
ва ­§ ЄжЁЁ, § ЇЁб ­­лҐ ­  ¤ЁбЄ Ї®б«Ґ ўлЄ«о祭Ёп ва ­§ ЄжЁ©, ­Ґ
¬®Јгв Ўлвм ў®§ўа йҐ­л.

ЂЎ®авЁа®ў ­ЁҐ ва ­§ ЄжЁЁ ®Ўлз­® ®бў®Ў®¦¤ Ґв ўбҐ § ЇҐавлҐ
дЁ§ЁзҐбЄЁҐ Ё «®ЈЁзҐбЄЁҐ § ЇЁбЁ, бўп§ ­­лҐ б ¤ ­­®© ва ­§ ЄжЁҐ©.


TTSStatus
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function TTSStatus(ID : LongInt) : Boolean;

Џ а ¬Ґвал
---------

ID ‚®§ўа й Ґ¬л© <TTSEnd> ®в­®бЁвҐ«м­л© ­®¬Ґа ва ­§ ЄжЁЁ.

ђҐ§г«мв в True, Ґб«Ё ва ­§ ЄжЁп гбЇҐи­® § ЇЁб ­  ­  ¤ЁбЄ;
Ё­ зҐ False.

ЋЇЁб ­ЁҐ
--------

<TTSStatus> ўл§лў ов Ї®б«Ґ <TTSEnd>, зв®Ўл гЎҐ¤Ёвмбп ў ⮬,
зв® ва ­§ ЄжЁп Ўл«  гбЇҐи­® § ЇЁб ­  ­  ¤ЁбЄ.

ЌҐ ¦¤ЁвҐ § ЇЁбЁ ва ­§ ЄжЁ© ­  ¤ЁбЄ, Ґб«Ё в®«мЄ® нв® ­Ґ
пў«пҐвбп  Ўб®«ов­® ­Ґ®Ўе®¤Ё¬л¬. Ђ«Ј®аЁв¬л ЄҐиЁа®ў ­Ёп
д ©«-бҐаўҐа  NetWare ¬®Јгв ЇаЁў®¤Ёвм Є § ¤Ґа¦Є ¬ ў 3-5 ᥪ㭤,
ЇаҐ¦¤Ґ 祬 Їа®Ё§®©¤Ґв д ЄвЁзҐбЄ п § ЇЁбм.

„ ­­ п дг­ЄжЁп ¬®¦Ґв Ўлвм ЁбЇ®«м§®ў ­  ¤«п ®ЇаҐ¤Ґ«Ґ­Ёп в®Ј®,
Їа®Ё§®и«  «Ё § ЇЁбм ва ­§ ЄжЁЁ, ¤ ¦Ґ Ґб«Ё <TTSEnd> б®®Ўй Ґв, зв®
ва ббЁа®ўЄ  ва ­§ ЄжЁ© ўлЄ«о祭 .


ЃгдҐаЁ§ жЁп ЇҐз вЁ
------------------

‘«Ґ¤гойЁ© ­ Ў®а Ї®¤Їа®Ја ¬¬ ¬®¤г«п NETWARE гЇа ў«пҐв
дг­ЄжЁп¬Ё ЎгдҐаЁ§ жЁЁ ЇҐз вЁ ў бҐвЁ. Џ®бЄ®«мЄг вҐа¬Ё­
"ЎгдҐаЁ§ жЁп" ЁбЇ®«м§гҐвбп Їа®Ја ¬¬Ёбв ¬Ё ў ­ҐбЄ®«мЄЁе б¬лб« е,
­Ґ®Ўе®¤Ё¬® ¤ вм ­ҐбЄ®«мЄ® ®ЇаҐ¤Ґ«Ґ­Ё©. Љ®Ј¤  а Ў®з п бв ­жЁп
NetWare  ЄвЁўЁагҐв ЎгдҐаЁ§ жЁо, ўҐбм ўл室, ®Ўлз­® ­ Їа ў«пҐ¬л©
­  «®Є «м­л© ЇаЁ­вҐа Ї® 㬮«з ­Ёо (­ ЇаЁ¬Ґа, LPT1), ­ Їа ў«пҐвбп
ў¬Ґбв® нв®Ј® ў д ©« ЇҐаҐеў в  д ©«-бҐаўҐа . ‡ вҐ¬ б в®зЄЁ §аҐ­Ёп
ЇаЁЄ« ¤­®© Їа®Ја ¬¬л ЇҐз вм Їа®Ёб室Ёв Є Є ®Ўлз­®, е®вп ­  б ¬®¬
¤Ґ«Ґ ўл室 Їа®Ја ¬¬л Їа®бв® ¤®Ў ў«пҐвбп ў д ©« ЇҐаҐеў в . „ «ҐҐ
ў®§¬®¦­л ваЁ ¤Ґ©бвўЁп. ЏаЁЄ« ¤­ п Їа®Ја ¬¬  ¬®¦Ґв ­®а¬ «м­л¬
бЇ®б®Ў®¬ § ўҐаиЁвм ЎгдҐаЁ§ жЁо, Ё ўн⮬ б«гз Ґ NetWare § Єалў Ґв
д ©« ЇҐаҐеў в  Ё бв ўЁв нв®в д ©« ў ®зҐаҐ¤м § ¤ ­Ё© ­  ЇҐз вм
ЇаЁ­вҐа®¬ бҐаўҐа . ЏаЁЄ« ¤­ п Їа®Ја ¬¬  ¬®¦Ґв "бЎа®бЁвм" ЎгдҐа,
зв® ®§­ з Ґв § ЄалвЁҐ ⥪г饣® д ©«  ЇҐаҐеў в , ЇҐаҐ¤ зг ҐЈ® ў
®зҐаҐ¤м ­  ЇҐз вм Ё ®вЄалвЁҐ ¤агЈ®Ј® д ©«  ЇҐаҐеў в , ў Є®в®а®¬
Їа®¤®«¦ Ґвбп ЎгдҐаЁ§ жЁп. ‹ЁЎ® ЇаЁЄ« ¤­ п Їа®Ја ¬¬  ¬®¦Ґв
 Ў®авЁа®ў вм ЎгдҐаЁ§ жЁо, зв® ®§­ з Ґв § ЄалвЁҐ Ё г¤ «Ґ­ЁҐ д ©«®ў
ЇҐаҐеў в  Ё ў®ббв ­®ў«Ґ­ЁҐ ўлў®¤  ЇҐз вЁ ­  «®Є «м­л© ЇаЁ­вҐа.

„«п Ї®¤¤Ґа¦ЄЁ нвЁе ®ЇҐа жЁ© NETWARE ўЄ«оз Ґ ў ᥡп
б«Ґ¤го饥:

- €¤Ґ­вЁдЁЄ жЁп Ё«Ё Ё§¬Ґ­Ґ­ЁҐ «®Є «м­®Ј® ЇаЁ­вҐа  Ї®
㬮«з ­Ёо;

- ‚Є«о祭ЁҐ Ё«Ё ўлЄ«о祭ЁҐ ЎгдҐаЁ§ жЁЁ ЇҐз вЁ;

- ‘Ўа®б ЎгдҐа  ­  ЇаЁ­вҐа;

- ЋЇаҐ¤Ґ«Ґ­ЁҐ в®Ј®,  ЄвЁў­  «Ё ЎгдҐаЁ§ жЁп;

- Џ®«г祭ЁҐ бв вгб  ЇаЁ­вҐа ;

- “Їа ў«Ґ­ЁҐ бва ­Ёз­л¬Ё § Ј®«®ўЄ ¬Ё ЇаЁ ЇҐз вЁ.


ЏаЁ¬Ґал
-------

Ља®¬Ґ в®Ј®, зв® ®ЎҐбЇҐзЁў Ґвбп ¤®бвгЇ Є ЇаЁ­вҐаг бв ­жЁ©, Є
Є®в®ал¬ ­Ґ Ї®¤Є«о祭 б®Ўб⢥­­л© ЇаЁ­вҐа, ЎгдҐаЁ§ жЁп г«гзи Ґв
ЎлбвதҐ©бвўЁҐ ЇаЁЄ« ¤­®© Їа®Ја ¬¬л §  бзҐв в®Ј®, зв® ЇаЁ
ЎгдҐаЁ§ жЁЁ ўлў®¤ Їа®Ёб室Ёв ­  ¤ЁбЄ,   ­Ґ ­  ¬Ґ¤«Ґ­­® а Ў®в о饥
гбва®©бвў® ЇҐз вЁ. ‘«Ґ¤гойЁ© ЇаЁ¬Ґа Ї®Є §лў Ґв, Є Є ЁбЇ®«м§®ў вм
бҐаўЁб­лҐ б।бвў  ЇҐз вЁ NetWare.

var
LPT : Text;
PrintJob : PrintJobType;
CaptureStatus : Byte;
begin
{ЋвЄалвм ¤®бвгЇ Ё§ Turbo Pascal Є ЇаЁ­вҐаг}
Assign(LPT, 'LPT1');
Rewrite(LPT);

{ ЋЎҐбЇҐзЁвм ЇҐаҐеў в NetWare ўлў®¤  LPT }
SetDefaultLocalPrinter(LPT1);

{ ЋЇаҐ¤Ґ«Ёвм е а ЄвҐаЁбвЁЄЁ а бЇҐз вЄЁ }
GetPrintJobFlags(PrintJob);

if PrintJob.Flags <> 0 then begin
{Њ®¤ЁдЁЄ жЁп «оЎле ¦Ґ« Ґ¬ле Ї®«Ґ© ў PrintJob}
...
SetPrintJobFlags(PrintJob);
end;

{Ќ з вм ЎгдҐаЁ§ жЁо}
CaptureStatus := StartLPTCapture;
if CaptureStatus <> 0 then
{ЋЎа Ў®вЄ  ®иЁЎЄЁ};

{‡ ЇЁбм ўлў®¤  ў LPT1, ЇҐаҐеў влў Ґ¬ п NetWare}
WriteLn(LPT, 'ЏаЁўҐв');

{ЏҐаҐ¤ з  ўлўҐ¤Ґ­­®Ј® ¤® бЁе Ї®а ­  ЇҐз вм ў ®зҐаҐ¤м}
Flush(LPT);
CaptureStatus := FlushLPTCapture;

{ЃгдҐаЁ§ жЁп ўлў®¤  ­  ЇаЁ­вҐа ЇаЁ н⮬ Їа®¤®«¦ Ґвбп}
WriteLn(LPT, '„® бўЁ¤ ­Ёп');

{ЏҐаҐ¤ з  ўлўҐ¤Ґ­­®Ј® ¤® бЁе Ї®а ­  ЇҐз вм ў ®зҐаҐ¤м
Ё Є®­Ґж ЇҐаҐеў в }
Close(LPT);
CaptureStatus := EndLPTCapture;
end.

„ ­­л© ЇаЁ­вҐа пў­® ®вЄалў Ґв «®Є «м­л© ЇаЁ­вҐа LPT1 Є Є
⥪бв®ўл© д ©«. ‚ нв®© Їа®Ја ¬¬Ґ ¬®¦­® в Є¦Ґ ЁбЇ®«м§®ў вм (USE)
¬®¤г«м PRINTER дЁа¬л Borland.

‚맮ў <SetPrintJobFlags> Ї®§ў®«пҐв ЇаЁЄ« ¤­®© Їа®Ја ¬¬Ґ
гЇа ў«пвм а §«Ёз­л¬Ё е а ЄвҐаЁбвЁЄ ¬Ё а бЇҐз вЄЁ, ­ ЇаЁ¬Ґа,
ЇаЁ­вҐа Є Є®Ј® бҐаўҐа  Ўг¤Ґв ЁбЇ®«м§®ў ­, Ўг¤Ґв «Ё ўлў®¤Ёвмбп
бва ­Ёз­л© § Ј®«®ў®Є,   в Є¦Ґ зЁб«® Є®ЇЁ© ¤«п ЇҐз вЁ.

Ћв¬ҐвЁ¬ ўл§®ўл Ї®¤Їа®Ја ¬¬ Turbo Pascal Flush Ё Close.
ЏаЁЄ« ¤­ п Їа®Ја ¬¬  ¤®«¦­  ўл§ў вм Ёе ЇҐаҐ¤ ўл§®ў®¬ Ї®¤Їа®Ја ¬¬
NetWare FlushLPTCapture Ё EndLPTCapture, зв®Ўл ®ЎҐбЇҐзЁвм § ЇЁбм
ў­гв७­Ёе ЎгдҐа®ў Turbo.

‚ ¤ ­­®¬ ЇаЁ¬ҐаҐ ­Ґ Ї®Є § ­л ўл§®ўл, Їа®ўҐапойЁҐ, зв®
NetWare § Ја㦥­ . ђ §г¬ҐҐвбп, ў ॠ«м­®© Їа®Ја ¬¬Ґ нв®
­Ґ®Ўе®¤Ё¬® ᤥ« вм.


’ЁЇл
----

PrinterDevice = (LPT1, LPT2, LPT3);

ЏаҐ¤бв ў«пҐв «оЎ®© Ё§ ваҐе Ї®ав®ў ¤«п Ї®¤Є«о祭Ёп ЇаЁ­вҐа®ў.
ЌҐ-бЁ¬ў®«ЁзҐбЄ®Ґ §­ зҐ­ЁҐ Є ¦¤®Ј® н«Ґ¬Ґ­в  - нв® §­ зҐ­ЁҐ,
ЁбЇ®«м§гҐ¬®Ґ BIOS ¤«п ЇаҐ¤бв ў«Ґ­Ёп ¤ ­­®Ј® ЇаЁ­вҐа .

PrintJobType =
record
Status : Byte;
Flags : Byte;
TabSize : Byte;
ServerPrinter : Byte;
NumCopies : Byte;
FormType : Byte;
Reserved : Byte;
Banner : Array[1..13] of Char;
LocalLPT : Byte;
FlushCaptureTimeout : Word;
FlushCaptureOnClose : Byte;
end;

ЋЇЁблў Ґв а бЇҐз вЄг. Ѓ®«ҐҐ Ї®¤а®Ў­го Ё­д®а¬ жЁо б¬. ў
®ЇЁб ­ЁЁ дг­ЄжЁЁ <GetPrintJobFlags>.


CancelLPTCapture
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function CancelLPTCapture : Byte;

Џ а ¬Ґвал
---------

ђҐ§г«мв в 0 ЇаЁ гбЇҐи­®¬ § ўҐа襭ЁЁ;
Ё­ зҐ Є®¤ ®иЁЎЄЁ NetWare.

ЋЇЁб ­ЁҐ
--------

ЏаҐЄа й Ґв ЇҐаҐеў в ўл室  ­  «®Є «м­л© ЇаЁ­вҐа. ” ©«
ЇҐаҐеў в  ­Ґ бв ўЁвбп ў ®зҐаҐ¤м ­  ЇҐз вм,   ­ Їа®вЁў, г¤ «пҐвбп.
—в®Ўл Ё§ЎҐ¦ вм ЇҐз вЁ, ўл§®ўЁвҐ <CancelLptCapture> ¤® ўл§®ў 
<EndLPTCapture> Ё«Ё <FlushCapture>.

„«п в®Ј®, зв®Ўл ў®§®Ў­®ўЁвм ЇҐаҐеў в ўл室  ­  ЇҐз вм,
ўл§®ўЁвҐ <StartLPTCapture>.


ЋиЁЎЄЁ (ў®§ўа й Ґ¬лҐ ў Є зҐб⢥ १г«мв в  дг­ЄжЁЁ)
------

Novell ­Ґ § ¤ Ґв Є ЄЁе-«ЁЎ® Є®¤®ў ®иЁЎЄЁ, ­® «оЎ®Ґ ­Ґ­г«Ґў®Ґ
§­ зҐ­ЁҐ ®§­ з Ґв, зв® Їа®Ё§®и«  ®иЁЎЄ .


EndLPTCapture
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function EndLPTCapture : Byte;

Џ а ¬Ґвал
---------

ђҐ§г«мв в 0 ЇаЁ гбЇҐи­®¬ § ўҐа襭ЁЁ;
Ё­ зҐ Є®¤ ®иЁЎЄЁ NetWare.

ЋЇЁб ­ЁҐ
--------

‡ Є ­зЁў Ґв ЇҐаҐеў в ўл室  ­  ЇҐз вм. ” ©« ЇҐаҐеў в 
§ Єалў Ґвбп Ё бв ўЁвбп ў ®зҐаҐ¤м ­  дЁ§ЁзҐбЄго ЇҐз вм, ­  ЇаЁ­вҐа
бҐаўҐа  Ї® 㬮«з ­Ёо. „«п  Ў®авЁа®ў ­Ёп § ¤ ­Ёп ­  ЇҐз вм ў¬Ґбв®
нв®© дг­ЄжЁЁ ЁбЇ®«м§г©вҐ <CancelLPTCapture>.

„«п в®Ј®, зв®Ўл ў®§®Ў­®ўЁвм ЇҐаҐеў в ўл室  ­  ЇҐз вм,
ўл§®ўЁвҐ <StartLPTCapture>.

ЋиЁЎЄЁ (ў®§ўа й Ґ¬лҐ ў Є зҐб⢥ १г«мв в  дг­ЄжЁЁ)
------

Novell ­Ґ § ¤ Ґв Є ЄЁе-«ЁЎ® Є®¤®ў ®иЁЎЄЁ, ­® «оЎ®Ґ ­Ґ­г«Ґў®Ґ
§­ зҐ­ЁҐ ®§­ з Ґв, зв® Їа®Ё§®и«  ®иЁЎЄ .


FlushLPTCapture
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function FlushLPTCapture : Byte;

Џ а ¬Ґвал
---------

ђҐ§г«мв в 0 ЇаЁ гбЇҐи­®¬ § ўҐа襭ЁЁ;
Ё­ зҐ Є®¤ ®иЁЎЄЁ NetWare.

ЋЇЁб ­ЁҐ
--------

‘в ўЁв ⥪гйЁ© д ©« ЇҐаҐеў в  ў ®зҐаҐ¤м ­  ЇҐз вм бҐаўҐа  Ё
­ зЁ­ Ґв ­®ўл© д ©« ЇҐаҐеў в . ЌҐ ўл§лў ©вҐ, Ї®Є  ­Ґ Ўг¤Ґв
ўл§ў ­  <StartLPTCapture>.

ЋиЁЎЄЁ (ў®§ўа й Ґ¬лҐ ў Є зҐб⢥ १г«мв в  дг­ЄжЁЁ)
------

Novell ­Ґ § ¤ Ґв Є ЄЁе-«ЁЎ® Є®¤®ў ®иЁЎЄЁ, ­® «оЎ®Ґ ­Ґ­г«Ґў®Ґ
§­ зҐ­ЁҐ ®§­ з Ґв, зв® Їа®Ё§®и«  ®иЁЎЄ .


GetBannerUser
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function GetBannerUse(var BannerUser : Str20) : Boolean;

Џ а ¬Ґвал
---------

BannerUser ‚®§ўа й Ґвбп Ё¬п Ї®«м§®ў вҐ«п, ЇҐз в Ґ¬®Ґ ­ 
бва ­Ёз­®¬ § Ј®«®ўЄҐ.

ђҐ§г«мв в True, Ґб«Ё дг­ЄжЁп Ї®¤¤Ґа¦Ёў Ґвбп;
Ё­ зҐ False.

ЋЇЁб ­ЁҐ
--------

ЏаЁ ЁбЇ®«м§®ў ­ЁЁ б।бвў ЎгдҐаЁ§ жЁЁ NetWare бва ­Ёз­л©
§ Ј®«®ў®Є, Ё¤Ґ­вЁдЁжЁагойЁ© Є ¦¤®Ґ § ¤ ­ЁҐ ЇҐз вЁ, ЇаҐ¤иҐбвўгҐв
б ¬®© а бЇҐз вЄҐ. <GetBannerUse> ў®§ўа й Ґв Ё¬п Ї®«м§®ў вҐ«п,
Є®в®а®Ґ Ўг¤Ґв Ї®пў«пвмбп ­  бва ­Ёз­®¬ § Ј®«®ўЄҐ. €¬п
Ї®«м§®ў вҐ«п ¬®¦Ґв Ўлвм Ё§¬Ґ­Ґ­® ўл§®ў®¬ <SetBannerUser>. ќвЁ
дг­ЄжЁЁ Ї®¤¤Ґа¦Ёў овбп в®«мЄ® Advanced NetWare ўҐабЁЁ 2.1 Ё«Ё
бв аиҐ.


GetDefaultLocalPrinter
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function GetDefaultLocalPrinter : PrinterDevice;

Џ а ¬Ґвал
---------

ђҐ§г«мв в “бва®©бвў® LPT, ¤®бвгЇ­®Ґ ¤«п ЇҐаҐеў в .

ЋЇЁб ­ЁҐ
--------

‚ᥠбўп§ ­­лҐ б ЇҐз в ойЁ¬Ё гбва®©бвў ¬Ё Ї®¤Їа®Ја ¬¬л ¬®¤г«п
NETWARE а Ў®в ов б «®Є «м­л¬ ЇаЁ­вҐа®¬ Ї® 㬮«з ­Ёо. „ ­­ п
Ї®¤Їа®Ја ¬¬  ®ЇаҐ¤Ґ«пҐв, Є®в®ал© ЇаЁ­вҐа ў ⥪гйЁ© ¬®¬Ґ­в
пў«пҐвбп 㬮«з ­ЁҐ¬ ¤«п NetWare. ЏаЁ­вҐа Ї® 㬮«з ­Ёо ¬®¦­®
Ё§¬Ґ­Ёвм ЇаЁ Ї®¬®йЁ <SetDefaultLocalPrinter>.


GetPrinterStatus
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

procedure GetPrinterStatus(ServerPrinter : Byte;
var PrinterNo, FormType : Byte;
var OffLine, Stopped : Boolean);

Џ а ¬Ґвал
---------

ServerPrinter Ќ®¬Ґа ЇаЁ­вҐа  ў бҐвЁ (0..4).

PrinterNo ‚®§ўа й Ґв в® ¦Ґ, зв® Ё ServerPrinter,
Ї®Є  ­Ґ Ўг¤Ґв ЇҐаҐ­ Їа ў«Ґ­ ў бҐаўҐаҐ.

FormType ’ЁЇ Ў« ­Є , ўлЎа ­­л© ў ⥪гйЁ© ¬®¬Ґ­в
¤«п ¤ ­­®Ј® ЇаЁ­вҐа  (0..255).

OffLine True, Ґб«Ё ЇаЁ­вҐа ў Ї®«®¦Ґ­ЁЁ "®д« ©­".

Stopped True, Ґб«Ё ЇаЁ­вҐа Ўл« ®бв ­®ў«Ґ­ ў бҐаўҐаҐ.


ЋЇЁб ­ЁҐ
--------

‚®§ўа й Ґв Ё­д®а¬ жЁо ® § ¤ ­­®¬ ЇаЁ­вҐаҐ. Ћв¬ҐвЁ¬, зв®
<ServerPrinter> ®в­®бЁвбп Є дЁ§ЁзҐбЄЁ¬ ЇаЁ­вҐа ¬, ®в­®бпйЁ¬бп Є
бҐаўҐаг,   ­Ґ Є Є ЄЁ¬-«ЁЎ® «®Є «м­л¬ ЇаЁ­вҐа ¬, ®в­®бпйЁ¬бп Є
⥪г饩 а Ў®зҐ© бв ­жЁЁ. Џа®жҐ¤га  <GetPrintJobFlags> ў®§ўа й Ґв
Ў®«ҐҐ Ї®¤а®Ў­го Ё­д®а¬ жЁо ® ЇаЁ­вҐаҐ. „®Ї®«­ЁвҐ«м­го Ё­д®а¬ жЁо
б¬. ў ®ЇЁб ­ЁЁ нв®© Їа®жҐ¤гал.


GetPrintJobFlags
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

procedure GetPrintJobFlags(var PrintJob : PrintJobType);

Џ а ¬Ґвал
---------

PrintJob ‚®§ўа й Ґ¬ п § ЇЁбм, ®ЇЁблў ой п § ¤ ­ЁҐ ­  ЇҐз вм.


ЋЇЁб ­ЁҐ
--------

”« ЈЁ § ¤ ­Ёп ®ЇЁблў ов а §«Ёз­лҐ ®ЇжЁЁ, ®в­®бпйЁҐбп Є
ЇҐз вЁ ў бҐвЁ. <GetPrintJobFlags> § Ї®«­пҐв ЇҐаҐ¬Ґ­­го <PrintJob>
д« Ј ¬Ё § ¤ ­Ёп ­  ЇҐз вм ¤«п ⥪г饩 а Ў®зҐ© бв ­жЁЁ. „«п
Ё§¬Ґ­Ґ­Ёп ®ЇжЁ© ЇҐз вЁ ўл§лў ©вҐ <SetPrintJobFlags>.

‚®§ўа й Ґвбп Ў®«м讥 Є®«ЁзҐбвў® Ё­д®а¬ жЁЁ, з бвм Є®в®а®©
­ҐбЄ®«мЄ® в Ё­б⢥­­ . Ќ ЁЎ®«миЁ© ¦Ґ Ё­вҐаҐб ЇаҐ¤бв ў«пов
б«Ґ¤гойЁҐ Ї®«п:

<Status> ‚ б«гз Ґ ­г«Ґў®Ј® §­ зҐ­Ёп § ¤ ­ЁҐ ­  ЇҐз вм пў«пҐвбп
 ЄвЁў­л¬, Ё ®бв «м­лҐ д« ЈЁ ­Ґ ¬®Јгв Ўлвм Ё§¬Ґ­Ґ­л.

<Flags> Ѓ ©в, ЎЁв®ў®Ґ ¬­®¦Ґбвў® Є®в®а®Ј® Ё­вҐаЇаҐвЁагҐвбп
б«Ґ¤гойЁ¬ ®Ўа §®¬:

7 6 5 4 3 2 1 0
| | | |
| | | ------------ ЏҐз вм ЇаҐаў ­­®Ј® ЇҐаҐеў в 
| | --------------- Џ®¤ ў«Ґ­ЁҐ  ўв®¬ вЁзҐбЄ®Ј® Їа®Ј®­ 
| | Ў« ­Є  ў Є®­жҐ § ¤ ­Ёп
| ------------------------ ‚Є«о祭ЁҐ а биЁаҐ­­®© в Ўг«пжЁЁ
--------------------------- ЏҐз вм бва ­Ёз­®Ј® § Ј®«®ўЄ 

‡­ зҐ­ЁҐ Ї® 㬮«з ­Ёо ¤«п д« Ј®ў а ў­® 80h, ўл§лў о饥
ЇҐз вм бва ­Ёз­®Ј® § Ј®«®ўЄ .

<TabSize> —Ёб«® Їа®ЎҐ«®ў ¤«п Є ¦¤®© в Ўг«пжЁЁ (1..18).

<ServerPrinter> ЏаЁ­вҐа бҐаўҐа , ЁбЇ®«м§гҐ¬л© ¤«п ўлў®¤  (0..4).

<NumCopies> —Ёб«® ЇҐз в Ґ¬ле Є®ЇЁ©.

<FormType> Ѓ« ­Є, гбв ­ ў«Ёў Ґ¬л© ­  ЇаЁ­вҐаҐ ў ­ з «Ґ ЇҐз вЁ.
Љ®Ј¤  Ў« ­Є ¤®«¦Ґ­ Ўлвм ­Ґ в®в, зв® гбв ­®ў«Ґ­ ў
⥪гйЁ© ¬®¬Ґ­в, ­  Є®­б®«м бҐаўҐа  ўлў®¤Ёвбп б®®ЎйҐ­ЁҐ.
’ЁЇ Ў« ­Є  Ї® 㬮«з ­Ёо 8.

<Banner> €¬п ЇҐз в Ґ¬®Ґ ў § Ј®«®ўЄҐ. …б«Ё в ¬ § ¤ ­л ўбҐ ­г«Ё,
в® ЇҐз в Ґвбп Ё¬п д ©«  ЇҐаҐеў в .

<LocalLPT> ‹®Є «м­л© ЇаЁ­вҐа, ўлў®¤ ­  Є®в®ал© ЇҐаҐеў влў Ґвбп
(0..2).


LPTCaptureActive
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function LPTCaptureActive(var QueServer : Byte) : Boolean;

Џ а ¬Ґвал
---------

QueServer ‚®§ўа й Ґвбп Ї®¤б®Ґ¤Ё­ЁвҐ«м­л© ­®¬Ґа бҐаўҐа 
б ®зҐаҐ¤мо.

ђҐ§г«мв в True, Ґб«Ё ЎгдҐаЁ§ жЁп  ЄвЁў­ ; Ё­ зҐ False.


ЋЇЁб ­ЁҐ
--------

‚®§ўа й Ґв True, Ґб«Ё ўл室 ­  «®Є «м­л© ЇаЁ­вҐа ЇҐаҐеў зҐ­.
Џ а ¬Ґва <QueServer>, Ё­ЁжЁ «Ё§ЁагҐ¬л© в®«мЄ® Ґб«Ё १г«мв в
а ўҐ­ True, ў®§ўа й Ґв Ї®¤б®Ґ¤Ё­ЁвҐ«м­л© ­®¬Ґа (1..8) бҐаўҐа ,
®Ўб«г¦Ёў о饣® ®зҐаҐ¤м ЇҐз вЁ.


SetBannerUser
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function SetBannerUser(UserName : Str20) : Boolean;

Џ а ¬Ґвал
---------

UserName €¬п Ї®«м§®ў вҐ«п ¤«п ЇҐз вЁ ­  бва ­Ёз­ле
§ Ј®«®ўЄ е, 12 бЁ¬ў®«®ў ¬ ЄбЁ¬г¬.

ђҐ§г«мв в True, Ґб«Ё дг­ЄжЁп Ї®¤¤Ґа¦Ёў Ґвбп;
Ё­ зҐ False.

ЋЇЁб ­ЁҐ
--------

ЏаЁ ЁбЇ®«м§®ў ­ЁЁ б।бвў ЎгдҐаЁ§ жЁЁ NetWare бва ­Ёз­л©
§ Ј®«®ў®Є, Ё¤Ґ­вЁдЁжЁагойЁ© Є ¦¤®Ґ § ¤ ­ЁҐ ЇҐз вЁ, ЇаҐ¤иҐбвўгҐв
б ¬®© а бЇҐз вЄҐ. <SetBannerUse> § ¤ Ґв Ё¬п Ї®«м§®ў вҐ«п, Є®в®а®Ґ
Ўг¤Ґв Ї®пў«пвмбп ­  бва ­Ёз­®¬ § Ј®«®ўЄҐ. €¬п Ї®«м§®ў вҐ«п,
гбв ­®ў«Ґ­­®Ґ ў ⥪гйЁ© ¬®¬Ґ­в, ¬®¦Ґв Ўлвм ®ЇаҐ¤Ґ«Ґ­® ўл§®ў®¬
<GetBannerUser>. ќвЁ дг­ЄжЁЁ Ї®¤¤Ґа¦Ёў овбп в®«мЄ® Advanced
NetWare ўҐабЁЁ 2.1 Ё«Ё бв аиҐ.


SetDefaultLocalPrinter
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

procedure SetDefaultLocalPrinter(LPTNo : PrinterDevice);

Џ а ¬Ґвал
---------

LPTNo Ќ®ўл© «®Є «м­л© ЇаЁ­вҐа Ї® 㬮«з ­Ёо (LPT1,
LPT2 Ё«Ё LPT3).

ЋЇЁб ­ЁҐ
--------

‚ᥠбўп§ ­­лҐ б ЇҐз в ойЁ¬Ё гбва®©бвў ¬Ё Ї®¤Їа®Ја ¬¬л ¬®¤г«п
NETWARE а Ў®в ов б «®Є «м­л¬ ЇаЁ­вҐа®¬ Ї® 㬮«з ­Ёо. „ ­­ п
Ї®¤Їа®Ја ¬¬  гбв ­ ў«Ёў Ґв ЇаЁ­вҐа, ўлў®¤ ­  Є®в®ал© Ўг¤Ґв
ЇҐаҐеў влў вмбп ¤«п ЎгдҐаЁ§ жЁЁ. ЏаЁ­вҐа Ї® 㬮«з ­Ёо ¬®¦­®
Ё¤Ґ­вЁдЁжЁа®ў вм ЇаЁ Ї®¬®йЁ <GetDefaultLocalPrinter>.


SetPrintJobFlags
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

procedure SetPrintJobFlags(var PrintJob : PrintJobType);

Џ а ¬Ґвал
---------

PrintJob ‚®§ўа й Ґ¬ п § ЇЁбм, ®ЇЁблў ой п § ¤ ­ЁҐ ­  ЇҐз вм.


ЋЇЁб ­ЁҐ
--------

„ ­­ п Ї®¤Їа®Ја ¬¬  Ї®§ў®«пҐв ЇаЁЄ« ¤­®© Їа®Ја ¬¬Ґ Ї®«­®бвмо
гЇа ў«пвм Ї®ўҐ¤Ґ­ЁҐ¬ ЇаЁ­вҐа  ў бҐвЁ. ‘ ҐҐ Ї®¬®ймо ¬®Јгв Ўлвм
§ ¤ ­  в Є п Ё­д®а¬ жЁп, Є Є а §¬Ґа в Ўг«пжЁЁ, зЁб«® Є®ЇЁ© Ё вЁЇ
Ў« ­Є .

Ѓ®«ҐҐ Ї®¤а®Ў­го Ё­д®а¬ жЁо б¬. ў ®ЇЁб ­ЁЁ
<GetPrintJobFlags>. ‚б«Ґ¤бвўЁҐ Ў®«ми®Ј® ®ЎкҐ¬  Ё­д®а¬ жЁЁ,
еа ­Ё¬®Ј® ў ЇҐаҐ¬Ґ­­®© вЁЇ  <PrintJobType>, ЇаЁЄ« ¤­ п Їа®Ја ¬¬ 
¤®«¦­  б­ з «  Ё­ЁжЁ «Ё§Ёа®ў вм § ЇЁбм ўл§®ў®¬
<GetPrintJobFlags>,   § вҐ¬ ¬®¤ЁдЁжЁа®ў вм ¦Ґ« Ґ¬лҐ Ї®«п ЇҐаҐ¤
ўл§®ў®¬ <SetPrintJobFlags>.


StartLPTCapture
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function StartLPTCapture : Byte;

Џ а ¬Ґвал
---------

ђҐ§г«мв в 0 ЇаЁ гбЇҐи­®¬ § ўҐа襭ЁЁ;
Ё­ зҐ Є®¤ ®иЁЎЄЁ NetWare.

ЋЇЁб ­ЁҐ
--------

Џ®б«Ґ ўл§®ў  ¤ ­­®© Ї®¤Їа®Ја ¬¬л ўлў®¤ ­  «®Є «м­л© ЇаЁ­вҐа
Ї® 㬮«з ­Ёо Ўг¤Ґв ЇҐаҐ­ Їа ў«Ґ­ ў д ©« («®Є «м­® ®аЈ ­Ё§гҐ¬л©
бҐаўҐа®¬). ќв®в ўлў®¤ Ўг¤Ґв Ї®бв ў«Ґ­ ў ®зҐаҐ¤м ¤«п дЁ§ЁзҐбЄ®©
ЇҐз вЁ в®«мЄ® Ї®б«Ґ ўл§®ў  <EndLPTCapture> Ё«Ё <FlushLPTCapture>.
ЏаҐаў вм ЇҐз вм ¬®¦­® ЇаЁ Ї®¬®йЁ ўл§®ў  <CancelLPTCapture>.

ЃгдҐаЁ§®ў ­­л© «®Є «м­л© ЇаЁ­вҐа Ї® 㬮«з ­Ёо ­ §­ з Ґвбп ­ 
LPT1. „«п ®ЇаҐ¤Ґ«Ґ­Ёп ⥪г饣® «®Є «м­®Ј® ЇаЁ­вҐа  ўл§®ўЁвҐ
<GetDafeultLocalPrinter>. „«п Ё§¬Ґ­Ґ­Ёп гбв ­®ўЄЁ «®Є «м­®Ј®
ЇаЁ­вҐа  Ї® 㬮«з ­Ёо ўл§®ўЁвҐ <SetDefaultLocalPrinter>.




Ѓ §®ўлҐ бҐаўЁб­лҐ б।бвў  ®Ў¬Ґ­  б®®ЎйҐ­Ёп¬Ё ў бҐвЁ
----------------------------------------------------

NetWare Ё¬ҐҐв б।бвў  ЇҐаҐбл«ЄЁ б®®ЎйҐ­Ё© ­ҐбЄ®«мЄЁ¬Ё
а §«Ёз­л¬Ё бЇ®б®Ў ¬Ё. Ёа®Є®ўҐй вҐ«м­лҐ б®®ЎйҐ­Ёп - нв® ®зҐ­м
Є®а®вЄЁҐ бва®ЄЁ (¬Ґ­ҐҐ 56 бЁ¬ў®«®ў), ўлў®¤Ё¬лҐ ­  ¬®­Ёв®аҐ
ЇаЁ­Ё¬ о饩 а Ў®зҐ© бв ­жЁЁ. Љ ­ «л ЇҐаҐ¤ зЁ б®®ЎйҐ­Ё©
®ЎҐбЇҐзЁў ов Їа®бв®© ¬Ґв®¤ ЇҐаҐбл«ЄЁ Є®а®вЄЁе б®®ЎйҐ­Ё© (¬Ґ­ҐҐ
127 бЁ¬ў®«®ў) ®в бв ­жЁЁ Є бв ­жЁЁ, ЁбЇ®«м§гп ў Є зҐб⢥
Ї®б।­ЁЄ  бҐаўҐа. Њ®¤г«м NETWARE ®ЎҐбЇҐзЁў Ґв б«Ґ¤гойЁҐ
Ї®¤Їа®Ја ¬¬л ¤«п ¤®бвгЇ  Є нвЁ¬ бҐаўЁб­л¬ дг­ЄжЁп¬:

- ЏаЁҐ¬ Ї®¤б®Ґ¤Ё­ЁвҐ«м­ле ­®¬Ґа®ў (­®¬Ґа®ў 㧫 ) а Ў®зЁе
бв ­жЁ© Ё бҐаўҐа®ў.

- Ђбб®жЁЁа®ў ­ЁҐ дЁ§ЁзҐбЄЁе  ¤аҐб®ў б Ё¬Ґ­ ¬Ё Ё
Ї®¤б®Ґ¤Ё­Ґ­Ёп¬Ё.

- ЏаЁҐ¬ Ё«Ё гбв ­®ўЄ  ०Ё¬  иЁа®Є®ўҐй ­Ёп (ўлў®¤ Ё«Ё
ЁЈ­®аЁа®ў ­ЁҐ иЁа®Є®ўҐй вҐ«м­ле б®®ЎйҐ­Ё©).

- ЏҐаҐ¤ з  иЁа®Є®ўҐй вҐ«м­ле б®®ЎйҐ­Ё©.

- —⥭ЁҐ ўЁбп饣® иЁа®Є®ўҐй вҐ«м­®Ј® б®®ЎйҐ­Ёп.

- ЋвЄалвЁҐ, Їа®ўҐаЄ  Ё«Ё § ЄалвЁҐ Є ­ «  б®®ЎйҐ­Ё©.

- ЏҐаҐбл«Є  Ё«Ё ЇаЁҐ¬ б®®ЎйҐ­Ёп Ї® Є ­ «г.

ЌЁ ®¤Ё­ Ё§ нвЁе ¬Ґв®¤®ў ­Ґ Ј а ­вЁагҐв, зв® Ї®«гз вҐ«м
ᬮ¦Ґв Їа®зҐбвм б®®ЎйҐ­ЁҐ. „«п нд䥪⨢­®© ЇҐаҐ¤ зЁ б®®ЎйҐ­Ё©
¬Ґ¦¤г 㧫 ¬Ё бҐвЁ б Ј а ­вЁа®ў ­­®© ¤®бв ўЄ© Novell ४®¬Ґ­¤гҐв
бҐаўЁб­лҐ б।бвў  SPX (®ЇЁблў Ґ¬лҐ ­Ё¦Ґ).

ЏаЁ¬Ґал
-------

Џ®бв ў«пҐ¬ п Їа®Ја ¬¬  MESEXAMP.PAS ¤Ґ¬®­бвЁагҐв ­ҐбЄ®«мЄ®
¬Ґв®¤®ў, ЁбЇ®«м§гҐ¬ле ¤«п ЇҐаҐ¤ зЁ б®®ЎйҐ­Ё© Ї® «®Є «м­л¬ бҐвп¬
NetWare Ё NetBios. ‚ н⮬ а §¤Ґ«Ґ ўў®¤пвбп ¬Ґв®¤л ЇҐаҐ¤ зЁ
иЁа®Є®ўҐй вҐ«м­ле Ё Є ­ «м­ле б®®ЎйҐ­Ё©, ЁбЇ®«м§гҐ¬лҐ Їа®Ја ¬¬®©.

ЏҐаҐбл«Є  б®®ЎйҐ­Ёп ­  Є®­б®«м NetWare (­  д ©«-бҐаўҐаҐ Ї®
㬮«з ­Ёо) ЇаҐ¤бв ў«пҐв б®Ў®© б ¬л© Їа®бв®© Ё§ ¬Ґв®¤®ў. ‘ва®Є 
¬®¦Ґв Ё¬Ґвм ¤® 60 бЁ¬ў®«®ў ў ¤«Ё­г.

BroadcasrToConsole('ЏаЁўҐв ®ЇҐа в®аг Є®­б®«Ё!');

Ђ­ «®ЈЁз­л¬ ®Ўа §®¬, б®®ЎйҐ­ЁҐ ¬®¦Ґв Ўлвм ¤®Ў ў«Ґ­® ў д ©«
¦га­ «  Є®­б®«Ё, ®ЎҐбЇҐзЁў п ­ҐЄ®в®аго б⥯Ґ­м Ї®бв®п­бвў 
Ї®б«Ґ¤­ҐЈ®:

LogNetWorkMessage('ЇаЁ¬Ґз ­ЁҐ ¤«п д ©«  ¦га­ « ');

‘®®ЎйҐ­Ёп, ЇҐаҐбл« Ґ¬лҐ Є ­ «м­л¬ Ё иЁа®Є®ўҐй вҐ«м­л¬
¬Ґв®¤ ¬Ё, ­ зЁ­ овбп ®¤Ё­ Є®ўл¬ ®Ўа §®¬ - б ЈҐ­Ґа жЁЁ бЇЁбЄ 
Ї®¤б®Ґ¤Ё­Ґ­­ле 㧫®ў (а Ў®зЁе бв ­жЁ©) бҐвЁ, Є®в®алҐ ¤®«¦­л
ЇаЁ­пвм ¤ ­­®Ґ б®®ЎйҐ­ЁҐ. ќв® ¬®¦­® ᤥ« вм ­ҐбЄ®«мЄЁ¬Ё
бЇ®б®Ў ¬Ё. …б«Ё б®®ЎйҐ­ЁҐ ¤®«¦­® Ўлвм Ї®б« ­® ўбҐ¬ бв ­жЁп¬,
¤®«¦­  ЁбЇ®«м§®ў вмбп в Є п Ї®б«Ґ¤®ў вҐ«м­®бвм:

procedure AllConnections(var Connect : ConnectionList);
var
I : Word;
ServerInfo : ServerInformation;
begin
GetServerInfo(ServerInfo);
with Connect do begin
{„®Ў ўЁвм ў бЇЁб®Є ўбҐ ¤®ЇгбвЁ¬лҐ б®Ґ¤Ё­Ґ­Ёп}
Count : ServerInfo.MaxConns;
for I := 1 to Count do
List[I] := I;
{“¤ «Ёвм Ё§ бЇЁбЄ  ᥡп}
List{GetConnNo] := List[Count];
Dec(Count);
end;
end;

AllConnections ў®§ўа й Ґв бЇЁб®Є ᮥ¤Ё­Ґ­Ё©, ўЄ«оз ойЁ© ў
бҐЎп ўбҐ ¤®ЇгбвЁ¬лҐ бв ­жЁЁ, §  ЁбЄ«о祭ЁҐ¬ б ¬®© Ї®бл« о饩
бв ­жЁЁ.

…б«Ё ¦Ґ б®®ЎйҐ­ЁҐ ¤®«¦­® Ўлвм Ї®б« ­® в®«мЄ® ­  ⥠бв ­жЁЁ,
Ї®«м§®ў вҐ«Ё Є®в®але § аҐЈЁбваЁа®ў «Ёбм Ї®¤ Є®­ЄаҐв­л¬ Ё¬Ґ­Ґ¬, в®
¬®¦­® ЁбЇ®«м§®ў вм б«Ґ¤гойго Ї®¤Їа®Ја ¬¬г:

procedure NamedConnections(Name : String;
var Connect : ConnectionList);
var
I : Word;
Conn : Word;
ServerInfo : ServerInformation;
begin
GetServerInfo(ServerInfo);
with Connect do begin
Count := 0;
{„®Ў ўЁвм ў бЇЁб®Є ўбҐ ᮮ⢥вбвўгойЁҐ ᮥ¤Ё­Ґ­Ёп}
for I := 1 to ServerInfo.MaxConns do begin
Conn := GetConnFromName(I, I, Name);
if Conn <> ) then begin
Inc(Count);
List[Count] := Conn;
end;
end;
end;
end;

Џ®б«Ґ ўл§®ў  NamedConnection ўл§лў ой п Їа®Ја ¬¬  ¤®«¦­ 
гЎҐ¤Ёвмбп, зв® Connect.Count ­Ґ а ўҐ­ ­г«о. Џ®б«Ґ Ё­ЁжЁ «Ё§ жЁЁ
бЇЁбЄ  Ї®«гз вҐ«Ґ© «ҐЈЄ® ЇҐаҐ¤ вм иЁа®Є®ўҐй вҐ«м­®Ґ б®®ЎйҐ­ЁҐ:

procedure Broadcast(Msg : BroadcastStr;
var Connect : ConnectionList);
var
I : Word;
Result : ConnectionList;
begin
SendBroadcastMsg(Msg, Connect, Result);
{Џ®б¬®ваЁ¬, Єв® ¬®¦Ґв ҐЈ® Ї®«гзЁвм}
for I := 1 to Result.Count do
if Result.List[I] <> 0 then
{Connect.List[I] ­Ґ Ўл« Ї®¤б®Ґ¤Ё­Ґ­};
end;

‘ ¬®Ґ ¤«Ё­­®Ґ иЁа®Є®ўҐй вҐ«м­®Ґ б®®ЎйҐ­ЁҐ ­Ґ ¬®¦Ґв ЇаҐўли вм
55 бЁ¬ў®«®ў. Џ®Є § ­­л© ўлиҐ жЁЄ« Їа®ўҐаЄЁ ў ®б­®ў­®¬ ЎҐбЇ®«Ґ§Ґ­,
Ї®бЄ®«мЄг ®­ Їа®ўҐапҐв в®«мЄ®, Ўл«  «Ё ¤ ­­ п а Ў®з п бв ­жЁп
§ аҐЈЁбваЁа®ў ­  ў бҐвЁ,   ­Ґ в®, Ї®«гзЁ«  «Ё ®­  б®®ЎйҐ­ЁҐ. Џ®
㬮«з ­Ёо б®®ЎйҐ­ЁҐ ўлў®¤Ёвбп ў 25-© бва®ЄҐ нЄа ­  ЇаЁ­Ё¬ о饩
бв ­жЁЁ. Ћ¤­ Є®, «оЎ п а Ў®з п бв ­жЁп ¬®¦Ґв ўл§ў вм
<SetBroadcastMode>, зв®Ўл Ё§¬Ґ­Ёвм ¤ ­­®Ґ 㬮«з ­ЁҐ; ў १г«мв вҐ
иЁа®Є®ўҐй вҐ«м­®Ґ б®®ЎйҐ­ЁҐ ¬®¦Ґв «ЁЎ® ў®®ЎйҐ ЁЈ­®аЁа®ў вмбп,
«ЁЎ® Ї®¬Ґй вмбп ў ЎгдҐа Ё зЁв вмбп ўЇ®б«Ґ¤бвўЁҐ ўл§®ў®¬
<GetBroadcastMsg>.

Љ ­ «м­лҐ б®®ЎйҐ­Ёп ­ зЁ­ овбп б в®Ј® ¦Ґ бЇЁбЄ  ᮥ¤Ё­Ґ­Ё©,
­® вॡгов ¤®Ї®«­ЁвҐ«м­ле и Ј®ў ЇҐаҐ¤ Ёе Ї®бл«Є®©. Љ ­ « ¤®«¦Ґ­
Ўлвм ®вЄалв Є Є Ї®бл« о饩, в Є Ё ЇаЁ­Ё¬ о饩 бв®а®­ ¬Ё, зв®
вॡгҐв ®ЇаҐ¤Ґ«Ґ­­®© б⥯Ґ­Ё ў§ Ё¬®¤Ґ©бвўЁп ¬Ґ¦¤г ­Ё¬Ё. Љ ¦¤ п
бв®а®­  б­ з «  ᮧ¤ Ґв бЇЁб®Є ᮥ¤Ё­Ґ­Ё© ЇаЁ Ї®¬®йЁ Ї®¤Їа®Ја ¬¬
вЁЇ  AllConnections Ё«Ё NamedConnections. ‡ вҐ¬ Є ¦¤ п бв®а®­ 
Їлв Ґвбп ®вЄалвм бў®о Ї®«®ўЁ­г Є ­ «  б«Ґ¤гойЁ¬ ®Ўа §®¬:

function UserBreak : Boolean;
begin
IPXRelinquish;
UserBreak := KeyPressed;
end;

procedure OpenPipe(Target : ConnectionList;
var Actual : ConnectionList);

var
I : Word;
Result : ConnectionList;
begin
repeat
OpenMessagePipe(Target, Result);
Actual.Count := 0;
for I := 1 to Result.Count do
if Result.List[I] = 0 then brgin
inc(Actual.Count);
Actual.List[Actual.Count] := Target.List[I];
end
until (Actual.Count > 0) or UserBreak;
end;

‚ аЁ ­в®ў §¤Ґбм ¬®¦Ґв Ўлвм ¬­®¦Ґбвў®. ‚л室 Ё§ OpenPipe
Їа®Ёб室Ёв, Є®Ј¤  Є Є п-«ЁЎ® ᮥ¤Ё­Ґ­­ п бв ­жЁп ®вЄ«ЁЄ­Ґвбп,
«ЁЎ® ЇаЁ ­ ¦ вЁЁ Є« ўЁиЁ. Њ®¦­® ᤥ« вм Ё в Є, зв®Ўл ®­  ®¦Ё¤ « 
®вўҐв  ®в ўбҐе ᮥ¤Ё­Ґ­Ё© (§ ¤ ў ў жЁЄ«Ґ until гб«®ўЁҐ
Actual.Count = Target.Count).



‚­Ё¬ ­ЁҐ !!!!

ЋвбгвбвўгҐв а §ў®а®в б® бва ­Ёж ¬Ё 232-233 !!!!!


CheckMessagePipe
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

procedure CheckMessagePipe(var Connect, Result : ConnectionList);

Џ а ¬Ґвал
---------

Connect Џа®ўҐапҐ¬л© бЇЁб®Є ᮥ¤Ё­Ґ­Ё©.

Result Љ®¤л, ў®§ўа й Ґ¬лҐ ¤«п Є ¦¤®Ј® Ё§ ᮥ¤Ё­Ґ­Ё©

ЋЇЁб ­ЁҐ
--------

Џа®ўҐапҐв бв вгб Є ­ «®ў Є® ўбҐ¬ § ¤ ­­л¬ ­®¬Ґа ¬ а Ў®зЁе
бв ­жЁ©. ‘ЇЁб®Є Їа®ўҐа塞ле а Ў®зЁе бв ­жЁ© ЇҐаҐ¤ Ґвбп ў
<Connect>. <Result> ў®§ўа й Ґв бЇЁб®Є Є®¤®ў бв вгб . ‚®§¬®¦­лҐ
§­ зҐ­Ёп Є ¦¤®Ј® н«Ґ¬Ґ­в  ў <Result> нв®:

0 “бЇҐи­®Ґ § ўҐа襭ЁҐ (Є ­ « б®®ЎйҐ­Ёп пў«пҐвбп Ї®«­л¬).

$FE ЌҐЇ®«­л© Є ­ « (Є ­ « ®в бҐаўҐа  Є ­ §­ зҐ­Ёо
­Ґ бгйҐбвўгҐв).

$FF ЌҐг¤ з  (­ҐўҐа­л© ­®¬Ґа ᮥ¤Ё­Ґ­Ёп Ё«Ё Є « « ®в ЇҐаҐ¤ о饩
бв®а®­л Є бҐаўҐаг ­Ґ бгйҐбвўгҐв).

CloseMessagePipe
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function CloseMessagePipe(var Connect, Result : ConnectionList)
: Byte;

Џ а ¬Ґвал
---------

Connect ‘ЇЁб®Є § Єалў Ґ¬ле ᮥ¤Ё­Ґ­Ё©.

Result Љ®¤л, ў®§ўа й Ґ¬лҐ ¤«п Є ¦¤®Ј® Ё§ ᮥ¤Ё­Ґ­Ё©.

ђҐ§г«мв в
дг­ЄжЁЁ 0 ЇаЁ гбЇҐи­®¬ § ўҐа襭ЁЁ;
Ё­ зҐ Є®¤ ®иЁЎЄЁ NetWare.


ЋЇЁб ­ЁҐ
--------

‡ Єалў Ґв Є ­ «л, ®вЄалвлҐ а ­ҐҐ ЇаЁ Ї®¬®йЁ
<OpenMessagePipe>. <CloseMessagePipe> ¬®¦Ґв ®¤­®ўаҐ¬Ґ­­®
§ Єалў вм Є ­ «л Є ®¤­®¬г Ё«Ё Ў®«ҐҐ ᮥ¤Ё­Ґ­Ёп¬. Џ а ¬Ґва
<Connect> ЇҐаҐзЁб«пҐв ўбҐ ­®¬Ґа  ᮥ¤Ё­Ґ­Ё©, Є ­ «л Є Є®в®ал¬
§ Єалў овбп. Џ а ¬Ґва <Result> ў®§ўа й Ґв бв вгб ¤«п Є ¦¤®© Ё§
Ї®Їлв®Є ࠧꥤЁ­Ґ­Ёп. „«п Є ¤«®Ј® н«Ґ¬Ґ­в  ў бЇЁбЄҐ ᮥ¤Ё­Ґ­Ё©
ў®§¬®¦­лҐ б«Ґ¤гойЁҐ Є®¤л १г«мв в :

0 “бЇҐи­®Ґ § ўҐа襭ЁҐ (Є ­ « а §®аў ­).

$FD ЌҐг¤ з  (‘в ­жЁп ­ §­ зҐ­Ёп ­ҐўҐа­® § ¤ ­  Ё«Ё Ў®«миҐ
­Ґ ЁбЇ®«м§гҐвбп).

$FF ’ Є®Ј® Є ­ «  ­Ґ бгйҐбвўгҐв.

Љ®Ј¤  ўл§лў ой п бв®а®­  § Єалў Ґв бў®о Ї®«®ўЁ­г Є ­ « ,
«оЎлҐ б®®ЎйҐ­Ёп, Є®в®алҐ ¬®Ј«Ё Ўл Ўлвм ¤®бвгЇ­л¬Ё ¤«п ЇаЁҐ¬  Ё§
нв®Ј® Є ­ « , вҐаповбп. Ћ¤­ Є®, б®®ЎйҐ­Ёп, а ­ҐҐ Ї®б« ­­лҐ Ґ© Ї®
н⮬㠪 ­ «г, ¤®бвгЇ­л ¤«п ЇаЁҐ¬  бв ­жЁҐ©, ­ е®¤п饩бп ­  ¤агЈ®¬
Є®­жҐ Є ­ « .


ЋиЁЎЄЁ (ў®§ўа й Ґ¬лҐ ў Є зҐб⢥ १г«мв в  дг­ЄжЁЁ)
------

$FC ЋзҐаҐ¤м б®®ЎйҐ­Ё© Ї®«­  (Є ­ «л ­Ґ § Єалвл).


GetBroadcastMode
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function GetBroadCastMode : Byte;

Џ а ¬Ґвал
---------

ђҐ§г«мв в ‚®§ўа й Ґвбп ०Ё¬ иЁа®Є®ўҐй ­Ёп а Ў®зҐ© бв ­жЁЁ
(0..3).

ЋЇЁб ­ЁҐ
--------

ђҐ¦Ё¬ иЁа®Є®ўҐй ­Ёп § ¤ Ґв, Є ЄЁ¬ ®Ўа §®¬ а Ў®з п бв ­жЁп Ё
бҐаўҐа ॠЈЁагов ­  иЁа®Є®ўҐй вҐ«м­лҐ б®®ЎйҐ­Ёп. Ћ­ ¬®¦Ґв Ўлвм
Ё­вҐаЇаҐвЁа®ў ­ б«Ґ¤гойЁ¬ ®Ўа §®¬:

ђҐ¦Ё¬ ‘ҐаўҐа ЋЎ®«®зЄ 
----- ------- --------
0 ‘®еа ­пҐв ЃҐаҐв Ё ўлў®¤Ёв ­  ¤ЁбЇ«Ґ©
1 ЋвўҐаЈ Ґв ЃҐаҐв Ё ўлў®¤Ёв ­  ¤ЁбЇ«Ґ©
2 ЋвўҐаЈ Ґв €Ј­®аЁагҐв
3 ‘®еа ­пҐв €Ј­®аЁагҐв

Љ®Ј¤  "‘ҐаўҐа" Ё¬ҐҐв ०Ё¬ "ЋвўҐаЈ Ґв", бҐаўҐа ЁЈ­®аЁагҐв
«оЎлҐ б®®ЎйҐ­Ёп, ЇаҐ¤­ §­ зҐ­­лҐ ¤«п ⥪г饩 а Ў®зҐ© бв ­жЁЁ (§ 
ЁбЄ«о祭ЁҐ¬ иЁа®Є®ўҐй вҐ«м­ле б®®ЎйҐ­Ё© б ¬®Ј® бҐаўҐа , Є®в®алҐ
Ї®бл« овбп ўбҐЈ¤ ). Љ®Ј¤  "ЋЎ®«®зЄ " Ё¬ҐҐв ०Ё¬ "ЃҐаҐв Ё ўлў®¤Ёв
­  ¤ЁбЇ«Ґ©" , ®Ў®«®зЄ  NetWare ­Ґ¬Ґ¤«Ґ­­® ўлў®¤Ёв
иЁа®Є®ўҐй вҐ«м­®Ґ б®®ЎйҐ­ЁҐ ў бва®ЄҐ 25 вҐа¬Ё­ « . ‚ Їа®вЁў­®¬
б«гз Ґ а Ў®з п бв ­жЁп ¬®¦Ґв ®Їа иЁў вм ­ «ЁзЁҐ б®®ЎйҐ­ЁҐ ЇаЁ
Ї®¬®йЁ ўл§®ў  <GetBroadcastMessage>.

Џ® 㬮«з ­Ёо ०Ё¬ гбв ­ ў«Ёў Ґвбп ०Ё¬ иЁа®Є®ўҐй ­Ёп 0.
Љ ¦¤ п а Ў®з п бв ­жЁп Ё¬ҐҐв б®Ўб⢥­­л© ०Ё¬ иЁа®Є®ўҐй ­Ёп.

‘ҐаўЁб­лҐ б।бвў  иЁа®Є®ўҐй ­Ёп Ї®§ў®«пов еа ­Ёвм ®¤­®
б®®ЎйҐ­ЁҐ ¤«п ®¤­®© а Ў®зҐ© бв ­жЁЁ. …б«Ё 㦥 Ё¬ҐҐвбп еа ­п饥бп
иЁа®Є®ўҐй вҐ«м­®Ґ б®®ЎйҐ­ЁҐ, Ё Ї®«г祭® б®®ЎйҐ­ЁҐ ®в ¤агЈ®©
бв ­жЁЁ, в® ®­® ®вўҐаЈ Ґвбп. Ћ¤­ Є®, Ґб«Ё ­  вг ¦Ґ б ¬го бв ­жЁо
Ї®бл« Ґв б®®ЎйҐ­ЁҐ бҐаўҐа, в® ®­® § ¬Ґ­Ёв б®Ў®© «оЎ®Ґ ўЁбп饥
б®®ЎйҐ­ЁҐ.


GetBroadcastMsg
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

procedure GetBroadcastMsg(var Message : Str80);

Џ а ¬Ґвал
---------

Message ‚®§ўа й Ґвбп Ї®¤ўҐиҐ­­®Ґ б®®ЎйҐ­ЁҐ.

ЋЇЁб ­ЁҐ
--------

‚®§ўа й Ґв Ї®¤ўҐиҐ­­®Ґ иЁа®Є®ўҐй вҐ«м­®Ґ б®®ЎйҐ­ЁҐ, Ґб«Ё
в Є®ў®Ґ Ё¬ҐҐвбп. ‚ Їа®вЁў­®¬ б«гз Ґ <Message> ўҐа­Ґв Їгбвго
бва®Єг. „«Ё­  ў®§ўа й Ґ¬®© бва®ЄЁ ¬ ЄбЁ¬ «м­® а ў­  55 бЁ¬ў®«®ў.

NetWare Ї®¤¤Ґа¦Ёў Ґв 4 а §«Ёз­ле "०Ё¬  иЁа®Є®ўҐй ­Ёп". ќвЁ
०Ё¬л ®ЇаҐ¤Ґ«пов Ї®ўҐ¤Ґ­ЁҐ бҐаўҐа  Ё а Ў®зҐ© бв ­жЁЁ ЇаЁ ЇаЁҐ¬Ґ
Ё«Ё Ї®бл«ЄҐ иЁа®Є®ўҐй вҐ«м­®Ј® б®®ЎйҐ­Ёп. Ѓ«®ҐҐ Ї®¤а®Ў­го
Ё­д®а¬ жЁо б¬. ў ®ЇЁб ­ЁЁ <GetBroadcastMode>. <GetBroadcastMsg>
Ї®«Ґ§­  в®«мЄ® ¤«п ०Ё¬®ў 2 Ё 3; ў ®бвм «м­ле ०Ё¬ е
иЁа®Є®ўҐи вҐ«м­лҐ б®®ЎйҐ­Ёп «ЁЎ® ЁЈ­®аЁаговбп, «ЁЎ® ўлў®¤пвбп ­ 
нЄа ­ ®Ў®«®зЄ®© NetWare.



GetConnFromName
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function GetConnFromName(LoConn, HiConn : Byte,
ObjName : String) : Byte;

Џ а ¬Ґвал
---------

LoConn ЏҐаўл© Їа®ўҐапҐ¬л© ­®¬Ґа ᮥ¤Ё­Ґ­Ёп (1..100).

HiConn Џ®б«Ґ¤­Ё© Їа®ўҐапҐ¬л© ­®¬Ґа ᮥ¤Ё­Ґ­Ёп (1..100).

ObjName €бЄ®¬®Ґ § аҐЈЁбваЁа®ў ­­®Ґ Ё¬п.

ђҐ§г«мв в „®бв®ўҐа­л© ­®¬Ґа ᮥ¤Ё­Ґ­Ёп, Ё«Ё 0,
Ґб«Ё ᮮ⢥вбвўЁҐ ­Ґ ­ ©¤Ґ­®.


ЋЇЁб ­ЁҐ
--------

„ ­­ п Ї®¤Їа®Ја ¬¬  Їа®б¬ ваЁў Ґв ўбҐ Ї®¤б®Ґ¤Ё­Ґ­­лҐ а Ў®зЁҐ
бв ­жЁЁ ў ¤Ё Ї §®­Ґ ®в <LoConn> ¤® <HiConn>, зв®Ўл ­ ©вЁ ®¤Ё­, б
§ аҐЈЁбваЁа®ў ­­л¬ Ё¬Ґ­Ґ¬, § ¤ ­­л¬ ў <ObjName>. Џ®ЁбЄ
ўлЇ®«­пҐвбп ЎҐ§ гзҐв  ॣЁбва®ў. <GetConnFromName> ў®§ўа й Ґв
ЇҐаўл© ­ ©¤Ґ­­л© ­®¬Ґа ᮥ¤Ё­Ґ­Ёп б ¤ ­­л¬ Ё¬Ґ­Ґ¬. …б«Ё ®­® ­Ґ
­ ©¤Ґ­®, в® ў®§ўа й Ґ¬®Ґ §­ зҐ­ЁҐ а ў­® 0.

„ ­­ п Ї®¤Їа®Ја ¬¬  Ї®«Ґ§­  ¤«п ®ЇаҐ¤Ґ«Ґ­Ёп бЇЁбЄ  ­®¬Ґа®ў
ᮥ¤Ё­Ґ­Ё©, Ї® Є®в®а®¬г ¤®«¦­л Ўлвм Ї®б« ­л Є ­ «Ё§Ёа®ў ­­лҐ Ё«Ё
иЁа®Є®ўҐй вҐ«м­лҐ б®®ЎйҐ­Ёп. ‚ Є®¬ЎЁ­ жЁЁ б <GetInterNetAddress>
®­  в Є¦Ґ Ї®«Ґ§­  ¤«п ®ЇаҐ¤Ґ«Ґ­Ёп дЁ§ЁзҐбЄЁе  ¤аҐб®ў,
ЁбЇ®«м§гҐ¬ле ў Є®¬¬г­ЁЄ жЁпе IPX Ё«Ё SPX.

ЏаЁ¬Ґз ­Ёп
----------

<GetConnFromName> ЁЈ­®аЁагҐв ­®¬Ґа  ᮥ¤Ё­Ґ­Ё© ў­Ґ
¤®ЇгбвЁ¬®Ј® ¤Ё Ї §®­  ¤«п Є®­ЄаҐв­®© ўҐабЁЁ NetWare. (Ќ ЇаЁ¬Ґа,
ELS II Ї®¤¤Ґа¦Ёў Ґв ¤Ё Ї §®­ ᮥ¤Ё­Ґ­Ё© в®«мЄ® ®в 1 ¤® 8). ‡ 
ЁбЄ«о祭ЁҐ¬ б«гз п, Є®Ј¤  Ё¬Ґовбп ¤гЎ«ЁЄ вл ॣЁбва жЁ®­­ле Ё¬Ґ­,
§ ¤ ­ЁҐ ў ¤Ё Ї §®­Ґ 1..100 ўбҐЈ¤  ЎҐ§®Ї б­®.


GetConnNo
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function GetConnNo : Byte;

Џ а ¬Ґвал
---------

ђҐ§г«мв в Ќ®¬Ґа ᮥ¤Ё­Ґ­Ёп ¤«п ўл§лў о饩 Їа®Ја ¬¬л.

ЋЇЁб ­ЁҐ
--------

Љ ¦¤®© а Ў®зҐ© бв ­жЁЁ ў бҐвЁ § ¤ Ґвбп ­®¬Ґа ᮥ¤Ё­Ґ­Ёп, ў
§ ўЁбЁ¬®бвЁ ®в в®Ј®, Є®Ј¤  ®­  Ўл«  § аҐЈЁбваЁа®ў ­  ў бҐвЁ.
Њ­®ЈЁҐ Ї®¤Їа®Ја ¬¬л, ­ ЇаЁ¬Ґа бҐаўЁб­лҐ дг­ЄжЁЁ Є ­ «Ё§Ёа®ў ­­ле
б®®ЎйҐ­Ё©, вॡгов, зв®Ўл нв®в ­®¬Ґа Ўл« Ё§ўҐб⥭.

ЏаЁ¬Ґз ­Ёп
----------

‘гйҐбвўгов а §«Ёз­лҐ ¬Ґв®¤л ®ЇаҐ¤Ґ«Ґ­Ёп ­®¬Ґа  ᮥ¤Ё­Ґ­Ёп
¤агЈ®© а Ў®зҐ© бв ­жЁЁ. …б«Ё Ё§ўҐбв­® ॣЁбва жЁ®­­®Ґ Ё¬п
Ї®«м§®ў вҐ«п ¤агЈ®© бв ­жЁЁ, в® Ї®¤Їа®Ја ¬¬  <FetConnFromName>
 бб®жЁЁагҐв ­®¬Ґа ᮥ¤Ё­Ґ­Ёп б Ё¬Ґ­Ґ¬ Ї®«м§®ў вҐ«п. „агЈ®© ¬Ґв®¤
б®бв®Ёв ў ⮬, зв®Ўл Ё¬Ґвм а §¤Ґ«пҐ¬л© д ©«, еа ­пйЁ© ­®¬Ґа 
ᮥ¤Ё­Ґ­Ё© ¤«п ўбҐе  ЄвЁў­ле бв ­жЁ©.


GetInternetAddress
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

procedure GetInternetAddress(ConnNo : Byte;
var InterNetAdd : IPXAddress);

Џ а ¬Ґвал
---------

ConnNo Ќ®¬Ґа ᮥ¤Ё­Ґ­Ёп,  ¤аҐб Є®в®а®Ј® ЇаЁ­Ё¬ Ґв
нв  Їа®жҐ¤га .

ђҐ§г«мв в ‚®§ўа й Ґ¬л© дЁ§ЁзҐбЄЁ©  ¤аҐб ᮥ¤Ё­Ґ­Ёп.

ЋЇЁб ­ЁҐ
--------

ќв  Ї®¤Їа®Ја ¬¬  ЁбЇ®«м§гҐвбп ¤«п ва ­б«пжЁЁ Ё§ўҐбв­®Ј®
­®¬Ґа  ᮥ¤Ё­Ґ­Ёп ў дЁ§ЁзҐбЄЁ©  ¤аҐб, Ї®¤е®¤пйЁ© ¤«п Ї®бл«ЄЁ
б®®ЎйҐ­Ё© IPX Ё SPX. <GetInternet> ў®§ўа й Ґв ¤®бв®ўҐа­лҐ Ї®«п
<Network> Ё <Node> ¤«п <IPXAddress>. ‚®§ўа й Ґ¬л© ­®¬Ґа <Socket>
Ё¤Ґ­вЁдЁжЁагҐв Ј­Ґ§¤®, Є®в®а®Ґ «®Є «м­ п ®Ў®«®зЄ  NetWare
ЁбЇ®«м§гҐв ¤«п Є®¬¬г­ЁЄ жЁ© б бҐаўҐа®¬. ќв® Ј­Ґ§¤® ­Ґ ¤®«¦­®
ЁбЇ®«м§®ў вмбп ¤агЈЁ¬Ё ЇаЁЄ« ¤­л¬Ё Їа®Ја ¬¬ ¬Ё.

…б«Ё § ¤ ­­л© <ConnNo> ­ҐўҐаҐ­, в® ў®§ўа й Ґ¬л©  ¤аҐб
Internet § Ї®«­Ґ­ ­г«п¬Ё.


GetMessagePipe
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

procedure GetMessagePipe(var SourceConn : Byte;
var Msg : MessageStr) ;

Џ а ¬Ґвал
---------

SourceConn ‚®§ўа й Ґвбп ­®¬Ґа ᮥ¤Ё­Ґ­Ёп Ї®бл« о饩 бв®а®­л.

Msg ‚®§ўа й Ґ¬®Ґ б®®ЎйҐ­Ёп.

ЋЇЁб ­ЁҐ
--------

ЃҐаҐв б®®ЎйҐ­ЁҐ Ё§ ­ з «  ®зҐаҐ¤Ё Є ­ «м­ле б®®ЎйҐ­Ё©
д ©«-бҐаўҐа  Ї® 㬮«з ­Ёо ¤«п ўл§лў о饩 Їа®Ја ¬¬л. …б«Ё
б®®ЎйҐ­Ё© ­Ґ Ё¬ҐҐвбп, <Msg> гбв ­ ў«Ёў Ґвбп а ў­л¬ Їгбв®© бва®ЄҐ,
  <SourceCon> гбв ­ ў«Ёў Ґвбп ў ­®«м. ‚ Їа®вЁў­®¬ б«гз Ґ <Msg>
ᮤҐа¦Ёв б®®ЎйҐ­ЁҐ,   <SourceConn> Ё¬ҐҐв ­®¬Ґа ᮥ¤Ё­Ґ­Ёп
Ї®бл« о饩 бв®а®­л. ‘®®ЎйҐ­ЁҐ ¤®«¦­® Ўлвм ­Ґ ¤«Ё­­ҐҐ 126
бЁ¬ў®«®ў.

Ѓ®«ҐҐ Ї®¤а®Ў­го Ё­д®а¬ жЁо б¬. ў ®ЇЁб ­Ёпе <OpenMessagePipe>
Ё <SendMessagePipe>.


LogNetworkMessage
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

procedure logNetworkMessage(Message : Str80);

Џ а ¬Ґвал
---------


Message ђҐЈЁбваЁа㥬®Ґ б®®ЎйҐ­ЁҐ.

ЋЇЁб ­ЁҐ
--------

„®Ў ў«пҐв § ¤ ­­®Ґ б®®ЎйҐ­ЁҐ ў д ©« NET$LOG.MSG д ©«-бҐаўҐа 
Ї® 㬮«з ­Ёо. NetWare  ўв®¬ вЁзҐбЄЁ ЇаҐ¤Ї®бл« Ґв б®®ЎйҐ­Ёо
⥪гйЁҐ ¤ вг Ё ўаҐ¬п,   в Є¦Ґ ­®¬Ґа ᮥ¤Ё­Ґ­Ёп ¤«п ўл§лў о饩
Їа®Ја ¬¬л. ќв  Ї®¤Їа®Ја ¬¬  ЇаҐ¤­ §­ зҐ­  ¤«п ЁбЇ®«м§®ў ­Ёп ў
Їа®Ја ¬¬ е, Є®в®ал¬ вॡгҐвбп ॣЁбва жЁп Ё­д®а¬ жЁп ®Ў
Ёе ЁбЇ®«м§®ў ­ЁЁ ў  ¤¬Ё­Ёбва вЁў­ле 楫пе.



OpenMessagePipe
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function OpenMessagePipe(var Connect, Result : ConnectionList);

Џ а ¬Ґвал
---------

Connect ‘ЇЁб®Є ®вЄалў Ґ¬ле ᮥ¤Ё­Ґ­Ё©.

Result Љ®¤л, ў®§ўа й Ґ¬лҐ ¤«п Є ¦¤®Ј® Ё§ ᮥ¤Ё­Ґ­Ё©.


ЋЇЁб ­ЁҐ
--------

„«п гбЇҐи­®© ЇҐаҐ¤ зЁ б®®ЎйҐ­Ёп Ї® Є ­ «г б­ з «  вॡгҐвбп
ўлЇ®«­Ёвм ¤ў  и Ј . Џ®бл« ой п бв ­жЁп ¤®«¦­  ᮧ¤ вм "Ї®«®ўЁ­г
Є ­ « " ¤«п Є ¦¤®© бв ­жЁЁ, б Є®в®а®© ®­  е®зҐв бўп§ вмбп.
ЏаЁ­Ё¬ ой п бв ­жЁп ¤«п § ўҐа襭Ёп гбв ­®ўЄЁ бўп§Ё ¤®«¦­  в Є¦Ґ
®вЄалвм бў®о Ї®«®ўЁ­г Є ­ « . € ЇҐаҐ¤ ой п, Ё ЇаЁ­Ё¬ ой п бв®а®­л
®вЄалў овбп ЇаЁ Ї®¬®йЁ Їа®жҐ¤гал <OpenMessagePipe>. ‘ҐаўҐа
а Ў®в Ґв ¤«п Є ­ «  Є Є Ї®б।­ЁЄ, Ї®н⮬г д ЄвЁзҐбЄЁ ®ЎҐ
Ї®«®ўЁ­л Є ­ «  ®вЄалў овбп ¬Ґ¦¤г бв ­жЁҐ© Ё бҐаўҐа®¬.

<OpenMessagePipe> ¬®¦Ґв ®вЄалў вм Є ­ «л б ®¤­Ё¬ Ё«Ё Ў®«ҐҐ
ᮥ¤Ё­Ґ­ЁҐ¬ (бв ­жЁҐ©) ®¤­®ўаҐ¬Ґ­­®. Џ а ¬Ґва <Connect> ᮤҐа¦Ёв
бЇЁб®Є ўбҐе ­®¬Ґа®ў ᮥ¤Ё­Ґ­Ё©, ¤«п Є®в®але § Їа®иҐ­ Є ­ «.
Џ а ¬Ґва <Result> ў®§ўа й Ґв бв вгб Є ¦¤®© Ї®ЇлвЄЁ ᮥ¤Ё­Ґ­Ёп.
„«п Є ¦¤®Ј® н«Ґ¬Ґ­в  ў бЇЁбЄҐ ᮥ¤Ё­Ґ­Ё© ў®§¬®¦­л б«Ґ¤гойЁҐ Є®¤л
१г«мв в :


0 “бЇҐи­®Ґ § ўҐа襭ЁҐ (Є ­ « ⥯Ґам Ї®«®­ Ё ®вЄалв).

$FE ЌҐЇ®«­л© Є ­ « (бв ­жЁп ¬ЁиҐ­Ё бгйҐбвўгҐв, ­® ­Ґ
®вЄал«  бў®о Ї®«®ўЁ­г).

$FF ЌҐг¤ з  (­®¬Ґа ᮥ¤Ё­Ґ­Ёп ­ҐўҐа­® § ¤ ­ Ё«Ё
­Ґ ЁбЇ®«м§гҐвбп).


<OpenMessagePipe> ®ЎҐбЇҐзЁў Ґв ®¤Ё­ Ё§ ¬Ґв®¤®ў, ЇаЁ Ї®¬®йЁ
Є®в®але ЇаЁЄ« ¤­ п Їа®Ја ¬¬  ¬®¦Ґв ®ЇаҐ¤Ґ«Ёвм ­®¬Ґа  ᮥ¤Ё­Ґ­Ё©
¤«п ўбҐе Їа®зЁе а Ў®зЁе бв ­жЁ©, ­  Є®в®але ўлЇ®«­пҐвбп нв 
¦Ґ Їа®Ја ¬¬  ў ¬®¬Ґ­в ўл§®ў .


SendBroadcastMsg
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

procedure SendBroadcastMsg(Msg : BroadcastStr;
var Connect, Result : ConnectionList);

Џ а ¬Ґвал
---------

Msg Џ®бл« Ґ¬®Ґ б®®ЎйҐ­ЁҐ.

Connect ‘®Ґ¤Ё­Ґ­Ёп, Є®в®ал¬ Ї®бл« Ґвбп б®®ЎйҐ­ЁҐ.

Result ‚®§ўа й Ґв Є®¤л ¤«п Є ¦¤®© ЇаЁ­Ё¬ о饩 бв®а®­л.

ЋЇЁб ­ЁҐ
--------

Џ®бл« Ґв иЁа®Є®ўҐй вҐ«м­®Ґ б®®ЎйҐ­ЁҐ Є® ўбҐ¬ ᮥ¤Ё­Ґ­Ёп¬,
§ ¤ ­­л¬ ў <connect>. („Ґв «Ё б¬. ў ®ЇЁб ­ЁЁ <ConnectionList>).
„«Ё­  б®®ЎйҐ­Ёп ¬ ЄбЁ¬ «м­® а ў­  55 бЁ¬ў®« ¬. <Result>
ў®§ўа й Ґв Є®¤ ¤«п Є ¦¤®Ј® § ¤ ­­®Ј® ᮥ¤Ё­Ґ­Ёп. „«п Є ¦¤®Ј®
н«Ґ¬Ґ­в  <List> ў <Result> ў®§ўа й Ґвбп б«Ґ¤гойЁ© Є®¤:

0 “бЇҐи­ п ¤®бв ўЄ  б®®ЎйҐ­Ёп.

$FC ‘в ­жЁп - ¬ЁиҐ­м 㦥 Ё¬ҐҐв Ї®¤ўҐиҐ­­®Ґ б®®ЎйҐ­ЁҐ
(¤ ­­®Ґ б®®ЎйҐ­ЁҐ ®вўҐаЈ Ґвбп).

$FD ЌҐўҐа­л© ­®¬Ґа ᮥ¤Ё­Ґ­Ёп.

$FF ЌҐўҐа­® § ¤ ­  бв ­жЁп-¬ЁиҐ­м
(¤ ­­®Ґ б®®ЎйҐ­ЁҐ ®вўҐаЈ Ґвбп).

ЏаЁ¬Ґз ­Ёп
----------

€­д®а¬ жЁо ® ⮬, Є Є ЇаЁ­Ё¬ ой п бв ­жЁп ॠЈЁагҐв ­ 
иЁа®Є®ўҐй вҐ«м­®Ґ б®®ЎйҐ­ЁҐ, б¬. ў ®ЇЁб ­ЁЁ <SetBroadcastMode>.



SendMessagePipe
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

procedure SendMessagePipe(Msg : MessageStr;
var Connect, Result : ConnectionList);

Џ а ¬Ґвал
---------

Msg Џ®бл« Ґ¬®Ґ б®®ЎйҐ­ЁҐ.

Connect ‘ЇЁб®Є ᮥ¤Ё­Ґ­Ё©, Є®в®ал¬ Ї®бл« Ґвбп б®®ЎйҐ­ЁҐ.

Result ‚®§ўа й Ґв Є®¤л ¤«п Є ¦¤®Ј® ᮥ¤Ё­Ґ­Ёп.

ЋЇЁб ­ЁҐ
--------

Џ®бл« Ґв б®®ЎйҐ­ЁҐ Ї® бЇЁбЄг а Ў®зЁе бв ­жЁ©, ЁбЇ®«м§гп
а ­ҐҐ ®вЄалвлҐ Є ­ «л. Љ ¦¤®Ґ б®®ЎйҐ­ЁҐ ¬®¦Ґв Ўлвм ­Ґ ¤«Ё­­ҐҐ 126
бЁ¬ў®«®ў. Љ ¦¤ п бв ­жЁп ¬®¦Ґв Ё¬Ґвм ¬ ЄбЁ¬г¬ 6 ЇаЁ­пвле
Ї®¤ўҐиҐ­­­ле б®®ЎйҐ­Ё© ®¤­®ўаҐ¬Ґ­­®; ¤®Ї®«­ЁвҐ«м­лҐ б®®ЎйҐ­Ёп
®вўҐаЈ овбп.

<Connect> § ¤ Ґв а Ў®зго бв ­жЁо, Єг¤  Ўг¤Ґв Ї®б« ­®
б®®ЎйҐ­ЁҐ. <Result> ў®§ўа й Ґв бв вгб Є ¦¤®© ¤®бв ўЄЁ б
ЁбЇ®«м§®ў ­ЁҐ¬ б«Ґ¤гойЁе Є®¤®ў ў Ї®«Ґ <List>:

0 “бЇҐи­®Ґ § ўҐа襭ЁҐ (б®®ЎйҐ­ЁҐ ўўҐ¤Ґ­® ў Є ­ «).

$FC Љ ­ « Ї®«®­ (б®®ЎйҐ­ЁҐ ®вўҐаЈ Ґвбп).

$FE ЌҐЇ®«­л© Є ­ « (Є ­ « ®в бҐаўҐа  Є бв ­жЁЁ ¬ЁиҐ­Ё
­Ґ бгйҐбвўгҐв).

$FF ЌҐг¤ з  (­®¬Ґа ᮥ¤Ё­Ґ­Ёп ­ҐўҐа­® § ¤ ­ Ё«Ё Є ­ « ®в
Ї®бл« о饩 бв®а®­л ¤® бҐаўҐа  ­Ґ бгйҐбвўгҐв).


ЏаЁ¬Ґз ­Ёп
----------

Љ ­ «м­лҐ б®®ЎйҐ­Ёп Ё¬Ґов ¬ аиагв зҐаҐ§ д ©«-бҐаўҐа, Ё
Ї®н⮬㠤«п Ёе ®Ўа Ў®вЄЁ ў бҐаўҐаҐ вॡгҐвбп ­ҐЄ®в®а®Ґ ўаҐ¬п.
’ ЄЁҐ б®®ЎйҐ­Ёп ЇаҐ¤­ §­ зҐ­л ¤«п ЁбЇ®«м§®ў ­Ёп ў § ¤ з е б
㬥७­л¬ га®ў­Ґ¬ ¬Ґ¦-㧫®ўле Є®¬¬г­ЁЄ жЁ©. ЏаЁ Ў®«м襩
Ё­вҐ­бЁў­®бвЁ Є®¬¬г­ЁЄ жЁ© б«Ґ¤гҐв ЁбЇ®«м§®ў вм бҐаўЁб­лҐ
б।бвў  IPX Ё«Ё SPX.


ServerConnNo
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

function ServerConnNo : Byte;

Џ а ¬Ґвал
---------

ђҐ§г«мв в Ќ®¬Ґа ᮥ¤Ё­Ґ­Ёп ¤«п бҐаўҐа  Ї® 㬮«з ­Ёо (1..8).

ЋЇЁб ­ЁҐ
--------

‘®Ґ¤Ё­Ґ­Ёп бҐаўҐа®ў Ё а Ў®зЁе бв ­жЁ© Ё¬Ґов ­Ґ§ ўЁбЁ¬лҐ
­®¬Ґа . „агЈЁ¬Ё б«®ў ¬Ё, ЇҐаўл© бҐаўҐа Ё¬ҐҐв ­®¬Ґа ᮥ¤Ё­Ґ­Ёп
бҐаўҐа  1,   ЇҐаў п ॣЁбваЁа㥬 п а Ў®з п бв ­жЁп Ї®«гз Ґв ­®¬Ґа
ᮥ¤Ё­Ґ­Ёп в Є¦Ґ 1.

Ќ®¬Ґа ᮥ¤Ё­Ґ­Ёп ¤«п д ©«-бҐаўҐа  ў ¤®Єг¬Ґ­в жЁЁ Ї® Novell
з бв® ­ §лў ов ­®¬Ґа®¬ Ј­Ґ§¤ .


SetBroadcastMode
-----------------------------------------------------------------
ЋЎкпў«Ґ­ЁҐ
----------

procedure SetBroadCastMode(Mode : Byte);

Џ а ¬Ґвал
---------

Mode Ќ®ўл© ०Ё¬ иЁа®Є®ўҐй ­Ёп (0..3).

ЋЇЁб ­ЁҐ
--------

“бв ­ ў«Ёў Ґв ०Ё¬ иЁа®Є®ўҐй ­Ёп ў §­ зҐ­ЁЁҐ, § ¤ ­­®Ґ ў
<Mode>. ќв®в ०Ё¬ ®ЇаҐ¤Ґ«пҐв, Є ЄЁ¬ ®Ўа §®¬ а Ў®з п бв ­жЁп Ё
бҐаўҐа ॠЈЁагов ­  иЁа®Є®ўҐй вҐ«м­лҐ б®®ЎйҐ­Ёп. Ћ­ ¬®¦Ґв Ўлвм
Ё­вҐаЇаҐвЁа®ў ­ б«Ґ¤гойЁ¬ ®Ўа §®¬:

ђҐ¦Ё¬ ‘ҐаўҐа ЋЎ®«®зЄ 
----- ------- --------
0 ‘®еа ­пҐв ЃҐаҐв Ё ўлў®¤Ёв ­  ¤ЁбЇ«Ґ©
1 ЋвўҐаЈ Ґв ЃҐаҐв Ё ўлў®¤Ёв ­  ¤ЁбЇ«Ґ©
2 ЋвўҐаЈ Ґв €Ј­®аЁагҐв
3 ‘®еа ­пҐв €Ј­®аЁагҐв

Љ®Ј¤  "‘ҐаўҐа" Ё¬ҐҐв ०Ё¬ "ЋвўҐаЈ Ґв", бҐаўҐа ЁЈ­®аЁагҐв
«оЎлҐ б®®ЎйҐ­Ёп, ЇаҐ¤­ §­ зҐ­­лҐ ¤«п ⥪г饩 а Ў®зҐ© бв ­жЁЁ (§ 
ЁбЄ«о祭ЁҐ¬ иЁа®Є®ўҐй вҐ«м­ле б®®ЎйҐ­Ё© б ¬®Ј® бҐаўҐа , Є®в®алҐ
Ї®бл« овбп ўбҐЈ¤ ). Љ®Ј¤  "ЋЎ®«®зЄ " Ё¬ҐҐв ०Ё¬ "ЃҐаҐв Ё ўлў®¤Ёв
­  ¤ЁбЇ«Ґ©" , ®Ў®«®зЄ  NetWare ­Ґ¬Ґ¤«Ґ­­® ўлў®¤Ёв
иЁа®Є®ўҐй вҐ«м­®Ґ б®®ЎйҐ­ЁҐ ў бва®ЄҐ 25 вҐа¬Ё­ « . ‚ Їа®вЁў­®¬
б«гз Ґ а Ў®з п бв ­жЁп ¬®¦Ґв ®Їа иЁў вм ­ «ЁзЁҐ б®®ЎйҐ­ЁҐ ЇаЁ
Ї®¬®йЁ ўл§®ў  <GetBroadcastMessage>.

ЏаЁ¬Ґз ­Ёп
----------

…б«Ё ўл ¬®¤ЁдЁжЁагҐвҐ ०Ё¬ иЁа®Є®ўҐй ­Ёп, ⮠४®¬Ґ­¤гҐвбп
ЇҐаҐ¤ Ё§¬Ґ­Ґ­ЁҐ¬ б з «  б®еа ­Ёвм ⥪г饥 б®бв®п­ЁҐ нв®Ј® ०Ё¬ ,
  § вҐ¬, ЇҐаҐ¤ ўл室®¬ Ё§ Їа®Ја ¬¬л, ў®ббв ­®ўЁвм ҐЈ®.


ђ биЁаҐ­­лҐ бҐаўЁб­лҐ б।бвў  ®Ў¬Ґ­  б®®ЎйҐ­Ёп¬Ё ў бҐвЁ
--------------------------------------------------------

NetWare Ї®¤¤Ґа¦Ёў Ґв ¤ў  а биЁаҐ­­ле ¬Ґв®¤  ®аЈ ­Ё§ жЁЁ
бўп§Ё ¬Ґ¦¤г а Ў®зЁ¬Ё бв ­жЁп¬Ё. ќвЁ ¬Ґв®¤л ®ЎҐбЇҐзЁў ов Ў®«ҐҐ
ўлб®Є®Ґ ЎлбвதҐ©бвўЁҐ Ё Ў®«миго Ґ¬Є®бвм Ї® ¤ ­­л¬ Ї® ба ў­Ґ­Ёо б
Ў §®ўл¬Ё иЁа®Є®ўҐй вҐ«м­л¬Ё Ё Є ­ «м­л¬Ё бҐаўЁб­л¬Ё б।бвў ¬Ё,
­Ґ ЁбЇ®«м§гп ЇаЁ н⮬ Є ЄЁе-«ЁЎ® аҐбгаб®ў бҐаўҐа . ќвЁ
а биЁаҐ­­лҐ ¬Ґв®¤л ­ §лў овбп IPX Ё SPX.

IPX ®Ў®§­ з Ґв Internetwork Packet eXchange protocol
("Їа®в®Є®« Ї ЄҐв­®Ј® ®Ў¬Ґ­  ў б®бв ў­®© бҐвЁ"). ќв® ॠ«Ё§ жЁп
Novell Їа®в®Є®«  Datagram Packet Protocol, а §а Ў®в ­­®Ј® дЁа¬®©
Xerox. ’Ґа¬Ё­ "б®бв ў­ п бҐвм" ®Ў®§­ з Ґв Є Є ⥪гйго бҐвм, в Є Ё
«оЎлҐ ¤агЈЁҐ бҐвЁ, б Є®в®ал¬Ё ®­  ¬®¦Ґв Ўлвм ᮥ¤Ё­Ґ­  "¬®б⮬".
IPX вॡгҐв ­ «ЁзЁп Advanced NetWare ўҐабЁЁ 270 Ё«Ё бв аиҐ.
ЏаЁЄ« ¤­лҐ Їа®Ја ¬¬л, а Ў®в ойЁҐ ў Advanced NetWare, ЁбЇ®«м§гов
¤а ©ўҐал IPX ¤«п Їаאַ© бўп§Ё б ¤агЈЁ¬Ё а Ў®зЁ¬Ё бв ­жЁп¬Ё,
бҐаўҐа ¬Ё Ё«Ё гбва®©бвў ¬Ё.

Љ ¦¤®Ґ гбва®©бвў® ў б®бв ў­®© бҐвЁ ­ §лў Ґвбп 㧫®¬ Ё Ё¬ҐҐв
г­ЁЄ «м­л©  ¤аҐб. IPX Ї®§ў®«пҐв 㧫㠯®бл« вм Ї ЄҐв ¤агЈ®¬г 㧫г
Ё«Ё ЇаЁ­Ё¬ вм Ї ЄҐв ®в ­ҐЈ®. Џ ЄҐв ¬Ё ­ §лў овбп Їа®Ё§ў®«м­лҐ
Ї®б«Ґ¤®ў вҐ«м­®бвЁ Ў ©в®ў ¤«Ё­®© ¤® 546 Ў ©в®ў. IPX Ё§®«ЁагҐв
ЇаЁЄ« ¤­го Їа®Ја ¬¬г ®в ¤Ґв «Ґ© дЁ§ЁзҐбЄ®Ј® ¬ аиагв  Ї ЄҐв . •®вп
IPX ­Ґ Ј а ­вЁагҐв ¤®бв ўЄг Ї ЄҐв  (¤агЈ®© 㧥« ¬®¦Ґв
Їа®ЁЈ­®аЁа®ў вм ҐЈ®), ҐЈ® бҐаўЁб­лҐ б।бвў  Ї®§ў®«пов бва®Ёвм
Їа®в®Є®«л Ј а ­вЁа®ў ­­®© ¤®бв ўЄЁ. SPX (®ЇЁб ­­л© ­Ё¦Ґ)
ЇаҐ¤бв ў«пҐв б®Ў®© Їа®в®Є®« Ј а ­вЁа®ў ­­®© ¤®бв ўЄЁ, ®б­®ў ­­л©
­  IPX.

Њ®¤г«м NETWARE ॠ«Ё§гҐв Ї®¤Їа®Ја ¬¬л IPX, ®в ­Ё§Є®© ¤®
ўлб®Є®© б⥯Ґ­Ё Ё­вҐЈа жЁЁ. Џ®¤Їа®Ја ¬¬л ­Ё¦­ҐЈ® га®ў­п нв®
Їа®бв® Їа®жҐ¤гал Ё дг­ЄжЁЁ Џ бЄ «п, ­ҐЇ®б।б⢥­­® ўл§лў ойЁҐ
бҐаўЁб­лҐ Ї®¤Їа®Ја ¬¬л IPX. Џ®¤Їа®Ја ¬¬л ўҐае­ҐЈ® га®ў­п
Ё§®«Ёагов Їа®Ја ¬¬Ёбв  ®в ¤Ґв «Ґ© д®а¬Ёа®ў ­Ёп Ї ЄҐв®ў IPX.
ђ §а Ў®взЁЄЁ ЇаЁЄ« ¤­ле Їа®Ја ¬¬ ¤®«¦­л ЁбЇ®«м§®ў вм Ї®¤Їа®Ја ¬¬л
ўҐае­ҐЈ® га®ў­п. Џ®бЄ®«мЄг Ї®¤Їа®Ја ¬¬л ­Ё¦­ҐЈ® га®ў­п вॡгов
¤Ґв «м­®Ј® Ї®­Ё¬ ­Ёп бвагЄвга ¤ ­­ле, ЁбЇ®«м§гҐ¬ле IPX, ¬л ­Ґ
¤®Єг¬Ґ­вЁа㥬 Ёе §¤Ґбм. Џа®Ја ¬¬Ёбвл, § Ё­вҐаҐб®ў ­­лҐ ў н⮬
ў®Їа®бҐ, ¤®«¦­л ®Ўа вЁвмбп Є ‘Їа ў®з­ЁЄг Novell API, ’®¬ 2.

„ў  ў ¦­ле вЁЇ  ¤ ­­ле, бўп§ ­­лҐ б бҐаўЁб­л¬Ё б।бвў ¬Ё
IPX, нв® § Ј®«®ў®Є IPX, <IPXHeader>, Ё Ў«®Є гЇа ў«Ґ­Ёп б®ЎлвЁп¬Ё,
<IPXECB>. <IPXHeader> ᮤҐа¦Ёв ¬ аиагв­го Ё­д®а¬ жЁо,
ЁбЇ®«м§гҐ¬го IPX ¤«п ¤®бв ўЄЁ Ї ЄҐв . <IPXECB> ўЄ«оз Ґв ў ᥡп
гЄ § вҐ«м ­  <IPXHeader> Ё ¤®Ї®«­ЁвҐ«м­лҐ гЄ § вҐ«Ё ­  ®¤Ё­ Ё«Ё
Ў®«ҐҐ ЎгдҐа®ў ¤ ­­ле, еа ­пйЁе б ¬ Ї ЄҐв.

—в®Ўл Ї®б« вм Ї ЄҐв ­  ¤агЈ®© 㧥«, ­Ґ®Ўе®¤Ё¬® § ¤ вм
­ҐбЄ®«мЄ® Ї®«Ґ© <IPXHeader>:

-  ¤аҐб бҐвЁ, зҐвлаҐеЎ ©в®ў®Ґ зЁб«®;

-  ¤аҐб дЁ§ЁзҐбЄ®Ј® 㧫 , зҐбвЁЎ ©в®ў®Ґ зЁб«®;

- Ј­Ґ§¤®, ¤ўгеЎ ©в®ў®Ґ зЁб«®.

Ђ¤аҐб бҐвЁ § ¤ Ґв бҐвм 㧫  ­ §­ зҐ­Ёп (вॡгҐвбп, Ї®бЄ®«мЄг
IPX ¬®¦Ґв ᮥ¤Ё­пвм ­ҐбЄ®«мЄ® бҐвҐ©). …б«Ё ў нв® Ї®«Ґ § ЇЁб ­
­®«м, в® ЇаЁҐ¬­ЁЄ ®в­®бЁвбп Є в®© ¦Ґ бҐвЁ, зв® Ё ЇҐаҐ¤ взЁЄ.

Ђ¤аҐб 㧫  § ¤ Ґв Є®­ЄаҐв­го бв ­жЁо ў бҐвЁ. €¬ҐҐвбп
Їа®жҐ¤га  <IPXInternetAddress>, Є®в®а п ў®§ўа й Ґв  ¤аҐб бҐвЁ Ё
㧫  ¤«п ўл§лў о饩 бв ­жЁЁ,   <GetInternetAddress> ў®§ўа й Ґв
 ¤аҐб ¤ ­­®Ј® ᮥ¤Ё­Ґ­Ёп ў ⥪г饩 бҐвЁ.

Џ®¬Ё¬®  ¤аҐб®ў 㧫  Ё бҐвЁ, ЇҐаҐ¤ ой п Ё ЇаЁҐ¬­ п бв ­жЁЁ
¤®«¦­л б®Ј« б®ў вм ¬Ґ¦¤г б®Ў®© "Ј­Ґ§¤®". ‚л ¬®¦ҐвҐ ЇаҐ¤бв ў«пвм
ᥡҐ Ј­Ґ§¤  Є Є ¤ўг-­ Їа ў«Ґ­­лҐ а ¤Ё® Є ­ «л; ¤«п в®Ј®, зв®Ўл
¬®Ј«  Їа®Ё§®©вЁ бўп§м, Ё ЇҐаҐ¤ взЁЄ, Ё ЇаЁҐ¬­ЁЄ ¤®«¦­л Ўлвм
­ бв஥­л ­  ®¤Ё­ Ё в®в ¦Ґ Є ­ «. “§Ґ« ¬®¦Ґв Ё¬Ґвм ®¤­®ўаҐ¬Ґ­­®
®вЄалвл¬Ё ¤® 50 Ј­Ґ§¤ (Ї® Єа ©­Ґ© ¬ҐаҐ, Ї® ¤®Єг¬Ґ­в жЁЁ Novell;
­ иЁ нЄбЇҐаЁ¬Ґ­вл Ї®Є §лў ов, зв® ЇаЁЄ« ¤­®© Їа®Ја ¬¬Ґ бв®«мЄ® Ёе
­Ґ ¬®¦Ґв Ўлвм ¤®бвгЇ­®).

‚л§лў ой п Їа®Ја ¬¬  ¤®«¦­  § ¤ вм ­®¬Ґа Ј­Ґ§¤ , ­Ґ
Є®­д«ЁЄвгойЁ© б 㦥  ЄвЁў­л¬Ё ў ⥪гйЁ© ¬®¬Ґ­в ў бҐвЁ. Ќ®¬Ґа 
Ј­Ґ§¤ ў ¤Ё Ї §®­Ґ ®в $4000 ¤® $7FFF ­ §лў овбп "¤Ё­ ¬ЁзҐбЄЁ¬Ё"
Ј­Ґ§¤ ¬Ё; ®­Ё ЇаҐ¤­ §­ зҐ­л ¤«п ЁбЇ®«м§®ў ­Ёп «оЎл¬Ё
Ї®«м§®ў вҐ«п¬Ё бҐвЁ. ‡­ зҐ­Ёп ®в $8000 Ё бв аиҐ нв® "Ї®Їг«па­лҐ"
Ј­Ґ§¤ , §­ зҐ­Ёп Є®в®але § аҐ§ҐаўЁа®ў ­л Novell ¤«п иЁа®Є®
Ё§ўҐбв­ле ЇаЁЄ« ¤­ле Їа®Ја ¬¬. ѓ­Ґ§¤  б® §­ зҐ­Ёп¬Ё ¬Ґ­ҐҐ $4000
१ҐаўЁа®ў ­л Novell ¤«п ў­гв७­ҐЈ® ЁбЇ®«м§®ў ­Ёп.

ЏаЁЄ« ¤­ п Їа®Ја ¬¬  ¬®¦Ґв ЁбЇ®«м§®ў вм «оЎ®© Ё§ ­ҐбЄ®«мЄЁе
бЇ®б®Ў®ў ўлЎ®а  г­ЁЄ «м­ле, ­® б®Ј« б®ў ­­ле ­®¬Ґа®ў Ј­Ґ§¤.
ЏҐаўл© Ё§ ­Ёе Їа®бв Ё Є Є Їа ўЁ«® ўЇ®«­Ґ  ¤ҐЄў вҐ­: Їа®бв®
ЁбЇ®«м§г©вҐ Їа®Ё§ў®«м­л© ­®¬Ґа Ё§ ¤Ё Ї §®­  ¤Ё­ ¬ЁзҐбЄЁе Ј­Ґ§¤ Ё
ᤥ« ©вҐ ¤ ­­л© ўлЎ®а Ё­бв ««пжЁ®­­®© ®ЇжЁҐ© ¤«п ¤ ­­®©
ЇаЁЄ« ¤­®© Їа®Ја ¬¬л. ‚ ­Ґ¦Ґ« вҐ«м­®¬ б«гз Ґ, Є®Ј¤  Ё¬ҐҐвбп
Є®­д«ЁЄв б ­ҐЄ®в®а®© ¤агЈ®© ўлЇ®«­пҐ¬®© ў бҐвЁ ЇаЁЄ« ¤­®©
Їа®Ја ¬¬®©,  ¤¬Ё­Ёбва в®а бҐвЁ ¬®¦Ґв ўлЎа вм ¤агЈ®© ­®¬Ґа Ё
Ї®ўв®аЁвм Ё­бв ««пжЁо Їа®Ја ¬¬л.

‚в®а®© Ї®¤е®¤ Ў®«ҐҐ б«®¦Ґ­, ­® а Ў®в Ґв ЎҐ§ ў¬Ґи вҐ«мбвў 
祫®ўҐЄ . ЏаЁ § ЇгбЄҐ ЇаЁЄ« ¤­®© Їа®Ја ¬¬л ®вЄа®©вҐ Є ­ « б®
ўбҐ¬Ё Їа®зЁ¬Ё 㧫 ¬Ё (Ў®«ҐҐ Ї®¤а®Ў­® ®Ў н⮬ ­ ЇЁб ­® ў а §¤Ґ«Ґ
¤«п Ў §®ўле б।бвў ЇҐаҐ¤ зЁ б®®ЎйҐ­Ё©). ‡ вҐ¬ Ї®и«ЁвҐ б®®ЎйҐ­ЁҐ
Ї® ¤ ­­®¬г Є ­ «г Ё ЇаЁ¬ЁвҐ ®вўҐв. …б«Ё ®вўҐв Ї®«г祭, Їа®ўҐамвҐ,
­ зЁ­ Ґвбп «Ё ®­ бЇҐжЁдЁзҐбЄЁ¬ ¤«п ¤ ­­®© Їа®Ја ¬¬л Є®¤®¬
а бЇ®§­ ў ­Ёп, Ё Ё­вҐаЇаҐвЁаг©вҐ ®бв «м­го з бвм б®®ЎйҐ­Ёп Є Є
®¤Ё­ Ё«Ё Ў®«ҐҐ ­®¬Ґа®ў Ј­Ґ§¤ ¤«п ЁбЇ®«м§®ў ­Ёп ў бўп§пе IPX. …б«Ё
ўҐа­л© ®вўҐв ­Ґ ЇаЁ­пв, ўл§®ўЁвҐ Ї®бв ў«пҐ¬го Ї®¤Їа®Ја ¬¬г
NETWARE ¤«п Ї®«г祭Ёп г­ЁЄ «м­®Ј® ­®¬Ґа  Ј­Ґ§¤ . ‚ ®бв «м­®Ґ
ўаҐ¬п ўлЇ®«­Ґ­Ёп ЇаЁЄ« ¤­®© Їа®Ја ¬¬л ­ҐЇаҐалў­® Є®­ва®«Ёаг©вҐ
Їа®¤®«¦ ойЁ© ®бв ў вмбп ®вЄалвл¬ Є ­ « ¤«п ®вўҐв  ­  § Їа®б
®ЎйҐЈ® ­®¬Ґа  Ј­Ґ§¤  ®в ¤агЈ®© бв ­жЁЁ.

Ђ­ «®ЈЁз­л© Ї®¤е®¤ б®бв®Ёв ў ЁбЇ®«м§®ў ­ЁЁ а §¤Ґ«пҐ¬®Ј®
д ©« . ” ©« ᮤҐа¦Ёв ¤ў  Ё«Ё Ў®«ҐҐ б«®ў : б­ з «  бзҐвзЁЄ
гз бвўгойЁе а Ў®зЁе бв ­жЁ©,   § вҐ¬ ®¤Ё­ Ё«Ё Ў®«ҐҐ ­®¬Ґа®ў
Ј­Ґ§¤. Љ®Ј¤  ЇҐаў п бв ­жЁп ­ зЁ­ Ґв ўлЇ®«­пвм Їа®Ја ¬¬г, ®­ 
Їа®ўҐапҐв бгйҐбвў®ў ­ЁҐ д ©« . …б«Ё ®­ ­Ґ бгйҐбвўгҐв, «ЁЎ® Ґб«Ё
бзҐвзЁЄ бв ­жЁ© а ўҐ­ ­г«о, ®­  ўл¤Ґ«пҐв г­ЁЄ «м­®Ґ Ј­Ґ§¤® Ё
§ ЇЁблў Ґв §­ зҐ­ЁҐ бзҐвзЁЄ  1,   §  ­Ё¬ ­®¬Ґа Ј­Ґ§¤ . ‚
Їа®вЁў­®¬ б«гз Ґ ®­  Ё­ЄаҐ¬Ґ­вЁагҐв бзҐвзЁЄ бв ­жЁ© Ё ЁбЇ®«м§гҐв
еа ­Ё¬л© в ¬ ­®¬Ґа Ј­Ґ§¤ . Љ®Ј¤  ЇаЁЄ« ¤­ п Їа®Ја ¬¬  § ўҐаи Ґв
а Ў®вг, ®­  ўлЇ®«­пҐв ¤ҐЄаҐ¬Ґ­в бзҐвзЁЄ  бв ­жЁ©. ђ §г¬ҐҐвбп,
зв®Ўл Ё§ЎҐ¦ вм Їа®Ў«Ґ¬, бўп§ ­­ле б ®¤­®ўаҐ¬Ґ­­л¬ ¤®бвгЇ®¬,
вॡгҐвбп Їа ўЁ«м­® § ЇЁа вм д ©« а Ў®в о饩 б ­Ё¬ Їа®Ја ¬¬®©.

Џ®¤ў®¤п Єа вЄЁ© Ёв®Ј ®Ўб㦤Ґ­Ёп бҐаўЁб­ле б।бвў IPX, ¬л
¤ Ґ¬ б«Ґ¤гойЁ© ЇҐаҐзҐ­м дг­ЄжЁ© ¬®¤г«п NETWARE:

- ®ЇаҐ¤Ґ«Ґ­ЁҐ ¤®бвгЇ­®бвЁ бҐаўЁб­ле б।бвў IPX;

- Ї®«г祭ЁҐ  ¤аҐб  бҐвЁ а Ў®зҐ© бв ­жЁЁ;

- ®вЄалвЁҐ, § ЄалвЁҐ Ё«Ё ўл¤Ґ«Ґ­ЁҐ Ј­Ґ§¤ ;

- Ї®бл«Є  Ё«Ё ЇаЁҐ¬ б®®ЎйҐ­Ёп;

- Є ­жҐ«Ёа®ў ­ЁҐ § Їа®б  ­  Ї®бл«Єг Ё«Ё ЇаЁҐ¬;

- ®бў®Ў®¦¤Ґ­ЁҐ Ё ў®§ўа в гЇа ў«Ґ­Ёп ¤а ©ўҐаг IPX.


Advanced NetWare 2.0 ॠ«Ё§гҐв Ў®«ҐҐ ўлб®ЄЁ© га®ўҐ­м
¬Ґ¦г§«®ўле Є®¬¬г­ЁЄ жЁ©, Є®в®ал© ­ §лў Ґвбп SPX (Sequenced Packet
Exchange Protocol - Џа®в®Є®« Ї®б«Ґ¤®ў вҐ«м­®Ј® Ї ЄҐв­®Ј® ®Ў¬Ґ­ ).
SPX ®б­®ў ­ ­  Їа®в®Є®«Ґ Sequenced Packet Protocol (SPP) дЁа¬л
Xerox.

џў«ппбм ­ ¤бва®©Є®© ­ ¤ бҐаўЁб­л¬Ё б।бвў ¬Ё IPX, SPX
®ЎҐбЇҐзЁў Ґв бЁб⥬㠣 а ­вЁа®ў ­­®© ¤®бв ўЄЁ Ї ЄҐв®ў ¤ ­­ле.
Џ ЄҐвл, Ї®«г祭ЁҐ Є®в®але ­Ґ Ї®¤вўҐа¦¤Ґ­® Ї®«гз вҐ«Ґ¬ ў § ¤ ­­л©
ЇҐаЁ®¤ ўаҐ¬Ґ­Ё,  ўв®¬ вЁзҐбЄЁ ЇҐаҐ¤ овбп Ї®ўв®а­®. Џ®б«Ґ
­Ґг¤ з­®Ј® § ўҐа襭Ёп бҐаЁЁ Ї®Їлв®Є ЇҐаҐ¤ зЁ ЇаҐ¤Ї®« Ј Ґвбп, зв®
бўп§м ­ аг襭 . SPX  ўв®¬ вЁзҐбЄЁ ўлЎЁа Ґв ᮮ⢥вб⢥­­го
гбв ўЄг ўаҐ¬Ґ­Ё Ё зЁб«® Ї®Їлв®Є ЇҐаҐ¤ зЁ ў § ўЁбЁ¬®бвЁ ®в
дЁ§ЁзҐбЄЁе е а ЄвҐаЁбвЁЄ бҐвҐў®Ј®  ЇЇ а в­®Ј® ®ЎҐбЇҐзҐ­Ёп.
‘«Ґ¤®ў вҐ«м­®, ЇаЁЄ« ¤­лҐ Їа®Ја ¬¬л, ЁбЇ®«м§гойЁҐ SPX, ­Ґ ®Ўп§ ­л
ўе®¤Ёвм ў Ї®¤а®Ў­®бвЁ ®в­®бЁвҐ«м­® Ј а ­вЁа®ў ­­®© бЁб⥬л
¤®бв ўЄЁ. Џ®бЄ®«мЄг SPX Ё¬ҐҐв Ў®«миЁ© а б室 Ї ¬пвЁ, 祬 IPX,
¬ ЄбЁ¬ «м­л© а §¬Ґа Ї ЄҐв  ­ҐбЄ®«мЄ® ¬Ґ­миҐ: 534 Ў ©в .

‚ ®в«ЁзЁҐ ®в Є ­ «м­ле Ё иЁа®Є®ўҐй вҐ«м­ле б®®ЎйҐ­Ё©,
ᮥ¤Ё­Ґ­ЁҐ SPX ЇҐаҐ¤ Ґв б®®ЎйҐ­Ёп §  ®¤Ё­ а § ¬Ґ¦¤г ¤ўг¬п
Є®­ЄаҐв­л¬Ё 㧫 ¬Ё. ‚® ўаҐ¬п гбв ­®ўЄЁ ᮥ¤Ё­Ґ­Ёп SPX ®¤Ё­ 㧥«
®ЇаҐ¤Ґ«пҐв бҐЎп ў Є зҐб⢥ ЇҐаҐ¤ взЁЄ ,   ўв®а®© ў Є зҐб⢥
ЇаЁҐ¬­ЁЄ . €б室­®Ґ ᮥ¤Ё­Ґ­ЁҐ пў«пҐвбп ®¤­®бв®а®­­Ё¬; ЇаЁҐ¬­ЁЄ
­Ґ ¬®¦Ґв ®вўҐз вм ­  Ї®«г祭­лҐ Ё¬ б®®ЎйҐ­Ёп. •®вп Ё ¬®¦­®
ᤥ« вм ᮥ¤Ё­Ґ­ЁҐ ¤ўгбв®а®­­Ё¬, ॠ«Ё§®ў вм ¤ ­­л© ¬Ґв®¤ ў ўЁ¤Ґ
г­ЁўҐаб «м­®© Ї®¤Їа®Ја ¬¬л б«®¦­®. ‘«Ґ¤®ў вҐ«м­®, ¤«п
¤ўгбв®а®­­Ёе ᮥ¤Ё­Ґ­Ё© SPX ў ¬ ЇаҐ¤®бв ў«повбп ¤ўҐ  «мвҐа­ вЁўл.
‚л ¬®¦ҐвҐ ®вЄалвм ¤«п ®Ўа в­®Ј® ­ Їа ў«Ґ­Ёп ®в¤Ґ«м­®Ґ ᮥ¤Ё­Ґ­ЁҐ;
нв®в бЇ®б®Ў а Ў®в Ґв ¤®бв в®з­® е®а®и®, ­® бўп§ ­ б
ЁбЇ®«м§®ў ­ЁҐ¬ ­ҐЄ®в®а®© ¤®Ї®«­ЁвҐ«м­®© Ї ¬пвЁ Ё ўаҐ¬Ґ­Ё
Їа®жҐбб®а . ‚в®а®© бЇ®б®Ў б®бв®Ёв ў ⮬, зв®Ўл а бᬮваҐвм
¤Ґ¬®­бва жЁ®­­лҐ Їа®Ја ¬¬л NSEND Ё NRECEIVE, ў Є®в®але Ї®Є § ­®,
Є Є ®аЈ ­Ё§®ў вм ॢҐабЁў­го бўп§м.

‚맮ўл Ї®¤Їа®Ја ¬¬ ­Ё¦­ҐЈ® га®ў­п Novell IPX Ё SPX
§ Є«оз овбп Їа®бв® ў б®Ї®бв ў«Ґ­ЁЁ § Їа®б  Ё Їа ЄвЁзҐбЄ®Ј®
б®ЎлвЁп, бўп§ ­­®Ј® б б®®ЎйҐ­ЁҐ¬. ” ЄвЁзҐбЄ®Ґ § ўҐа襭ЁҐ б®ЎлвЁп
­Ґ Їа®Ёб室Ёв ¤® вҐе Ї®а, Ї®Є  ­Ґ ЁбвҐзҐв ­Ґ®ЇаҐ¤Ґ«Ґ­­®Ґ
Є®«ЁзҐбвў® ўаҐ¬Ґ­Ё. NetWare вॡгҐв ®в¤Ґ«м­л© Ў«®Є гЇа ў«Ґ­Ёп
б®ЎлвЁҐ¬ (вЁЇ  <IPXECB>) ¤«п ®Ўа Ў®вЄЁ Є ¦¤®Ј® Ї®¤ўҐиҐ­­®Ј®
б®®ЎйҐ­Ёп. “бв ­®ў«Ґ­ЁҐ SPX-ᮥ¤Ё­Ґ­Ёп ¬Ґ¦¤г ¤ўг¬п бв ­жЁп¬Ё
вॡгҐв д ЄвЁзҐбЄЁ ¤ўге Ў«®Є®ў гЇа ў«Ґ­Ёп б®ЎлвЁҐ¬ ­  бв®а®­Ґ
ЇҐаҐ¤ взЁЄ  - ®¤Ё­ б«г¦Ёв ¤«п Ї®бл«ЄЁ § Їа®б , Ё ®¤Ё­ ¤«п ЇаЁҐ¬ 
Ї®¤вўҐа¦¤Ґ­Ёп ®в ЇаЁҐ¬­ЁЄ .

ЏаЁҐ¬­ЁЄ б®®ЎйҐ­Ё© SPX ¬®¦Ґв Ї®вॡ®ў вм, зв®Ўл ®¤­®ўаҐ¬Ґ­­®
Ўл«® ¤®бвгЇ­® ¤ ¦Ґ Ў®«м襥 зЁб«® Ў«®Є®ў гЇа ў«Ґ­Ёп б®ЎлвЁҐ¬.
ЏаҐ¤Ї®«®¦Ё¬, зв® ЇаЁҐ¬­ЁЄ ®¦Ё¤ Ґв Ї®«г祭ЁҐ 10 Ї ЄҐв®ў
Ё­д®а¬ жЁЁ. ЏаЁҐ¬­ЁЄ ¬®Ј ®ЎкпўЁвм ўбҐЈ® ®¤Ё­ Ў«®Є гЇа ў«Ґ­Ёп
б®ЎлвЁҐ¬. Ћ­ Ўг¤Ґв ЇаЁ­Ё¬ вм Є ¦¤л© Ї ЄҐв, ®Ўа Ў влў вм ҐЈ® ЇаЁ
Ї®«г祭ЁЁ Ё Ўлбва® ¤Ґ« вм Ґ¤Ё­б⢥­­л© <IPXECB> б­®ў  ¤®бвгЇ­л¬
¤«п ЇаЁҐ¬ . Ћ¤­ Є®, ЇаЁ в Є®¬ Ї®¤е®¤Ґ ®бв Ґвбп "®Є­®", ў вҐзҐ­ЁҐ
Є®в®а®Ј® ЇаЁе®¤пйЁ© Ї ЄҐв ¬®¦Ґв ­Ґ ­ ©вЁ ¤®бвгЇ­®Ј® <IPXECB>, зв®
ЇаЁўҐ¤Ґв Є Ї®вҐаҐ Ї ЄҐв . Ѓ®«ҐҐ ­ ¤Ґ¦­л© Ї®¤е®¤ б®бв®Ёв ў ⮬,
зв®Ўл ᤥ« вм ¤®бвгЇ­л¬Ё ¤ў  Ў«®Є  гЇа ў«Ґ­Ёп б®ЎлвЁҐ¬, зв®Ўл
Ј а ­вЁа®ў вм, зв® ®¤Ё­ Ё§ ­Ёе ўбҐЈ¤  Ј®в®ў, Ґб«Ё ўв®а®© ўаҐ¬Ґ­­®
§ ­пв. ‚ ­ҐЄ®в®але б«гз пе ¬®¦Ґв ®Є § вмбп ¦Ґ« вҐ«м­л¬ Ё¬Ґвм 10
¤®бвгЇ­ле Ў«®Є  гЇа ў«Ґ­Ёп б®ЎлвЁҐ¬; ⥬ б ¬л¬ ўбп ва ­§ ЄжЁп
¬®¦Ґв Ўлвм § ўҐа襭  ЎҐ§ ЇҐаҐЇ®¤зЁ­Ґ­Ёп гЇа ў«пойЁе Ў«®Є®ў ў
®в­®иҐ­ЁЁ SPX.

Џ®¤Їа®Ја ¬¬л SPX ў ¬®¤г«Ґ NETWARE гЇа®й ов ®Ўа Ў®вЄг в ЄЁе
бЁвг жЁ©, ®аЈ ­Ё§гп  ўв®¬ вЁзҐбЄЁ© Їг« Ў«®Є®ў гЇа ў«Ґ­Ёп
б®ЎлвЁҐ¬. Љ®Ј¤  ЇаЁЄ« ¤­ п Їа®Ја ¬¬  гбв ­ ў«Ёў Ґв ᮥ¤Ё­Ґ­ЁҐ
SPX, ®­  Їа®бв® § ¤ Ґв зЁб«® Ў«®Є®ў гЇа ў«Ґ­Ёп б®ЎлвЁҐ¬ Ё
¬ ЄбЁ¬ «м­л© а §¬Ґа Є ¦¤®Ј® Ї ЄҐв  ¤ ­­ле. „Ґ¬®­бва жЁ®­­ п
Їа®Ја ¬¬  NRECEIVE ЇаЁў®¤Ёв е®а®иЁ© ЇаЁ¬Ґа ЁбЇ®«м§®ў ­Ёп в ЄЁе
Їг«®ў,   в Є¦Ґ бўп§ ­­лҐ б ­Ё¬Ё Їа®жҐ¤гал Ё дг­ЄжЁЁ.

Њ®¤г«м NETWARE Ї®¤¤Ґа¦Ёў Ґв бҐаўЁб­лҐ б।бвў  SPX Є Є ­ 
­Ё¦­Ґ¬, в Є Ё ­  ўҐае­Ґ¬ га®ў­Ґ. € ®Їпвм, ¬л б®б।®в®зЁ¬ ­ иҐ
ў­Ё¬ ­ЁҐ ­  ¤®Єг¬Ґ­вЁа®ў ­ЁЁ Ї®¤Їа®Ја ¬¬ ўҐае­ҐЈ® га®ў­п,
Ї®бЄ®«мЄг ¤агЈЁҐ вॡгов ¤«п ®ЇЁб ­Ёп Ў®«миҐ д®­®ў®© Ё­д®а¬ жЁЁ,
祬 Ї®§ў®«пҐв ®ЎкҐ¬ ­ бв®п饣® ¤®Єг¬Ґ­в .

Њ®¤г«м NETWARE ®ЎҐбЇҐзЁў Ґв б«Ґ¤гойЁҐ б।бвў  ¤®бвгЇ  Є
SPX:

- ®ЇаҐ¤Ґ«Ґ­ЁҐ ¤®бвгЇ­®бвЁ бҐаўЁб­ле б।бвў SPX;

- гбв ­®ў«Ґ­ЁҐ Ё«Ё ®в¬Ґ­  ᮥ¤Ё­Ґ­Ёп SPX;

- Ї®бл«Є  Ё«Ё ®¦Ё¤ ­ЁҐ ЇаЁҐ¬  б®®ЎйҐ­Ёп;

- Є ­жҐ«Ёа®ў ­ЁҐ § Їа®б  ­  Ї®бл«Єг Ё«Ё ЇаЁҐ¬.

ЏаЁ¬Ґал
-------

Џ®бв ў«пҐ¬ п ў б®бв ўҐ Їа®¤гЄв  Їа®Ја ¬¬  MESEXAMP.PAS
¤Ґ¬®­бваЁагҐв ­ҐбЄ®«мЄ® ¬Ґв®¤®ў ЇҐаҐ¤ зЁ б®®ЎйҐ­Ё© ў «®Є «м­ле
бҐвпе NetWare Ё NetBIOS. ‚ ¤ ­­®¬ а §¤Ґ«Ґ ўў®¤пвбп ¬Ґв®¤л NetWare
IPX Ё SPX, ЁбЇ®«м§гҐ¬лҐ Їа®Ја ¬¬®©. ЏҐаҐ¤ ЁбЇ®«м§®ў ­ЁҐ¬ «оЎ®Ј®
Ё§ нвЁе ¬Ґв®¤®ў Їа®Ја ¬¬  ¤®«¦­  ®ЎҐбЇҐзЁвм ¤®бвгЇ­®бвм NetWare,
IPX Ё SPX.


procedure IPXSPXAvail(var IPXOK, SPXOK : Boolean);
var
Logged : Boolean;
Version : Word;
MaxConn : Word;
AvailConn : Word;
begin
IPXOK := false;
SPXOK := False;
if NetWareLoaded(Logged) then
if Logged then begin
IPXOK := IPXServicesAvail;
if IPXOK then
SPXOK := ServicesAvail(Version, MaxConn, AvailConn);
end;
end;


‘«Ґ¤гой п § ¤ з  ¤«п «оЎ®© ЇаЁЄ« ¤­®© Їа®Ја ¬¬л, а Ў®в о饩
б IPX Ё«Ё SPX, б®бв®Ёв ў ⮬, зв®Ўл ®ЇаҐ¤Ґ«Ёвм  ¤аҐб ЇаЁҐ¬­ЁЄ  ў
б®бв ў­®© бҐвЁ. ЏаЁ ЁбЇ®«м§®ў ­ЁЁ IPX б®®ЎйҐ­ЁҐ ¬®¦Ґв Ўлвм
Ї®б« ­® ўбҐ¬ 㧫 ¬ Їг⥬ ЁбЇ®«м§®ў ­Ёп бЇҐжЁ «м­®Ј® дЁ§ЁзҐбЄ®Ј®
 ¤аҐб  <AllNodes>. Џа®жҐ¤га  <GetInteretAddress> ¬®¦Ґв а Ў®в вм
Є Є ¤«п IPX, в Є Ё ¤«п SPX:

var
Receiver : IPXAddress;

GetInternetAddress(ReceiverConn, Receiver);


ReceiverConn нв® ­®¬Ґа ᮥ¤Ё­Ґ­Ёп ў NetWare (1..100). Ћ­
¬®¦Ґв Ўлвм ®ЇаҐ¤Ґ«Ґ­ Ё§ ॣЁбва жЁ®­­®Ј® Ё¬Ґ­Ё ЇаЁ Ї®¬®йЁ
<GetConnFromName>, Є Є Ї®Є § ­® ў ЇаЁ¬Ґа е ¤«п иЁа®Є®ўҐй вҐ«м­ле
Ё Є ­ «м­ле б®®ЎйҐ­Ё©.

ЏҐаҐ¤ взЁЄ Ё ЇаЁҐ¬­ЁЄ в Є¦Ґ ¤®«¦­л б®Ј« бўлў вм ­®¬Ґа
Ј­Ґ§¤ . Љ Є ®Ўб㦤 «®бм ўлиҐ, ®Ўлз­л© ¬Ґв®¤ §¤Ґбм б®бв®Ёв ў ⮬,
зв®Ўл ўлЎа вм Їа®Ё§ў®«м­л© ­®¬Ґа, Є®в®ал© ¬®¦Ґв Ўлвм
¬®¤ЁдЁжЁа®ў ­  ¤¬Ё­Ёбва в®а®¬ бҐвЁ:

const
IPXSocket : Word = $7001;

‘«Ґ¤гой п дг­ЄжЁп Ї®Є §лў Ґв, Є Є Ї®б« вм б®®ЎйҐ­ЁҐ IPX б
ЁбЇ®«м§®ў ­ЁҐ¬ Ј«®Ў «м­®Ј® ­®¬Ґа  Ј­Ґ§¤ .

function SendIPX(Receiver : IPXAddress;
MsgLen : Word;
var Msg) : Byte;
var
Status : Byte;
IEvent : IPXRec;
begin
{Џ®бл«Є  б®®ЎйҐ­Ёп}
Status := IPXSend(IEvent,Receiver,IPXSocket,False,MsgLen,Msg);
if Status <> 0 then bgin
{MsgLen б«ЁиЄ®¬ ўҐ«ЁЄ , Ё«Ё в Ў«Ёж  Ј­Ґ§¤ § Ї®«­Ґ­ }
SendIPX := Status;
Exit;
end;
{Ћ¦Ё¤ ­ЁҐ ®вЇа ўЄЁ б®®ЎйҐ­Ёп}
while not IPXEventComplete(IEvent, Status) do
{ЏаЁ гбЇҐи­®¬ § ўҐа襭ЁЁ Status Ўг¤Ґв а ўҐ­ ­г«о}
SendIPX := Status;
end;

„«Ё­  б®®ЎйҐ­Ёп ¬®¦Ґв ¤®бвЁЈ вм 546 Ў ©в®ў. ‚ ЇаЁ¬ҐаҐ
ЁбЇ®«м§гҐвбп ­ҐвЁЇЁа®ў ­­л© Ї а ¬Ґва, Ї®§ў®«пойЁ© ЇҐаҐбл« вм
«оЎ®© вЁЇ ¤ ­­ле. …б«Ё § ¤ ­­®Ґ Ј­Ґ§¤® ў нв®в ¬®¬Ґ­в ­Ґ пў«пҐвбп
㦥 ®вЄалвл¬, в® <IPXSend> ®вЄалў Ґв ҐЈ®. SendIPX ў®§ўа й Ґв Є®¤
бв вгб , гЄ §лў ойЁ© ў®§¬®¦­®бвм Ї®бл«ЄЁ б®®ЎйҐ­Ёп. ЏаЁ ў®§ўа вҐ
­Ґ­г«Ґў®Ј® Є®¤  ўл§лў ой п Їа®Ја ¬¬  ¬®¦Ґв ᮮ⢥вб⢥­­л¬
®Ўа §®¬ ўлЇ®«­Ёвм ®Ўа Ў®вЄг ®иЁЎЄЁ.

ЏаЁҐ¬­ЁЄ Ї®б«Ґ ®Ўа йҐ­Ёп Є Ј«®Ў «м­®¬г ­®¬Ґаг Ј­Ґ§¤  ¤®«¦Ґ­
ЁбЇ®«м§®ў вм б«Ґ¤гойго дг­ЄжЁо.

function ReceiveIPX(MaxLen : Word;
var Msg) : Byte;
var
Status : Byte;
IEvent : IPXRec;
begin
{Ћ¦Ё¤ ­ЁҐ б®®ЎйҐ­Ёп}
Status := IPXListen(IEvent,IPXSocket,False,MaxLen,Msg);
if Status <> 0 then bgin
{MaxLen б«ЁиЄ®¬ ўҐ«ЁЄ , Ё«Ё в Ў«Ёж  Ј­Ґ§¤ § Ї®«­Ґ­ }
ReceiveIPX := Status;
Exit;
end;
{Ћ¦Ё¤ ­ЁҐ ЇаЁЎлвЁп б®®ЎйҐ­Ёп}
while not IPXEventComplete(IEvent, Status) do
if KeyPressed then begin
{Џ®«м§®ў вҐ«о ­ ¤®Ґ«® ¦¤ вм}
ReceiveIPX := 2;
Exit;
end;
{ЏаЁ гбЇҐи­®¬ § ўҐа襭ЁЁ Status Ўг¤Ґв а ўҐ­ ­г«о}
ReceiveIPX := Status;
end;


Ћв¬ҐвЁ¬, зв® ReceiveIPX ­Ґ ў®§ўа й Ґв д ЄвЁзҐбЄго ¤«Ё­г
б®®ЎйҐ­Ёп. ‚¬Ґбв® ­ҐҐ Ї®«м§®ў вҐ«м ¤®«¦Ґ­ § ¤ вм ¬ ЄбЁ¬ «м­го
¤«Ё­г, Є®в®аго ¬®¦Ґв Ё¬Ґвм ЇҐаҐ¬Ґ­­ п Msg. IPX ў®§ўа й Ґв Є®¤
®иЁЎЄЁ, Ґб«Ё д ЄвЁзҐбЄ п ¤«Ё­  б®®ЎйҐ­Ёп ЇаҐўли Ґв MaxLen.
‚л§лў ой п Їа®Ја ¬¬  ¬®¦Ґв § вҐ¬ ўл§ў вм ReceiveIPX б­®ў , зв®Ўл
ЇаЁ­пвм ®бв «м­го з бвм б®®ЎйҐ­Ёп. ЏаЁ Ё§¬Ґ­по饩бп ¤«Ё­Ґ
б®®ЎйҐ­Ёп ЇаЁЄ« ¤ п Їа®Ја ¬¬  б ¬  ¤®«¦­  § Є®¤Ёа®ў вм ¤«Ё­г
б®®ЎйҐ­Ёп ў б®бв ўҐ б ¬®Ј® б®®ЎйҐ­Ёп.

„«п ReceiveIPX ў ¦­® Ё¬Ґвм ­ҐЄ®в®ал© ¬Ґе ­Ё§¬ ўл¤Ґа¦ЄЁ
ўаҐ¬Ґ­Ё ®¦Ё¤ ­Ёп ­  в®в б«гз ©, Ґб«Ё б®®ЎйҐ­ЁҐ ў®®ЎйҐ ­Ґ
Ї®бвгЇЁв. ‡¤Ґбм жЁЄ« ®¦Ё¤ ­Ёп ЇаЁҐ¬  ЇаҐаўҐвбп ЇаЁ ­ ¦ вЁЁ
Ї®«м§®ў вҐ«Ґ¬ «оЎ®© Є« ўЁиЁ;  «мвҐа­ вЁў­л© бЇ®б®Ў б®бв®Ёв ў ⮬,
зв®Ўл ўл¦¤ вм ­ҐЄ®в®ал© ®ЇаҐ¤Ґ«Ґ­­л© ЇҐаЁ®¤ ўаҐ¬Ґ­Ё,   § вҐ¬
ўл©вЁ Ё§ жЁЄ«  б ᮮ⢥вбвўгойЁ¬ Є®¤®¬ ®иЁЎЄЁ.

ЏҐаҐ¤ § ўҐа襭ЁҐ¬ ЇаЁЄ« ¤­®© Їа®Ја ¬¬л Ё ЇҐаҐ¤ взЁЄ, Ё
ЇаЁҐ¬­ЁЄ ¤®«¦­л § Єалвм Ј­Ґ§¤® Ї®б।бвў®¬ б«Ґ¤го饣® ўл§®ў :

IPXCloseSocket(IPXSocket);

‘®®ЎйҐ­Ёп SPX Ў®«ҐҐ ­ ¤Ґ¦­л, ­® Ё Ў®«ҐҐ б«®¦­л ¤«п
ЁбЇ®«м§®ў ­Ёп. Љ Є Ё ў б«гз Ґ Є ­ «м­ле б®®ЎйҐ­Ё©, ЇҐаҐ¤ взЁЄ Ё
ЇаЁҐ¬­ЁЄ ¤® ®Ў¬Ґ­  б®®ЎйҐ­Ёп¬Ё ¤®«¦­л гбв ­®ўЁвм ¬Ґ¦¤г б®Ў®©
ᮥ¤Ё­Ґ­ЁҐ. ЏҐаҐ¤ ой п Їа®Ја ¬¬  гбв ­ ў«Ёў Ґв бў®о бв®а®­г
ᮥ¤Ё­Ґ­Ёп б«Ґ¤гойЁ¬ ®Ўа §®¬:

const
SPXSocket : Word = $7000;

var
SEvent : SPXRec;

function SPXSendConn(Receiver : IPXAddress) : Byte;
var
Status : Byte;
begin
Status := SPXEstablishConn(SEvent,Receiver,SPXSocket,FALSE,0,2,nil);
if Status <> 0 then bgin
{’ Ў«Ёж  ᮥ¤Ё­Ґ­Ё© Ё«Ё Ј­Ґ§¤ § Ї®«­Ґ­ }
SPXSendConn := Status;
Exit;
end;
{Ћ¦Ё¤ ­ЁҐ Ї®¤вўҐа¦¤Ґ­ЁҐ ᮥ¤Ё­Ґ­Ёп}
while not SPXEventComplete(SEvent, Status) do
if KeyPressed then begin
{Џ®«м§®ў вҐ«о ­ ¤®Ґ«® ¦¤ вм}
SPXSendConn := 2;
Exit;
end;
{ЏаЁ гбЇҐи­®¬ § ўҐа襭ЁЁ Status Ўг¤Ґв а ўҐ­ ­г«о}
SPXSendConn := Status;
end;


Ћв¬ҐвЁ¬, зв® ЇҐаҐ¬Ґ­­ п SEvent еа ­Ёвбп ў­Ґ SPXSendConn. ќв®
бгйҐб⢥­­®, Ї®бЄ®«мЄг Ї®¤Їа®Ја ¬¬ , Ї®бл« ой п б®®ЎйҐ­Ёп, ¤®«¦­ 
®Ўа й вмбп Є нв®© ¦Ґ б ¬®© ЇҐаҐ¬Ґ­­®©. Љ Є Ё ў ¤агЈЁе ЇЁ¬Ґа е,
SPXSendConn ЁбЇ®«м§гҐв Їа®бв®© бЇ®б®Ў ®ЇаҐ¤Ґ«Ґ­Ёп в®Ј®, зв®
ᮥ¤Ё­Ґ­ЁҐ гбв ­®ўЁвм ­Ґ г¤ «®бм: Ї®ЇлвЄЁ Їа®¤®«¦ овбп ¤® вҐе
Ї®а, Ї®Є  «ЁЎ® ᮥ¤Ё­Ґ­ЁҐ ­Ґ гбв ­®ўЁвбп, «ЁЎ® ­Ґ ЁбвҐзҐв
ўл¤Ґа¦Є  ўаҐ¬Ґ­Ё, «ЁЎ® Ї®Є  Ї®«м§®ў вҐ«м ­Ґ ­ ¦¬Ґв «оЎго Є« ўЁиг.
‚ Є®­жҐ Є®­ж®ў SPX Ї® ЁбвҐзҐ­ЁЁ ўл¤Ґа¦ЄЁ ўаҐ¬Ґ­Ё ў®§ўа вЁв
ᮮ⢥вб⢥­­л© Є®¤ ®иЁЎЄЁ, ­® ­  нв® ¬®¦Ґв г©вЁ Ў®«миҐ ўаҐ¬Ґ­Ё,
祬 б®Ј« бҐ­ ¦¤ вм Ї®«м§®ў вҐ«м. SPXSendConn гбв ­ ў«Ёў Ґв
ᮥ¤Ё­Ґ­ЁҐ SPX, ЇаЁ Є®в®а®¬ ЇҐаҐ¤ взЁЄ ¬®¦Ґв Ї®бл« вм, ­® ­Ґ
¬®¦Ґв ЇаЁ­Ё¬ вм б®®ЎйҐ­Ёп.

ЏаЁҐ¬­ЁЄ гбв ­ ў«Ёў Ґв ­  бў®Ґ© бв®а®­Ґ ᮥ¤Ё­Ґ­ЁҐ ЇаЁ
Ї®¬®йЁ б«Ґ¤го饩 Ї®¤Їа®Ја ¬¬л:

const
SPXSocket : Word = $7000;

var
SEvent : SPXRec;

function SPXReceiveConn(MaxLen : Word) : Byte;
var
Status : Byte;
begin
Status := SPXListenForConn(SEvent,SPXSocket,false,MaxLen,2,nil);
if Status <> 0 then bgin
{’ Ў«Ёж  ᮥ¤Ё­Ґ­Ё© Ё«Ё Ј­Ґ§¤ § Ї®«­Ґ­ }
SPXReceiveConn := Status;
Exit;
end;
{Ћ¦Ё¤ ­ЁҐ Ї®¤вўҐа¦¤Ґ­ЁҐ ᮥ¤Ё­Ґ­Ёп}
while not SPXEventComplete(SEvent, Status) do
if KeyPressed then begin
{Џ®«м§®ў вҐ«о ­ ¤®Ґ«® ¦¤ вм}
SPXReceiveConn := 2;
Exit;
end;
{ЏаЁ гбЇҐи­®¬ § ўҐа襭ЁЁ Status Ўг¤Ґв а ўҐ­ ­г«о}
SPXReceiveConn := Status;
end;


‚맮ў <SPXListenForConn> ўл¤Ґ«пҐв ў "ЄгзҐ" ¤ў  ЎгдҐа 
а §¬Ґа  MaxLen,   в Є¦Ґ Ў«®ЄЁ гЇа ў«Ґ­Ёп б®ЎлвЁп¬Ё, ­Ґ®Ўе®¤Ё¬лҐ
¤«п ®¦Ё¤ ­Ёп ЇаЁҐ¬  Ї®бвгЇ ойЁе б®®ЎйҐ­Ё©. Њ ЄбЁ¬ «м­л© а §¬Ґа
б®®ЎйҐ­Ёп SPX б®бв ў«пҐв 534 Ў ©в®ў. ‚ ®бв «м­®¬ нв  Ї®¤Їа®Ја ¬¬ 
а Ў®в Ґв ў® ¬­®Ј®¬  ­ «®ЈЁз­® SPXSendConn.

—в®Ўл Ї®§ў®«Ёвм ­ҐЇ®«­го бЁ­еа®­Ё§ жЁо ¬Ґ¦¤г ЇҐаҐ¤ взЁЄ®¬ Ё
ЇаЁҐ¬­ЁЄ®¬, ¬®¦Ґв ®Є § вмбп ­Ґ®Ўе®¤Ё¬л¬ ўл§лў вм SPXSendConn Ё
SPXListenConn Ё§ жЁЄ«®ў. Џ®б«Ґ в®Ј®, Є Є ᮥ¤Ё­Ґ­ЁҐ Ўл«®
гбв ­®ў«Ґ­®, ЇҐаҐ¤ взЁЄ Ї®бл« Ґв б®®ЎйҐ­ЁҐ вЁЇ :


function SendSPX(DataType : Byte;
MsgLen : Word;
var Msg) : Byte;
var
Status : Byte;
begin
SPXSend(SEvent, False, DataType, MsgLen, Msg);
{Ћ¦Ё¤ ­ЁҐ Ї®¤вўҐа¦¤Ґ­ЁҐ ЇаЁҐ¬  б®®ЎйҐ­Ёп}
while not SPXEventComplete(SEvent, Status) do
if KeyPressed then begin
{Џ®«м§®ў вҐ«о ­ ¤®Ґ«® ¦¤ вм}
SendSPX := 2;
Exit;
end;
{ЏаЁ гбЇҐи­®¬ § ўҐа襭ЁЁ Status Ўг¤Ґв а ўҐ­ ­г«о}
SendSPX := Status;
end;

•®вп нв  Ї®¤Їа®Ја ¬¬  ў® ¬­®Ј®¬ ­ Ї®¬Ё­ Ґв ᮮ⢥вбвўгойго
Ї®¤Їа®Ја ¬¬г IPX, бгйҐбвўгҐв ў ¦­®Ґ а §«ЁзЁҐ. Љ®Ј¤  Ї®¤Їа®Ја ¬¬ 
IPX ў®§ўа й Ґв ­г«Ґў®© १г«мв в, нв® ®§­ з Ґв, зв® б®®ЎйҐ­ЁҐ
Ўл«® Ї®б« ­® гбЇҐи­®. Ќг«Ґў®© १г«мв в Ї®¤Їа®Ја ¬¬л SPX
®§­ з Ґв, зв® б®®ЎйҐ­ЁҐ Ўл«® гбЇҐи­® ЇаЁ­пв®. ќв® бўп§ ­® б®
бў®©бвў ¬Ё Ј а ­вЁа®ў ­­®© ¤®бв ўЄЁ, Є®в®ал¬Ё ®Ў« ¤ Ґв SPX.

’ Є¦Ґ ®в¬ҐвЁ¬, зв® ўл§лў ой п Їа®Ја ¬¬  ¬®¦Ґв § ¤ вм ¤«п
б®®ЎйҐ­Ёп вЁЇ ¤ ­­ле (DataType). ќв®в Ў ©в Ї®§ў®«пҐв ЇаЁҐ¬­ЁЄг
㢥७­® Є« ббЁдЁжЁа®ў вм Ї®бвгЇ ойЁҐ б®®ЎйҐ­Ёп а §­ле вЁЇ®ў, ­Ґ
®Ўа й пбм ¤«п нв®Ј® Є ᮤҐа¦Ё¬®¬г б ¬Ёе б®®ЎйҐ­Ё©.

Џ®¤Їа®Ја ¬¬  ¤«п ЇаЁҐ¬­ЁЄ  ­ҐбЄ®«мЄ® ®в«Ёз Ґвбп ®в вҐе
Ї®¤Їа®Ја ¬¬, зв® Ўл«Ё а бᬮваҐ­л ўлиҐ.

function ReceiveSPX(var DataType : Byte;
MaxLen : Word;
var Msg) : Byte;
var
Status : Byte;
PoolIndex : Byte;
P : Pointer;
begin
{Ћ¦Ё¤ ­ЁҐ ЇаЁҐ¬  б®®ЎйҐ­Ёп}
while not SPXListenPooled(SEvent,Status,PoolIndex,DataType,P) do
if KeyPressed then begin
{Џ®«м§®ў вҐ«о ­ ¤®Ґ«® ¦¤ вм}
ReceiveSPX := 2;
Exit;
end;
if Status = 0 then
{‘®®ЎйҐ­ЁҐ ЇаЁ­пв® Ё ў®§ўа й Ґвбп ў ўл§лў ойго Їа®Ја ¬¬г}
Move(P^, Msg, MaxLen);
{ЏҐаҐ§ ЇгбЄ Ў«®Є  гЇа ў«Ґ­Ёп б®ЎлвЁҐ¬ ­  ®¦Ё¤ ­ЁҐ ЇаЁҐ¬ }
SPXReplenishPool(SEvent, PoolIndex);
{ЏаЁ гбЇҐи­®¬ § ўҐа襭ЁЁ Status Ўг¤Ґв а ўҐ­ ­г«о}
ReceiveSPX := Status;
end;


ReceiveSPX ¦¤Ґв, Ї®Є  ­Ґ Ї®бвгЇЁв б®®ЎйҐ­ЁҐ Ё«Ё ­Ґ Ўг¤Ґв
­ ¦ в  Є« ўЁи . …б«Ё ЇаЁ­пв® б®®ЎйҐ­ЁҐ, SPX  ўв®¬ вЁзҐбЄЁ
Ї®¤вўҐа¦¤ Ґв ҐЈ® ЇаЁҐ¬. Њ®¤г«м NetWare ўаҐ¬Ґ­­® ЎгдҐаЁ§гҐв
б®®ЎйҐ­ЁҐ ў "ЄгзҐ",   ReceiveSPX Є®ЇЁагҐв ҐЈ® ў ЇҐаҐ¬Ґ­­го
Їа®Ја ¬¬л. ‡ вҐ¬ ®­  ¤®Ў ў«пҐв Ў«®Є гЇа ў«Ґ­Ёп б®ЎлвЁҐ¬,
ЁбЇ®«м§®ў ­­л© ¤«п ЇаЁҐ¬  б®®ЎйҐ­Ёп, ў Їг« Ў«®Є®ў, ¤®бвгЇ­ле ¤«п
®¦Ё¤ ­Ёп ЇаЁҐ¬ .

ЏаҐ¦¤Ґ 祬 ЇаЁЄ« ¤­ п Їа®Ја ¬¬  § ўҐаиЁвбп, ¤«п ЇҐаҐ¤ взЁЄ 
Ё ЇаЁҐ¬­ЁЄ  ў ¦­® а §®аў вм ᮥ¤Ё­Ґ­ЁҐ. Љ ¦¤л© Ёе ­Ёе ¬®¦Ґв ¤«п
нв®Ј® ўлЇ®«­Ёвм б«Ґ¤гойЁ© ўл§®ў:

SPXTerminateConn(SEvent);

ЏаЁ Їа®Ја ¬¬Ёа®ў ­ЁЁ б ЁбЇ®«м§®ў ­ЁҐ¬ SPX Їа®Ја ¬¬Ёбвг в Є¦Ґ
¤®бвгЇ­л ®ЇжЁЁ, в ЄЁҐ Є Є ЇҐаҐ¤ з  б®®ЎйҐ­Ё© Ї® ЇаҐалў ­Ёп¬ Ё
¤ўг­ Їа ў«Ґ­­лҐ ᮥ¤Ё­Ґ­Ёп. Ѓ®«ҐҐ Ї®¤а®Ў­® ®­Ё Ї®Є § ­л ў
¤Ґ¬®­бва жЁ®­­ле Їа®Ја ¬¬ е Ё ў ®б⠢襩бп з бвЁ ¤ ­­®Ј® а §¤Ґ« .

Љ®­бв ­вл
---------

AllNodes : PhysicalNodeAddress = ($FF, $FF, $FF, $FF, $FF, $FF);

Ѓг¤гзЁ ЇҐаҐ¤ ­­л¬ ў Ї®¤Їа®Ја ¬¬г ЇҐаҐ¤ зЁ SPX ў Є зҐб⢥
 ¤аҐб  㧫 , нв® §­ зҐ­ЁҐ гЄ §лў Ґв ­  в®, зв® б®®ЎйҐ­ЁҐ ¤®«¦­®
Ўлвм Ї®б« ­® ўбҐ¬ 㧫 ¬. Novell ЇаҐ¤гЇаҐ¦¤ Ґв, зв® ­Ґ ўбҐ
Є®­дЁЈга жЁЁ  ЇЇ а в­®Ј® ®ЎҐбЇҐзҐ­Ёп Ї®¤¤Ґа¦Ёў ов нв®в
бЇҐжЁ «м­л©  ¤аҐб. „ ¦Ґ Ґб«Ё ®­ Ї®¤¤Ґа¦Ёў Ґвбп, д ЄвЁзҐбЄ Ї®«гз в
б®®ЎйҐ­ЁҐ в®«мЄ® ⥠㧫л, Є®в®алҐ ®¦Ё¤ ов ЇаЁҐ¬  б®®ЎйҐ­Ёп зҐаҐ§
§ ¤ ­­®Ґ Ј­Ґ§¤®. Ђ¤аҐб ­ §­ зҐ­Ёп <AllNodes> ¤«п б®®ЎйҐ­Ё© SPX ­Ґ
а §аҐиҐ­.

MaxECBPool = 32;

Њ ЄбЁ¬ «м­®Ґ зЁб«® Ў«®Є®ў гЇа ў«Ґ­Ёп б®ЎлвЁҐ¬ ¤«п ¤ ­­®Ј®
ᮥ¤Ё­Ґ­Ёп SPX.

PoolSocketLongevity : Boolean = False;
Соседние файлы в папке B-Tree Filer