On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru








 

9. Приложение 1. БИБЛИОТЕКА ФУНКЦИЙ


NETWARE C INTERFACE FOR DOS

9.1. Разные функции

9.2. Каналы, подключение к файл-серверу и отключение от файл-сервера

9.3. Работа с томами файл-сервера

9.4. Отображение дисков рабочей станции на сетевые каталоги

9.5. Просмотр содержимого каталогов

9.6. Создание, переименование и удаление каталога

9.7. Работа с файлами

9.8. Синхронизация процессов

9.9. Работа с базой объектов Bindery

9.10. Передача и прием сообщений

9.11. Управление файл-сервером

9.12. Работа с протоколом IPX

9.1. Разные функции

Проверка сетевой оболочки

int GetShellVersionInformation(BYTE *MajorVersion,
                BYTE *MinorVersion, BYTE *RevisionLevel);


Функция возвращает 0xFF при нормальном завершении или 0 при ошибке.

Параметры:

MajorVersion верхний (major) номер версии
MinorVersion нижний (minor) номер версии
RevisionLevel номер изменения (revision)

Обмен байтов в 16-битовом слове

int IntSwap(int UnswappedInteger);


Функция меняет местами байты в 16-битовом слове, которое передается ей в качестве параметра, возвращая полученное значение.

Параметры:

UnswappedIntegerпреобразуемое слово

Обмен байтов в 32-битовом слове

long LongSwap(long UnswappedLong);


Функция меняет местами байты в 32-битовом слове, которое передается ей в качестве параметра, возвращая полученное значение.

Параметры:

UnswappedLongпреобразуемое слово

9.2. Каналы, подключение к файл-серверу и отключение от 9.3. файл-сервера

Подключение к файл-серверу

int AttachToFileServer(char *ServerName, WORD *ConnectionID);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

ServerName указатель на текстовую строку с именем файл-сервера
ConnectionID адрес переменной типа WORD, в которую будет записан номер созданного канала

Отключение от файл-сервера

void DetachFromFileServer(WORD ConnectionID);


Параметры:

ConnectionIDномер канала, распределенного серверу, от которого вы собираетесь отключиться

Получить номер канала первичного сервера

WORD GetPrimaryConnectionID(void);


Функция возвращает номер канала первичного сервера.

Получить номер канала текущего сервера

WORD GetDefaultConnectionID(void);


Функция возвращает номер канала текущего сервера.

Установить предпочтительный сервер

void SetPreferredConnectionID(BYTE ConnectionID);


Параметры:

ConnectionIDномер канала для сервера, который должен стать предпочтительным

Подключение к файл-серверу

int LoginToFileServer(char *ObjectName, WORD ObjectType,
                        char *ObjectPassword);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

ObjectNameуказатель на имя пользователя, под которым его зарегистрировал супервизор сети или руководитель группы
ObjectTypeтип объекта
ObjectPasswordуказатель на текстовую строку, содержащую пароль пользователя

Отключение от всех файл-серверов

void Logout(void);


Отключение от одного файл-сервера

void LogoutFromFileServer(WORD ConnectionID);


Параметры:

ConnectionIDномер канала сервера, от которого выполняется отключение

9.3. Работа с томами файл-сервера

Получить имя тома по номеру тома

int GetVolumeName(int VolumeNumber, char*VolumeName);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

VolumeNumberномер тома, для которого необходимо получить имя
VolumeNameуказатель на буфер размером 16 байт, в который будет записано имя тома

Получить номер тома по имени тома

int GetVolumeNamber(char*VolumeName, int *VolumeNumber);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

VolumeNameимя тома
VolumeNumberуказатель на переменную, в которую будет записан номер тома

Получить информацию о томе

int GetVolumeInfoWithNumber(BYTE VolumeNumber, char *VolumeName,
        WORD *TotalBlocks, WORD *SectorsPerBlock,
        WORD *AvailableBlocks, WORD *TotalDirectorySlots,
        WORD *AvailableDirectorySlots, WORD *Removable);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

VolumeNumberномер тома, для которого необходимо получить информацию
VolumeNameимя тома
TotalBlocksобщее количество блоков
SectorsPerBlockколичество секторов в одном блоке
AvailableBlocksколичество свободных блоков
TotalDirectorySlotsколичество каталогов, имеющихся на томе
AvailableDirectorySlotsколичество каталогов, которые можно дополнительно создать на томе
Removableпризнак того, что том является съемным

9.4. Отображение дисков рабочей станции на сетевые каталоги

Создание нового элемента в таблице индексов каталога

int AllocPermanentDirectoryHandle(BYTE DirectoryHandle,
    char *DirectoryPath, char DriveLetter,
    BYTE *NewDirectoryHandle, BYTE *EffectiveRightsMask);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

DirectoryHandleиндекс каталога
DirectoryPathполный путь к каталогу
DriveLetterотображаемый диск
NewDirectoryHandleуказатель на переменную, в которую будет записан индекс, связанный с отображаемым каталогом
EffectiveRightsMaskуказатель на байт памяти, в который будет записана маска прав доступа пользователя в данном каталоге

Удаление элемента из таблицы индексов каталога

int DeallocateDirectoryHandle(BYTE DirectoryHandle);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

DirectoryHandleиндекс каталога, для которого удаляется элемент из таблицы индексов

Получить индекс каталога по номеру диска

int GetDirectoryHandle(char Drive);


Функция возвращает индекс каталога или 0 при ошибке.

Параметры:

Driveномер диска, для которого необходимо получить индекс каталога (0 - A:, 1 - B:, и т. д.)

Создание временного элемента в таблице индексов каталога

int AllocTemporaryDirectoryHandle(BYTE DirectoryHandle,
    char *DirectoryPath, char DriveLetter,
    BYTE *NewDirectoryHandle, BYTE *EffectiveRightsMask);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

DirectoryHandleиндекс каталога
DirectoryPathполный путь к каталогу
DriveLetterотображаемый диск
NewDirectoryHandleуказатель на переменную, в которую будет записан индекс, связанный с отображаемым каталогом
EffectiveRightsMaskуказатель на байт памяти, в который будет записана маска прав доступа пользователя в данном каталоге

9.5. Просмотр содержимого каталогов

Поиск подкаталогов в сетевых каталогах

int ScanDirectoryInformation(BYTE DirectoryHandle,
        char *SearchDirectoryPath, int *SequenceNumber,
        char *DirectoryName, BYTE *CreationDateAndTime,
        long *OwnerObjectID, BYTE *MaximumRightsMask);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

DirectoryHandleиндекс просматриваемого каталога
SearchDirectoryPathпуть к просматриваемому каталогу
SequenceNumberуказатель на слово, которое должно содержать нулевое значение при первом вызове функции
DirectoryNameимя обнаруженного подкаталога
CreationDateAndTimeуказатель на область памяти, размером 4 байта, в которую будет записана информация о дате и времени создания найденного подкаталога
OwnerObjectIDуказатель на слово, в котором будет записан идентификатор пользователя, создавшего каталог
MaximumRightsMaskуказатель на байт, в который будет записано значение маски прав доступа, связанное с данным каталогом

9.6. Создание, переименование и удаление каталога

Создание каталога

int CreateDirectory(BYTE DirectoryHandle,
     char* DirectoryPath, BYTE MaximumGightsMask);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

DirectoryHandleиндекс каталога
DirectoryPathпуть к каталогу
MaximumRightsMaskвид доступа, разрешенный пользователям для данного rаталога

Переименование каталога

int RenameDirectory(BYTE DirectoryHandle,
     char* DirectoryPath, char *NewDirectoryName);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

DirectoryHandleиндекс каталога
DirectoryPathпуть к каталогу
NewDirectoryNameновое имя каталога

Удаление каталога

int DeleteDirectory(BYTE DirectoryHandle, char* DirectoryPath);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

DirectoryHandleиндекс каталога
DirectoryPathпуть к каталогу

Получение маски прав доступа каталога

int GetEffectiveDirectoryRights(BYTE DirectoryHandle,
    char *DirectoryPath, BYTE *EffectiveRightsMask);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

DirectoryHandleиндекс каталога
DirectoryPathпуть к каталогу
EffectiveRightsMaskуказатель на байт памяти, в который будет записан байт маски прав доступа

Изменение атрибутов каталога

