Интерфейсы прикладного программирования (API) для OS/2 Microsoft предоставляют доступ к сетевым функциям и используются языками высокого уровня. API обеспечивает два вида функций:
1. Вызовы функций, ориентированных на прикладные программы. Эти функции предназначены для сетевых прикладных программ, которые выполняют сложные задачи, например, используют сетевые ресурсы, запрашивают или управляют удаленным печатающим устройством с буферизацией, посылают или получают сообщения и т.п. 2. Вызовы функций, ориентированных на управление. Эти функции позволяют получать полный доступ к или управлять удаленным спецпроцессором, например, запускать, делать паузу или продолжать работу программ спецпроцессора, разделять и закрывать разделение ресурсов спецпроцессора, запрашивать/управлять сеансами спецпроцессора и т.п.
Интерфейс прикладного программирования (API) Администратора ЛВС имеет те же ограничения, что и стандартный API DOS. API использует программную модель удаленного вызова процедуры, чтобы обеспечить управление удаленными спецпроцессорами и их ресурсами как местными. Такие вызовы принимают параметр имени спецпроцессора, который указывает цель операции. Для того, чтобы предотвратить несанкционированное использование, некоторые функции, вызванные удаленно, выполняются только, если запрашивающий пользователь имеет преимущество в управлении данным спецпроцессором.
Управляющая программа (драйвер) NETBIOS - одна из категорий, определенная Интерфейсом прикладного программирования (API) Администратора ЛВС. Администратор ЛВС определяет и другие категории. Просто перечислим их.
Рабочая станция (WORKSTATION) - Информация о конфигурации рабочей станции.
Использование переназначения - Соединение удаленного (REDIRECT USE) устройства рабочей станции
Сообщения (MESSAGING) - Отправка и прием сообщений от пользователя к пользователю
Тревога (ALERT) - Управляет и поднимает тревогу в сети
Каналы (PIPES) - Двустроронняя коммуникация процессов
Почтовые участки (MAILSLOTS) - Односторонняя коммуникация процессов
Параметры пользователя - Сохраняет/восстанавливает (PROFILE) активное использование/совместное использование
Конфигурация (CONFIG) - Устанавливает элементы из файла LANMAN.INI
Спецпроцессор (SERVER) - Конфигурация спецпроцессора и статистические данные о нем
Совместное использование - Совместное использование файла (SHARES) и устройства спецпроцессора
Символьные устройства - Соединения с удаленными (CHAR DEVICES) символьными устройствами
Очереди печати (PRINT QUEUES) - Очереди заданий системы буферизации потоков I/O
Задания печати (PRINT JOBS) - Задания печати системы буферизации
Назначения печати - Виртуальные устройства в (PRINT DESTINATIONS) системе буферизации
Разрешения на доступ - Разрешения на доступ к файлам (ACCESS PERMISSIONS) и другим ресурсам
Пользователи (USERS) - Разрешения на пользование файлами и групповое членство
Статистика (STATISTICS) - Статистические данные о работе рабочей станции и спецпроцессора
Удаленные (REMOTE) - Удаленные функции, такие как удаленное выполнение программы, копирование файлов и передвижение файлов
Смешанные (MISCELLANEOUS) - Время дня в сети и т.п.
Доступ к управляющей программе NETBIOS осуществляется вызовом Enum. Вызовы Enum перечисляют тип ресурса, является ли он именами пользователей, заданиями в очереди, очередями в спецпроцессоре и т.д. Вызовы всегда возвращают целое число частей ответа фиксированной длины. Если буфер пользователя слишком мал,некоторые данные переменной длины не возвращаются, вероятнее всего,для последнего элемента, хотя это и не обязательно. Кодом возврата является "больше данных", включая и данные переменной длины. Этот пераметр показывает количество возвращенных "порций" фиксированной длины. Некоторые или все из них могут иметь только часть соответствующих переменных данных, возвращаемых вместе с ними.
Вызовы Enum помещают фиксированные структуры в передней части буфера, чтобы дать Вам возможность выполнять в них итерацию. Переменные данные помещаются с другого конца буфера. Вызов Enum в NETBIOS обеспечивает два уровня информации:
Уровень 0 ---------
struct netbios_info_0 {char nb_net_name [16] }; /* nb_net_name is 16 character NETBIOS name */
Уровень 1 ---------
struct netbios_info_1 {char nb_ntet_name [16]; char nb_driver_name [9]; /* OS/2 device driver name */ unsigned byte nb_lana_num; /* lan adapter number */ unsigned short nb_driver_type; /* 1 = ncb, 2 = mcb */ unsigned short nb_net_status; /* bit 0 on = net started */ /* bits 14/15 opcodes as follows: */ /* 0 = net not opened */ /* 1 = open in regular mode */ /* 2 = open in privileged mode */ /* 3 = open in exclusive mode */ unsigned long nb_net_bandeidth; /* network bandwidth bits/s */ unsigned short nb_max_sess; /* max number of sessions */ unsigned short nb_max_ncbs; /* max number of outstanding ncbs */ unsigned short nb_max_names; /* max number of names */