9.1. Разные функции
9.2. Каналы, подключение к файл-серверу и отключение от файл-сервера
9.3. Работа с томами файл-сервера
9.4. Отображение дисков рабочей станции на сетевые каталоги
9.5. Просмотр содержимого каталогов
9.6. Создание, переименование и удаление каталога
9.7. Работа с файлами
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) |
int IntSwap(int UnswappedInteger);
Функция меняет местами байты в 16-битовом слове, которое передается ей в качестве параметра, возвращая полученное значение.
Параметры:
| UnswappedInteger | преобразуемое слово |
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 | указатель на переменную, в которую будет записан идентификатор объекта |
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.
int IPXInitialize(void) ;
Функция возвращает 0 при успешном завершении или код ошибки.
int IPXOpenSocket(char *SocketNumber, char SocketType) ;
Функция возвращает 0 при успешном завершении или код ошибки.
Параметры:
| SocketNumber | указатель на двухбайтовый массив, содержащий значение сокета или ноль, если требуется получить динамический сокет |
| SocketType | 00h - короткоживущий сокет, FFh - долгоживущий сокет |
int IPXCloseSocket(char *SocketNumber);
Функция возвращает 0 при успешном завершении или код ошибки.
Параметры:
| SocketNumber | указатель на двухбайтовый массив, содержащий значение закрываемого сокета |
void IPXListenForPacket(ECB *EventControlBlock);
Параметры:
| EventControlBlock | указатель на блок ECB |
void IPXSendPacket(ECB *EventControlBlock);
Параметры:
| EventControlBlock | указатель на блок 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;