int SetDirectoryInformation(BYTE DirectoryHandle,
     char *DirectoryPath, BYTE *NewCreationDateAndTime,
     long NewOwnerObjectID, BYTE MaximumRightsMask);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

DirectoryHandleиндекс каталога
DirectoryPathпуть к каталогу
NewCreationDateAndTimeуказатель на массив из четырех байт с новыми значениями даты и времени
NewOwnerObjectIDидентификатор нового владельца каталога
MaximumRightsMaskновое значение для маски прав доступа каталога

Изменение маски доступа каталога

int ModifyMaximumRightsMask(BYTE DirectoryHandle,
       char *DirectoryPath, BYTE RevokeRightsMask,
       BYTE GrantRightsMask);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

DirectoryHandleиндекс каталога
DirectoryPathпуть к каталогу
RevokeRightsMaskудаляемые права доступа
GrantRightsMaskдобавляемые права доступа

9.7. Работа с файлами

Поиск файлов

int _ScanFileInformation(BYTE DirectoryHandle, char *FilePath,
   BYTE SearchAttributes, int *SequenceNumber, char *FileName,
   BYTE *FileAttributes, BYTE *ExtendedFileAttributes,
   long *FileSize, char *CreationDate, char *LastAccessDate,
   char *LastUpdateDateAndTime, char *LastArchiveDateAndTime,
   long *FileOwnerID);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

DirectoryHandleиндекс просматриваемого каталога
FilePathпуть к просматриваемому каталогу
SearchAttributesпараметр определяет, какие типы файлов
нужно найти
SequenceNumberпараметр при первом вызове функции должен указывать на переменную, которая имеет
значение 0xFFFF
FileNameуказатель на буфер размером 15 байт, в который будет записано имя найденного файла
FileAttributesатрибуты файла
ExtendedFileAttributesрасширенные атрибуты файла
FileSizeразмер файла
CreationDateдата создания файла
LastAccessDateдата последнего доступа к файлу
LastUpdateDateAndTimeдата и время последнего обновления
содержимого файла
LastArchiveDateAndTimeдата и время выгрузки файла
FileOwnerIDидентификатор пользователя, создавшего файл

Изменение атрибутов файла

int SetFileInformation(BYTE DirectoryHandle, char *FilePath,
   BYTE SearchAttributes, BYTE FileAttributes,
   BYTE ExtendedFileAttributes, char *CreationDate,
   char *LastAccessDate, char *LastUpdateDateAndTime,
   char *LastArchiveDateAndTime, long *FileOwnerID);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

DirectoryHandleиндекс файла
FilePathпуть к файлу
SearchAttributesтип файла
FileAttributesновые атрибуты файла
ExtendedFileAttributesновые расширенные атрибуты файла
CreationDateновая дата создания файла
LastAccessDateновая дата последнего доступа к файлу
LastUpdateDateAndTimeновые дата и время последнего обновления содержимого файла
LastArchiveDateAndTimeновые дата и время выгрузки файла
FileOwnerIDновый идентификатор пользователя, создавшего файл

Получение байта расширенных атрибутов

int GetExtendedFileAttributes(char *FilePath,
                BYTE *ExtendedFileAttributes);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

FilePathпуть к файлу
ExtendedFileAttributesрасширенные атрибуты файла

Изменение байта расширенных атрибутов

int SetExtendedFileAttributes(char *FilePath,
                BYTE *NewExtendedFileattributes);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

FilePathпуть к файлу
NewExtendedFileAttributesновые расширенные атрибуты файла

Копирование файлов

int FileServerFileCopy(int FromHandle, int ToHandle,
        long SourceFileOffset, long DestinationFileOffset,
        long NumberOfBytesToCopy, long *BytesCopied);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

FromHandleиндекс файла, из которого копируются данные
ToHandleиндекс файла, в который копируются данные
SourceFileOffsetсмещение в исходном файле
DestinationFileOffsetсмещение в выходном файле
NumberOfBytesToCopyколичество копируемых байт
BytesCopiedуказатель на переменную, в которую будет записано количество действительно скопированных байт

Удаление файлов

int EraseFiles(BYTE DirectoryHandle, char *FilePath, 
                BYTE SearchAttributes);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

