unsigned error; unsigned spx_ver; unsigned
Frolov, 1993 // ===================================================
#include <stdio.h> #include <stdlib.h> #include "ipx.h"
void main(void) {
// Точка входа в IPX/SPX API, переменная находится // в файле ipxdrv.asm и инициализируется функцией ipx_init().
extern far char *ipxspx_drv_entry;
// Структура для вызова API IPX
struct IPXSPX_REGS iregs;
unsigned error; unsigned spx_ver; unsigned spx_max_connections, spx_avail_connections;
printf("\n*Детектор IPX/SPX*, (C) Фролов А., 1993\n\n");
// Проверяем наличие драйвера IPX и определяем // адрес точки входа его API
if(ipx_init() == 0xff) printf("IPX загружен! "); else { printf("IPX не загружен!\n"); exit(-1); } printf("Точка входа в IPX API - %Fp\n",ipxspx_drv_entry);
// Проверяем доступность протокола SPX
error = NO_ERRORS;
// Вызываем функцию проверки доступности SPX // Здесь мы вызываем API драйвера IPX/SPX
iregs.bx = SPX_CMD_INSTALL_CHECK; iregs.ax = 0; ipxspx_entry( (void far *)&iregs );
if(iregs.ax == 0x00) error = ERR_NO_SPX; if(iregs.ax != 0xff) error = UNKNOWN_ERROR;
if(error != NO_ERRORS) { printf("SPX не загружен!\n"); exit(-1); }
// Запоминаем параметры IPX/SPX
spx_ver = iregs.bx; spx_max_connections = iregs.cx; spx_avail_connections = iregs.dx;
printf("SPX загружен! "); printf("Версия SPX: %d.%d\n", (spx_ver>>8) & 0xff, spx_ver & 0xff); printf("Всего соединений: %d, ", spx_max_connections); printf("из них доступно: %d\n", spx_avail_connections);
exit(0); }
Далее расположен исходный текст модуля инициализации IPX (листинг 2).
В этом модуле находится функция ipxspx_entry(), необходимая для вызова драйвера IPX/SPX. Ее имя начинается с символа "_", что необходимо для выполнения соглашения об именах в языке Си.
Здесь же имеется функция ipx_init(), которая проверяет наличие драйвера в системе, получает адрес API драйвера и сохраняет его в области памяти _ipxspx_drv_entry.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий