БИБЛИОТЕКА СИСТЕМНОГО ПРОГРАММИСТА
8. Приложение 4. РАБОТА С IPX, SPX И NETBIOS
В СРЕДЕ MS WINDOWS
8.1. Работа в среде Microsoft Windows версии 3.1
8.2. Работа в среде Microsoft Windows for Workgroups версии 3.1
Создание программ, специально предназначенных для работы в среде
Microsoft Windows, не является предметом обсуждения в данной книге.
Однако мы сделаем несколько замечаний относительно использования
протоколов IPX, SPX и NETBIOS в программах, работающих в среде
Microsoft Windows версии 3.1 и Microsoft Windows for Workgroups
версии 3.1.
Все резидентные программы, имеющие отношение к сетевой оболочке
Novell NetWare, необходимо загружать до запуска Windows. Это относится
и к эмулятору протокола NETBIOS. Если вы запустите эти программы
из виртуальной машины MS-DOS, работающей в среде WIndows, рано
или поздно произойдет аварийное завершение Windows.
Если ваша программа работает в среде MS-DOS с протоколами IPX,
SPX или NETBIOS, она без всяких изменений будет работать и на
виртуальной машине Windows. Вам только надо проследить, чтобы
все резидентные программы и эмулятор NETBIOS загружались до запуска
Windows.
Если же вы желаете создать полноценное приложение для Windows,
работающее с сетевыми протоколами, вам следует иметь в виду, что
для всех этих протоколов необходимо указывать адреса управляющих
блоков и буферов, расположенные в первом мегабайте основной оперативной
памяти. Кроме того, из приложений Windows, работающих в защищенном
режиме, вы не можете непосредственно вызывать драйвер IPX/SPX
или прерывание NETBIOS, так как эти интерфейсы рассчитаны на вызов
из реального режима.
Вы можете выйти из такого затруднительного положения, если воспользуетесь
интерфейсом с защищенным режимом DPMI (DOS Protected Mode Interface),
описанным нами в томе "Библиотеки системного программиста",
по-священном использованию защищенного режима.
В рамках интерфейса DPMI есть функции, позволяющие из программы,
работающей в защищенном режиме, вызывать прерывания или функции,
предназначенные для работы в реальном режиме. Кроме того, в API
Windows есть функции, с помощью которых вы можете заказать для
программы защищенного режима буферы, расположенные в первом мегабайте
основной оперативной памяти.
Замечания, сделанные выше, относятся и к Microsoft Windows for
Workgroups версии 3.1. Однако эта операционная система может и
не поддерживать протоколы IPX/SPX. С помощью приложения Control
Panel вы можете подключить или отключить поддержку сети Novell
NetWare и протоколов IPX/SPX.
Если поддержка Novell NetWare не используется, вам доступен протокол
NETBIOS, который является "родным" протоколом для Windows
for Workgroups.
Мы проверили работу NETBIOS через интерфейс прерывания INT 2Ah
при работе в виртуальной машине MS-DOS. Сразу после загрузки сетевых
драйверов Windows for Workgroups интерфейс NETBIOS недоступен.
Однако в среде виртуальной машины MS-DOS этот интерфейс появляется.
Приведем два фрагмента системы "клиент-сервер", проверенной
нами при работе в Windows for Workgroups. Вы сможете найти полные
исходные тексты на дискете, которая продается вместе с книгой
(эти исходные тексты почти полностью повторяют тексты системы
"клиент-сервер", работающей с датаграммами).
Первый фрагмент проверяет присутствие интерфейса NETBIOS:
// Проверяем наличие интерфейса NETBIOS
regs.h.ah = 0;
int86(0x2a, ®s, ®s);
errno = 0;
if(regs.h.ah == 0) {
errno=0xff;
}
Второй фрагмент предназначен для вызова NETBIOS через прерывание
INT 2Ah:
// Функция для вызова NETBIOS
void NetBios(void) {
sregs.es = FP_SEG(&ncb);
regs.x.bx = FP_OFF(&ncb);
regs.h.ah = 0x4;
regs.h.al = 0x1;
int86x(0x2a, ®s, ®s, &sregs);
}
|