DirectoryHandleиндекс каталога, в котором находится удаляемый файл
FilePathпуть к удаляемому файлу
SearchAttributesатрибуты удаляемого файла

9.8. Синхронизация процессов

Добавление файла в группу

int LogFile(char *FileName, BYTE LockDirective,WORD Timeout);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

FileNameпуть к файлу, который необходимо добавить в группу
LockDirectiveпараметр определяет, надо ли блокировать файл сразу после его добавления в группу
Timeoutпериод времени (в 18-х долях секунды), в течение которого файл-сервер будет ожидать, если файл нельзя заблокировать немедленно

Удаление файла из группы

int ClearFile(char *FileName);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

FileNameпуть к файлу, который необходимо удалить из группы

Удаление группы и разблокирование всех файлов

void ClearFileSet(void);


Блокирование группы файлов

int LockFileSet(WORD Timeout);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

Timeoutпериод времени (в 18-х долях секунды), в течение которого файл-сервер будет ожидать, если группу файлов нельзя заблокировать немедленно

Разблокирование отдельных файлов

int ReleaseFile(char *FileName);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

FileNameпуть к файлу, который необходимо разблокировать

Разблокирование всех файлов

void  ReleaseFileSet(void);


Добавление физической записи в группу

int LogPhysicalRecord(int FileHandle, long RecordStartOffset,
    long RecordLength, BYTE LockDirective,WORD Timeout);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

FileHandleиндекс файла, которому принадлежит блокируемая запись
RecordStartOffsetсмещение от начала файла
RecordLengthразмер блокируемой записи в байтах
LockDirectiveпараметр определяет, надо ли блокировать запись сразу после добавления ее в группу
Timeoutпериод времени (в 18-х долях секунды), в течении которого файл-сервер будет ожидать, если запись нельзя заблокировать немедленно

Удаление записи из группы

int ClearPhysicalRecord(int FileHandle,
    long RecordStartOffset, long RecordLength);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

FileHandleиндекс файла, которому принадлежит запись
RecordStartOffsetсмещение от начала файла
RecordLengthразмер блокируемой записи в байтах

Разблокирование группы записей и удаление группы

void ClearPhysicalRecordSet(void);


Блокирование группы физических записей

int LockPhysicalRecordSet(BYTE LockDirective, WORD Timeout);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

LockDirectiveпараметр LockDirective задает режим блокирования. Если он равен нулю, записи блокируются для монопольного использования заблокировавшей записи программой. Если параметр имеет значение единице, записи блокируются для совместного использования в режиме чтения
Timeoutпериод времени (в 18-х долях секунды), в течение которого файл-сервер будет ожидать, если группу записей нельзя заблокировать немедленно

Разблокирование отдельных записей

int ReleasePhysicalRecord(int FileHandle,
    long RecordStartOffset, long RecordLength);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

FileHandleиндекс файла, которому принадлежит запись
RecordStartOffsetсмещение от начала файла
RecordLengthразмер записи в байтах

Разблокирование всех физических записей

void  ReleasePhysicalRecordSet(void);


Добавление логической записи в группу

int LogLogicalRecord(char LogicalRecordName,
    BYTE LockDirective,WORD Timeout);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

LogicalRecordNameимя логической записи, добавляемой в группу блокируемых
LockDirectiveпараметр определяет, надо ли блокировать запись сразу после добавления ее в группу
Timeoutпериод времени (в 18-х долях секунды), в течении которого файл-сервер будет ожидать, если запись нельзя заблокировать немедленно

Удаление логической записи из группы

int ClearLogicalRecord(char LogicalRecordName);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

LogicalRecordNameимя логической записи

Разблокирование всех логических записей и удаление группы

void ClearLogicalRecordSet(void);


Блокирование группы логических записей

int LockLogicalRecordSet(WORD Timeout);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

Timeoutпериод времени (в 18-х долях секунды), в течение которого файл-сервер будет ожидать, если группу логических записей нельзя заблокировать немедленно

Разблокирование отдельных логических записей

int ReleaseLogicalRecord(char LogicalRecordName);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

LogicalRecordNameимя логической записи

Разблокирование всех логических записей

void  ReleaseLogicalRecordSet(void);


