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).