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);
}
|