Открытие семафора

int OpenSemaphore(char *SemaphoreName, int InitialValue,
      long *SemaphoreHandle, WORD *OpenCount);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

SemaphoreNameимя открываемого семафора
InitialValueзначение семафора при первом открытии
SemaphoreHandleуказатель на переменную, в которую будет записан индекс открытого семафора
OpenCountсчетчик использования семафора

Закрытие семафора

int CloseSemaphore(long SemaphoreHandle);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

SemaphoreHandleиндекс семафора

Определение состояния семафора

int ExamineSemaphore(long SemaphoreHandle,
      int *SemaphoreValue, WORD *OpenCount);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

SemaphoreHandleиндекс семафора
SemaphoreValueзначение семафора
OpenCountсчетчик использования

Уменьшение значения семафора

int WaitOnSemaphore(long SemaphoreHandle, WORD Timeout);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

SemaphoreHandleиндекс семафора
Timeoutвремя, в течении которого функция ожидает доступность ресурса (в 18-х долях секунды).

Увеличение значения семафора

int SignalSemaphore(long SemaphoreHandle);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

SemaphoreHandleиндекс семафора

9.9. Работа с базой объектов Bindery

Определение собственного уровня доступа

int GetBinderyAccessLevel(BYTE *SecurityAccessLevel, long *ObjectID);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

SecurityAccessLevelуказатель на слово, в которое будет записан уровень доступа
ObjectIDуказатель на двойное слово, в которое будет записан идентификатор пользователя

Получение имени и типа объекта по его идентификатору

 int GetBinderyObjectName(long ObjectID,
     char *ObjectName, WORD *ObjectType);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

ObjectIDидентификатор объекта
ObjectNameуказатель на переменную, в которую будет записано имя объекта
ObjectTypeуказатель на переменную, в которую будет записан тип объекта

Получение идентификатора объекта по его имени и типу

int GetBinderyObjectID(char *ObjectName,WORD ObjectType, long *ObjectID);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

ObjectNameимя объекта
ObjectTypeтип объекта
ObjectIDуказатель на переменную, в которую будет записан идентификатор объекта

Поиск объектов в базе Bindery

int ScanBinderyObject(char *SearchObjectName, WORD SearchObjectType,
  long *ObjectID, char *ObjectName, WORD *ObjectType, 
  char *ObjectHasProperties, char *ObjectFlag, char *ObjectSecurity);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

SearchObjectNameшаблон имени объекта
SearchObjectTypeтип объекта, который нужно найти, или -1 для поиска объектов всех типов
ObjectIDпри первом вызове в переменную, на которую указывает параметр ObjectID, необходимо записать значение -1. В дальнейшем в эту переменную будет записываться идентификатор найденного объекта
ObjectNameимя найденного объекта
ObjectTypeтип найденного объекта
ObjectHasPropertiesв переменную, на которую указывает параметр ObjectHasProperties, записывается значение 0xFF, если объект имеет дополнительную связанную с ним информацию (Properties), которую можно извлечь специально предназначенными для этого функциями
ObjectFlagфлаг
ObjectSecurityбайт доступа

Поиск записей для объектов

int ScanProperty(char *ObjectName, WORD ObjectType, 
   char *SearchPropertyName, long *SequenceNumber,
   char *PropertyName, char *PropertyFlag, char *PropertySecurity,
   char *PropertyHasValue, char *MoreProperties);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

ObjectNameимя объекта
ObjectTypeтип объекта
SearchPropertyNameимя записи или шаблон имени записи
SequenceNumberпри первом вызове переменная, на которую указывает параметр SequenceNumber, должна содержать
значение -1. При последующих вызовах содержимое этой переменной будет изменяться автоматически
PropertyNameимя записи
PropertyFlagфлаг записи
PropertySecurityбайт доступа
PropertyHasValueпризнак того, что запись имеет значения
MorePropertiesпризнак того, что в объекте есть еще и другие записи

9.10. Передача и прием сообщений

Определение режима приема сообщений

BYTE GetBroadcastMode(void);


Функция возвращает значение в диапазона от 0 до 3, соответствующее текущему режиму приема сообщений.

Установка режима приема сообщений

