Untitled
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
Проверка сетевой оболочки
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 | преобразуемое слово
|
Подключение к файл-серверу
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 | номер канала сервера, от которого выполняется отключение
|
Получить имя тома по номеру тома
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 | признак того, что том является съемным
|
Создание нового элемента в таблице индексов каталога
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 | указатель на байт памяти, в который будет записана маска прав доступа пользователя в данном каталоге
|
Поиск подкаталогов в сетевых каталогах
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 | указатель на байт, в который будет записано значение маски прав доступа, связанное с данным каталогом
|
Создание каталога
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 | добавляемые права доступа
|
Поиск файлов
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 | атрибуты удаляемого файла
|
Добавление файла в группу
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 | индекс семафора
|
Определение собственного уровня доступа
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 | признак того, что в объекте есть еще и другие записи
|
Определение режима приема сообщений
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 при успешном завершении или код ошибки.
Параметры:
| Message | cообщение, которое должно быть записано в журнал (файл net$log.msg в каталоге SYS:SYSTEM). Размер сообщения не должен превышать 80 символов, включая закрывающий строку двоичный ноль
|
Прием сообщений
int GetBroadcastMessage(char *MessageBuffer);
Функция возвращает 0 при успешном завершении или код ошибки.
Параметры:
| MessageBuffer | буфер для принимаемого сообщения
|
Определение даты и времени
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, сервер завершает свою работу в любом случае
|
В этом разделе мы приведем описание тех функций, предназначенных
для работы с протоколом IPX, которые были использованы в нашей
книге. Полное описание дано в документации, поставляющейся с библиотекой
Novell NetWare C Interface.
Инициализация драйвера IPX
int IPXInitialize(void) ;
Функция возвращает 0 при успешном завершении или код ошибки.
Открытие сокета
int IPXOpenSocket(char *SocketNumber, char SocketType) ;
Функция возвращает 0 при успешном завершении или код ошибки.
Параметры:
| SocketNumber | указатель на двухбайтовый массив, содержащий значение сокета или ноль, если требуется получить динамический сокет
|
| SocketType | 00h - короткоживущий сокет,
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;
|