Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Локальные Сети    >>    nettst14
   
 
 NETTEST 1.4 - Тест сетевых сред  Юрий Василенко 19.03.1994

Модуль NetTest. Определяет присутствие сетевой среды



3k 
 

From: Yury Y. Vasilenko <postmaster@igilik.semsk.su> Organization: Firm Quest (private venture). Site - Kazakhstan (xUSSR), Semipalatinsk. Пишет: gpb@class.isrir.msk.su (Павел) >>> под Windows определение Share работает некорректно. Прерывание всегда >>>возвращает Share detect, независимо от действительного состояния. >>>Для грамотной работы этой функции под Windows необходимо открыть два раза один >>>файл, и в случае возникновения ошибки - Share есть. >> >>Ну что же, дописана функцию и под винды в соответствии с предложением Павла. >>Но все это как-то странно выглядит, согласитесь. Может быть, кто-то знает >>более "мягкую" методу определения установки SHARE в памяти для работы по >>Windows, чем открытие tmp-файла дважды? > >Я решил покопать литературу по этому вопросу. И вот нашел в журнале Borland >Language Express, выпуск 1, 1992г. > >Идея такая: > >function IsShare : boolean; > { true, если Share загружена } >var > ShareNotInst : byte; > f : file; >begin > assign(f,'delete.me'); > rewrite(f); > ShareNotInst:=1; > asm > mov bx, FileRec(f).Handle > mov cx, $0000 > mov dx, $0000 > mov si, $0000 > mov di, $0001 > mov ax, $5C00 > int $21 > jnc @@NoError > dec ShareNotInst > @@NoError > end; > IsShare:= ShareNotInst=0; > close(f); > erase(f); >end; > >Несколько слов о этой функции: используется мультиплексорное прерывание, >которое устанавливает флаг: С=1, если файл заблокирован и C=0 если нет. Более >"мягкого" метода не знаю. > >>Хочу также сообщит, что процедура определения сетевого драйва может >>(при мелкой переделки) попутно опредедить и наличие CDROM-устройства (но это >>уже не сети :-)) > >Ну и что. Модуль можно и переименовать. =:) > >Кстати о Windows: могу привести пример как определить, что программа запущена >из под Окон. > Все тот же, > Павел Нет, однако! Живут же люди! А у нас [censored] с маком - даже МИР ПК не найти :-)), не то что серьезные издания ОК! Спасибо, прямо вот так и попользуем :-)) Насчет определения Windows - cие уже добавлено. Я сейчас "рожаю" определение наличия протоколов ipx-spx (точнее, spx) по Б.Нансу - кое-что надо отсмотреть-вспомнить-отладить, ибо вызвать функцию по ее точке входа Паскаль не допускает (6.0 - про 7.0 не знаю, он ко мне еще едет), а Ассемблер мы все (это моя точка зрения) юзаем от случая к случаю => надо бы кое-что вспомнить, уточнить. После этого будет интересовать и тестирование на наличие IP/TCP-протокола, естественно. Итак, Более свежий вариант модуля NetTest. (определяет присутствие сетевой среды) Буду весьма признателен за отзывы и пожелания. -- Yury Y. Vasilenko <postmaster@igilik.semsk.su>