void SetBroadcastMode(BYTE BroadcastMode);


Параметры:

BroadcastModeновый режим приема сообщений

Передача сообщений пользователям

int SendBroadcastMessage(char *Message, WORD *ConnectionList,
       BYTE *ResultList, WORD ConnectionCount);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

Messageпередаваемое сообщение
ConnectionListуказатель на массив слов, содержащий номера каналов, используемых файл-сервером для связи с рабочими станциями
ResultListмассив байт, в котором для каждой станции отражается результат посылки сообщения
ConnectionCountразмер массива ConnectionList

Запись сообщения в журнал

int LogNetworkMessage(char *Message);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

Messagecообщение, которое должно быть записано в журнал (файл net$log.msg в каталоге SYS:SYSTEM). Размер сообщения не должен превышать 80 символов, включая закрывающий строку двоичный ноль

Прием сообщений

int GetBroadcastMessage(char *MessageBuffer);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

MessageBufferбуфер для принимаемого сообщения

9.11. Управление файл-сервером

Определение даты и времени

void GetFileServerDateAndTime(BYTE *DateAndTime);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

DateAndTimeуказатель на массив размером 7 байт, в который будет записана информация о дате и времени

Получение строк описания файл-сервера

int GetFileServerDescriptionStrings(char *CompanyName,
        char *Revision, char *RevisionDate, char *CopyrightNotice);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

CompanyNameуказатель на буфер размером 80 байт, в который будет записано название фирмы-изготовителя NetWare
Revisionуказатель на буфер размером 80 байт, в который будут записаны номер версии и номер изменений Novell NetWare
RevisionDateуказатель на буфер размером 24 байта, в который будет записана дата внесения изменений
CopyrightNoticeуказатель на буфер размером 80 байт, в который будут записаны сведения о правах на копирование операционной системы Novell NetWare

Определение имени файл-сервера

void GetFileServerName(WORD ConnectionID, char *FileServerName);


Параметры:

ConnectionIDномер канала, используемый рабочей станцией для связи
с файл-сервером
FileServerNameуказатель на буфер размером 48 байт, в который будет записано имя файл-сервера

Получение информации о файл-сервере

int GetServerInformation(int StructSize, FILE_SERV_INFO *ServerInfo);


Параметры:

StructSizeколичество байт, которые необходимо записать в структуру FILE_SERV_INFO, обычно используется значение
sizeof(struct FILE_SERV_INFO)
ServerInfoуказатель на структуру FILE_SERV_INFO, в которую будет записана информация о файл-сервере

Формат структуры FILE_SERV_INFO:

typedef struct  {
         char    serverName[48];
         BYTE    netwareVersion;
         BYTE    netwareSubVersion;
         WORD    maxConnectionsSupported;
         WORD    connectionsInUse;
         WORD    maxVolumesSupported;
         BYTE    revisionLevel;
         BYTE    SFTLevel;
         BYTE    TTSLevel;
         WORD    peakConnectionsUsed;
         BYTE    accountingVersion;
         BYTE    VAPversion;
         BYTE    queingVersion;
         BYTE    printServerVersion;
         BYTE    virtualConsoleVersion;
         BYTE    securityRestrictionLevel;
         BYTE    internetBridgeSupport;
 } FILE_SERV_INFO;


Описание полей структуры FILE_SERV_INFO:

Имя поляОписание
serverNameимя файл-сервера
netwareVersionверсия операционной системы Novell NetWare, работающей на данном файл-сервере
netwareSubVersionномер изменения версии операционной системы Novell NetWare, работающей на данном файл-сервере
maxConnectionsSupportedмаксимальное количество каналов, которые данный файл-сервер может создать с рабочими станциями
connectionsInUseколичество используемых в настоящий момент каналов
maxVolumesSupportedмаксимальное количество сетевых томов, которое может быть создано на данном файл-сервере
revisionLevelномер изменений
SFTLevelверсия системы SFT
TTSLevelверсия системы обработки транзакций TTS
peakConnectionsUsedпиковое количество используемых каналов
accountingVersionверсия системы учета работы пользователей
VAPversionверсия системы VAP
queingVersionверсия системы работы с очередями
printServerVersionверсия сервера печати
virtualConsoleVersionверсия виртуальной консоли
securityRestrictionLevelуровень ограничения доступа
internetBridgeSupportподдержка мостов между сетями

