Локальные сети персональных компьютеров. Работа с сервером Novell NetWare


Проверка присутствия сетевой оболочки - часть 2


extern "C" int GetNetWareShellVersion(char *,char *, char *);

void main(void) {

char MajorVersion=0; char MinorVersion=0; char Revision=0;

asm push si

GetNetWareShellVersion(&MajorVersion, &MinorVersion, &Revision);

asm pop si

if(MajorVersion == 0) { printf("\nОболочка NetWare не загружена\n"); return; }

printf("\nВерсия оболочки NetWare: %d.%d.%d\n",MajorVersion, MinorVersion, Revision); }

Приведенная программа составлена на языке программирования С++, поэтому внешняя функция GetNetWareShellVersion() должна быть описана как внешняя функция, использующая соглашения об именах и передаче параметров в стандарте С:

extern "C" int GetNetWareShellVersion(char *,char *, char *);

Если бы программа была составлена на языке С, можно было бы использовать описание этой функции, приведенное в одном из include-файлов библиотеки Netware C Interface. Для включения всех include-файлов библиотеки Netware C Interface вы должны добавить в вашу программу следующую строку:

#include <nit.h>

Для программ, составленных на языке С++, вам придется создавать собственные include-файлы на базе поставляемых вместе с библиотекой Netware C Interface.

Если у вас нет библиотеки Netware C Interface, вы можете узнать номер версии, вызвав непосредственно функцию 0xEA01 прерывания INT21h.

Перед вызовом функции вам нужно соответствующим образом загрузить регистры:

На входе: AX = EA01h.
ES:DI = Указатель на буфер размером 40 байт, в который будет записано текстовое описание среды рабочей станции. Это описание состоит из четырех строк:

- название операционной системы;

- версия операционной системы;

- модель компьютера;

- фирма-производитель компьютера.

Последняя текстовая строка в буфере закрыта двумя двоичными нулями.

На выходе: BH = Верхний (major) номер версии или 0, если сетевая оболочка не загружена или ее версия меньше 2.1.
BL = Нижний (minor) номер версии.
CL = Номер изменения (revision).

Приведем вариант предыдущей программы, не использующий библиотеку NetWare C Interface (листинг 2).


Начало  Назад  Вперед