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;
|