Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

Разработка приложений для NetWare

Средства разработки, структура и правила написания NLM-модулей

Основным средством разработки NLM-модулей, загружаемых на файловом сервере, является компилятор Novell/Watcom C Network Compiler/386. Это связано с тем, что только этот С-компилятор имеет в своём составе редактор NLMLINK, позволяющий компоновать NLM-модули.

Следует отметить, что компоновщик WLINK, входящий в состав компилятора Novell/Watcom Network C for DOS (средство разработки приложений для DOS-рабочей станции), также позволяет создавать NLM-модули.

Для разработки NLM-модуля необходимо выполнить следующие действия:

  1. Разработать тексты С-программ. Это обычные программы на языке С, где используются обращения к службам NetWare (примитивы NetWare для NLM-модулей).
  2. Разработать make-файл (рисунок 4.1).
  3. Запустить утилиту WMAKE для создания NLM-модуля.
WMAKE  -f  make-файл  имя.nlm

# Описание переменных make-файла, используемых при

# задании параметров программ

переменная=значение

переменная=значение

.......

# Определение имени компилятора

.C.OBJ:

 wcl386   параметры

# Описание состава obj-файлов

имя.obj:  имя.с  имя.с  ......  имя.h

имя.obj:  имя.с  имя.с  ......  имя.h

......

# Описание состава NLM-модуля

имя.nlm: имя.obj имя.obj ..... файл_определений.def

# Описание имени компоновщика

nlmlink файл_определений

Рис. 4.1. Описание make-файла, используемого при создании NLM-модуля

В make-файле описываются имена компилятора и компоновщика, а также состав каждого obj-файла и nlm-файла. Если С-файл был изменён, то после запуска утилиты WMAKE выполняется компиляция этого файла и перекомпоновка obj- и nlm- файла.

Файл определений, имя которого указывается в make-файле, имеет расширение DEF и содержит информацию для компоновщика. В таблице 4.1 приведены ключевые слова, используемые в файле определений.

Таблица 4.1. Ключевые слова файла определений
Ключевое словоОписание
DESCRIPTORСтрока до 127 символов, заключённая в двойные кавычки. Эта строка будет отображаться на консоли при выполнении команды файлового сервера MODULES.
INPUTСписок модулей и файлов для компоновки. Может содержать имена требуемых obj-файлов и файлов со списками obj-файлов. Файл со списком обозначается как @имя_файла. Каждая строка этого файла должна начинаться с пробела. В этом списке должен быть указан путь к файлу PRELUDE.OBJ. Модуль PRELUDE устанавливает среду NLM-программы с помощью
распределения и инициализации внутренних структур данных,
создания экрана для использования его NLM-программой,
разборки параметров командной строки для передачи их в процедуру main() как аргументов вида argc и argv,
старта новой нити для выполнения процедуры main().
Пример:
INPUT NW3NLM E:\WC386\PRELUDE @E:\WC386\A1.MOD
OUTPUTИмя NLM-модуля (без расширения).
IMPORTСписок функций, доступных в других NLM-модулях. Может содержать имена функций и файлов со списками функций. Файл со списком обозначается как @имя_файла. Каждая строка файла должна начинаться с пробела. Перед загрузкой этого NLM-модуля должны быть загружены NLM-модули, содержащие функции, которые перечислены в списке IMPORT.
Таким образом, NLM-модули могут выступать в качестве динамических библиотек. Они загружаются один раз, и все NLM-модули, запускаемые в дальнейшем, могут использовать функции, которые описаны в списке EXPORT (см. ниже) этих модулей-библиотек.
В списке IMPORT следует указывать файл @CLIB.IMP, объявляющий процедуры из стандартной С-библиотеки. Если используется арифметика с плавающей точкой, то необходимо указать файл @MATHLIB.IMP.
Пример:
IMPORT @E:\WC386\CLIB.IMP @E:\WC386\MATHLIB.IMP
SCREENNAMEВ двойных кавычках указывается имя экрана, автоматически создаваемого при загрузке NLM-модуля. Если имя не указывается, то в качестве идентификатора экрана используется имя модуля.
THREADNAMEСтрока до 5 символов в двойных кавычках - шаблон для генерации имён новых нитей, создаваемых в загружаемом NLM-модуле. При формировании имени нити к шаблону добавляются цифры (по возрастанию, начиная с 0). Если имя не указано, то используются первые 5 символов имени модуля.
EXPORTСписок имён функций, доступных другим NLM-модулям. В списке можно использовать имя файла (@имя_файла). Каждая строка файла должна начинаться с пробела.
Все NLM-модули, загружаемые в дальнейшем, могут обращаться к этим функциям в случае, если они описаны в списках IMPORT этих модулей.
MAPЗапрашивает создание MAP-файла. Если имя не указано, будет использоваться имя из директивы OUTPUT.
DEBUGЗапрашивает, чтобы компоновщик включал дополнительную информацию для отладчика.
CHECKУказывает функцию, вызываемую перед выгрузкой NLM-модуля.
STACKРазмер стека, выделяемого при инициализации процесса, связанного с NLM-модулем. По умолчанию - 8192 байта.
MULTIPLEРазрешает загрузку нескольких копий NLM-модулей. Иначе при попытке загрузки более одной копии на консоль файлового сервера будет выдано сообщение об ошибке.

В файле определений *.DEF обязательными являются ключевые слова DESCRIPTION, INPUT, OUTPUT, IMPORT.

Предыдущая глава || Оглавление || Следующая глава

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...