Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:B-Tree Filer / BTF-9
.TXT 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 Ї®§ў®«пов ў ¬
ЇЁб вм Ў §л ¤ ле, Ўлбва® Ё ¤Ґ¦® а Ў®в ойЁҐ Їа ЄвЁзҐбЄЁ ў
«оЎ®© бҐвҐў®© б।Ґ. Ћ¤ Є®, бгйҐбвўгов Ё ҐйҐ ў®Їа®бл, Є®в®алҐ
㦮 гзЁвлў вм ¤«п в®Ј®, зв®Ўл ЇЁб вм в Єго ЇаЁЄ« ¤го
Їа®Ја ¬¬г, Є®в®а п ¤Ґ©бвўЁвҐ«м® ЁбЇ®«м§®ў « ЇаҐЁ¬гйҐбвў бҐвЁ.
‚®-ЇҐаўле, ЇаЁЄ« ¤ п Їа®Ја ¬¬ ¤®«¦ гЎҐ¤Ёвмбп, зв® ®
¤Ґ©бвўЁвҐ«м® Ё¬ҐҐв ¤®бвгЇ Є ¦Ґ« Ґ¬®© бҐвЁ. ЌҐ®Ўе®¤Ё¬® § ЇЁа вм Ё
®вЇЁа вм а §¤Ґ«пҐ¬лҐ д ©«л. ’ॡгҐвбп гЇа ў«пвм ЇҐз вмо ®взҐв®ў.
Ђ Їап¬ п бўп§м ¬Ґ¦¤г а Ў®зЁ¬Ё бв жЁп¬Ё ўў®¤Ёв ®ўго бдҐаг
дгЄжЁ® «м®Ј® § зҐЁп Їа®Ја ¬¬, ®вЄалў п бдҐаг "ЈагЇЇ®ў®Ј®
Їа®Ја ¬¬®Ј® ®ЎҐбЇҐзҐЁп".
‘ гзҐв®¬ ўбҐЈ® нв®Ј® ¬л ᮧ¤ «Ё ваЁ ¤®Ї®«Ёвм«мле ¬®йле
¬®¤г«п ¤«п ¬®Ј®Ї®«м§®ў ⥫мбЄ®© ўҐабЁЁ 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;