Определение возможности подключения к файл-серверу

int GetFileServerLoginStatus(int *LoginEnabledFlag);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

LoginEnabledFlagпо адресу, заданному параметром LoginEnabledFlag, функция запишет значение флага разрешения подключения

Установка даты и времени

int SetFileServerDateAndTime(WORD Year, WORD Month,
                WORD Day, WORD Hour, WORD Minute, WORD Second);


Параметры:

Yearновое значение для года
Monthмесяц
Dayдень месяца
Hourчасы
Minuteминуты
Secondсекунды

Запрет подключения к файл-серверу

int DisableFileServerLogin(void);


Функция возвращает 0 при успешном завершении или код ошибки.

Разрешение подключения к файл-серверу

int EnableFileServerLogin(void);


Функция возвращает 0 при успешном завершении или код ошибки.

Останов файл-сервера

int DownFileServer(int ForceFlag);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

ForceFlagпараметр определяет, надо ли завершать работу файл-сервера, если есть рабочие станции, открывшие файлы в сетевых каталогах. Если параметр установлен в 0, при попытке завершить работу файл-сервера возвращается код ошибки FFh, если имеются открытые пользователями файлы. Если значение параметра равно 1, сервер завершает свою работу в любом случае

9.12. Работа с протоколом IPX

В этом разделе мы приведем описание тех функций, предназначенных для работы с протоколом IPX, которые были использованы в нашей книге. Полное описание дано в документации, поставляющейся с библиотекой Novell NetWare C Interface.

Инициализация драйвера IPX

int IPXInitialize(void) ;


Функция возвращает 0 при успешном завершении или код ошибки.

Открытие сокета

int IPXOpenSocket(char *SocketNumber, char SocketType) ;


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

SocketNumberуказатель на двухбайтовый массив, содержащий значение сокета или ноль, если требуется получить динамический сокет
SocketType00h - короткоживущий сокет,
FFh - долгоживущий сокет

Закрытие сокета

int IPXCloseSocket(char *SocketNumber);


Функция возвращает 0 при успешном завершении или код ошибки.

Параметры:

SocketNumberуказатель на двухбайтовый массив, содержащий значение закрываемого сокета

Прием IPX-пакета

void IPXListenForPacket(ECB *EventControlBlock);


Параметры:

EventControlBlockуказатель на блок ECB

Передача пакета

void IPXSendPacket(ECB *EventControlBlock);


Параметры:

EventControlBlockуказатель на блок ECB

Отмена блока ECB

void IPXCancelEvent(ECB *EventControlBlock);


Параметры:

EventControlBlockуказатель на блок ECB

Определение собственного сетевого адреса

void IPXGetInternetworkAddress(IPXAddress *NetworkAddress) ;


Параметры:

NetworkAddressуказатель на массив из 12 байт, в который будет записан полный сетевой адрес

Типы данных

Сетевой адрес

typedef struct IPXAddress {
    BYTE    network[4];
    BYTE    node[6];
    BYTE    socket[2];
} IPXAddress;


Заголовок пакета IPX

typedef struct IPXHeader {
    WORD        checkSum;
    WORD        length;
    BYTE        transportControl;
    BYTE        packetType;
    IPXAddress  destination;
    IPXAddress  source;
} IPXHeader;


Дальние указатели на данные и функции

#define FARDATAPTR(type,var) type far *var
#define FARCODEPTR(type,var) type (far *var)()


Дескриптор фрагмента

typedef struct ECBFragment {
    FARDATAPTR(void,address);
    WORD    size;
} ECBFragment;


Блок ECB

typedef struct ECB {
    FARDATAPTR(void, linkAddress);
    FARCODEPTR(void, ESRAddress);
    BYTE        inUseFlag;
    BYTE        completionCode;
    WORD        socketNumber;
    BYTE        IPXWorkspace[4];
    BYTE        driverWorkspace[12];
    BYTE        immediateAddress[6];
    WORD        fragmentCount;
    ECBFragment fragmentDescriptor[2];
} ECB;
Назад       Содержание       Вперёд