Локальные сети персональных компьютеров. Работа с сервером Novell NetWare

         

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



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

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

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

Параметры:

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



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



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

int IPXInitialize(void) ;

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





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



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

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 SetDirectoryInformation(BYTE DirectoryHandle, char *DirectoryPath, BYTE *NewCreationDateAndTime, long NewOwnerObjectID, BYTE MaximumRightsMask);

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

Параметры:

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



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



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

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

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

Параметры:

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



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



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

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

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

Параметры:

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



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



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

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

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

Параметры:

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



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



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

int IntSwap(int UnswappedInteger);

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

Параметры:

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



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



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

long LongSwap(long UnswappedLong);

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

Параметры:

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



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



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

void GetFileServerDateAndTime(BYTE *DateAndTime);

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

Параметры:

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



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



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

void GetFileServerName(WORD ConnectionID, char *FileServerName);

Параметры:

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



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



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

BYTE GetBroadcastMode(void);

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



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



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

void IPXGetInternetworkAddress(IPXAddress *NetworkAddress) ;

Параметры:

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



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



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

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

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

Параметры:

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



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



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

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

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

Параметры:

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



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



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

int GetFileServerLoginStatus(int *LoginEnabledFlag);

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

Параметры:

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



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



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

int DownFileServer(int ForceFlag);

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

Параметры:

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



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



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

void DetachFromFileServer(WORD ConnectionID);

Параметры:

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



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



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

void LogoutFromFileServer(WORD ConnectionID);

Параметры:

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



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



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

void Logout(void);







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



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

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

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

Параметры:

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



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



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

int IPXOpenSocket(char *SocketNumber, char SocketType) ;

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

Параметры:

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



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



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

void IPXCancelEvent(ECB *EventControlBlock);

Параметры:

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



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



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

void IPXSendPacket(ECB *EventControlBlock);

Параметры:

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



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



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

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

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

Параметры:

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



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



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

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

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

Параметры:

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



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



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

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

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

Параметры:

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



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

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

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

Параметры:

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

Поиск файлов



Поиск файлов

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идентификатор пользователя, создавшего файл



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



Поиск объектов в базе 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 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 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признак того, что в объекте есть еще и другие записи



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



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

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

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

Параметры:

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



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



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

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

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

Параметры:

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



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



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

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

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

Параметры:

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



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



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

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 GetEffectiveDirectoryRights(BYTE DirectoryHandle, char *DirectoryPath, BYTE *EffectiveRightsMask);

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

Параметры:

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



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



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

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

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

Параметры:

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



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



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

int GetVolumeName(int VolumeNumber, char*VolumeName);

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

Параметры:

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



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



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

int GetDirectoryHandle(char Drive);

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

Параметры:

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



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



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

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признак того, что том является съемным



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



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

WORD GetPrimaryConnectionID(void);

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



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



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

WORD GetDefaultConnectionID(void);

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



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



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

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

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

Параметры:

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



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



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

void IPXListenForPacket(ECB *EventControlBlock);

Параметры:

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



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



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

int GetBroadcastMessage(char *MessageBuffer);

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

Параметры:

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



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



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

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

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

Параметры:

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



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



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

void ClearPhysicalRecordSet(void);







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



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

int ReleaseFile(char *FileName);

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

Параметры:

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



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



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

int ReleaseLogicalRecord(char LogicalRecordName);

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

Параметры:

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



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



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

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

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

Параметры:

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



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



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

void ReleaseFileSet(void);







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



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

void ReleasePhysicalRecordSet(void);







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



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

void ReleaseLogicalRecordSet(void);







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



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

void ClearLogicalRecordSet(void);







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



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

int EnableFileServerLogin(void);

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



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



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

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

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

Параметры:

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



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



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

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

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

Параметры:

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



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



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

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

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

Параметры:

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



Типы данных



Типы данных

Сетевой адрес 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;



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



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

int ClearFile(char *FileName);

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

Параметры:

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



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



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

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

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

Параметры:

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



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



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

void ClearFileSet(void);







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



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

int DeallocateDirectoryHandle(BYTE DirectoryHandle);

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

Параметры:

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



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



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

int DeleteDirectory(BYTE DirectoryHandle, char* DirectoryPath);

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

Параметры:

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



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



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

int ClearLogicalRecord(char LogicalRecordName);

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

Параметры:

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



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



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

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

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

Параметры:

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



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



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

int WaitOnSemaphore(long SemaphoreHandle, WORD Timeout);

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

Параметры:

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



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



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

void SetPreferredConnectionID(BYTE ConnectionID);

Параметры:

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



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



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

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

Параметры:

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



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



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

void SetBroadcastMode(BYTE BroadcastMode);

Параметры:

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



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



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

int SignalSemaphore(long SemaphoreHandle);

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

Параметры:

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



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



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

int CloseSemaphore(long SemaphoreHandle);

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

Параметры:

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



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



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

int IPXCloseSocket(char *SocketNumber);

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

Параметры:

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



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



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

int LogNetworkMessage(char *Message);

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

Параметры:

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



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



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

int DisableFileServerLogin(void);

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



МАСКА ПРАВ ДОСТУПА КАТАЛОГА


Номер битаДоступ
0Чтение файлов
1Запись в файлы
2Открытие файлов
3Создание файлов
4Удаление файлов
5Можно создавать подкаталоги и задавать для создаваемых подкаталогов права доступа
6Поиск файлов в каталоге
7Изменение атрибутов файлов

БАЙТ АТРИБУТОВ ФАЙЛА


БитНазначение
0Read Only: файл можно читать, но нельзя в него писать. Также этот файл нельзя удалять или переименовывать
1Hidden: скрытый файл, не появляется в списке файлов при поиске
в каталоге обычными средствами
2System: системный файл, не появляется в списке файлов при поиске
в каталоге обычными средствами
3Execute Only: файл может быть загружен только для выполнения. Этот файл нельзя читать или перезаписывать. В операционной системе Novell NetWare не существует средств для сброса бита Execute Only, поэтому если, вы установите этот бит, вы навсегда потеряете доступ к файлу на чтение и запись
4Subdirectory: данный элемент оглавления каталога описывает не файл, а подкаталог
5Archive: этот бит установлен, если после выполнения операции выгрузки файла сам файл был изменен
6Зарезервировано
7Shareable: к данному файлу разрешен одновременный доступ со стороны нескольких пользователей, расположенных на разных рабочих станциях

БАЙТ РАСШИРЕННОГО АТРИБУТА ФАЙЛА


БитНазначение
0, 1, 2Search Mode: биты 0, 1 и 2 задают режим поиска программного файла при запуске программы на выполнение. Мы не будем рассматривать эти биты для сокращения объема книги, подробности о режимах поиска и дисках поиска вы можете узнать из руководства по библиотеке NetWare C Interface
3Зарезервировано
4Transaction Bit: при работе с файлом используется обработка транзакций. Файл, у которого установлен этот бит, не может быть удален или переименован
5Index: для файла размером больше 2 Мбайт для более быстрого доступа организуется индекс по таблице FAT. Этот бит не используется в Novell NetWare версии 3.11
6Зарезервировано
7Зарезервировано

ТИПЫ ОБЪЕКТОВ СЕРВЕРА NOVELL NETWARE


ЗначениеОписание
0Неклассифицируемый (неизвестный) объект
1Пользователь
2Группа пользователей
3Очередь печати
4Файл-сервер
5Сервер заданий
6Шлюз
7Сервер печати
8Очередь для архивирования
9Сервер для архивирования
AОчередь заданий
BАдминистратор
24Сервер удаленного моста

УРОВНИ ДОСТУПА В NOVELL NETWARE


0AnyoneОбъект не подключен к файл-серверу
1LoggedОбъект подключен к файл-серверу
2ObjectОбъект подключен к файл-серверу с именем и паролем
3SupervisorОбъект имеет права супервизора
4NetWareОбъект имеет права операционной системы Novell NetWare

КОДЫ ОШИБОК


Код ошибкиОписание
0x01Неправильный код функции MS-DOS;
сервер используется (не свободен);
переполнение значения семафора
0x02Файл MS-DOS не найден
0x03Путь MS-DOS не найден
0x04Слишком много открытых файлов
0x05Доступ запрещен
0x06Неправильный индекс файла
0x07Блок памяти уничттожен
0x08Мало памяти
0x09Неправильный адрес блока памяти
0x0AНеправильная среда (environment) MS-DOS
0x0BНеправильный формат
0x0CНеправильный код доступа
0x0DНеправильные данные
0x0FДисковод указан неправильно
0x10Попытка удалить текущий каталог
0x11Задано другое устройство, что недопустимо в операции перемещения файла
0x12Нет больше файлов
0x20Нарушение режима совместного использования файлов
0x21Нарушение режима блокировки файлов
0x80Файл уже используется
0x81Нет больше доступных индексов файлов
0x82Нет доступа для открытия файлов
0x83Ошибка ввода/вывода на сетевом диске
0x84Нет доступа для создания файлов или каталогов
0x85Нет доступа для создания и удаления файлов и каталогов
0x86Создаваемый файл существует, и для него установлен режим "только чтение"
0x87Недопустимое использование символов шаблона в имени создаваемого файла
0x88Неправильный индекс файла
0x89Нет доступа для поиска
0x8AНет доступа для удаления
0x8BНет доступа для переименования
0x8CНет доступа для изменения
0x8DФайлы уже используются
0x8EФайлы не используются
0x8FЕсть файлы, для которых установлен режим "только чтение"
0x90Нет файлов, для которых установлен режим "только чтение"
0x91При переименовании оказалось, что файлы с новыми именами
уже существуют
0x92Не найдены файлы, имена которых должны быть изменены
0x93Нет доступа на чтение
0x94Нет доступа на запись, или для файла установлен режим
"только чтение"
0x95Файл отсоединен
0x96Для выполнения операции на сервере недостаточно
оперативной памяти;
для выполнения операции на сервере недостаточно
динамической дисковой памяти
0x97Нет места на диске для файла спулинга
0x98Указанный том не существует
0x99Переполнение каталога
0x9AПри переименовании задано новое имя для тома
0x9BНеправильный индекс каталога
0x9CНеправильно указан путь к каталогу
0x9DНет свободных индексов каталогов
0x9EНеправильное имя файла
0x9FУказанный каталог уже используется
0xA0Каталог не пуст
0xA1Ошибка ввода/вывода при обращении к каталогу
0xA2Попытка прочитать файл с заблокированными записями
0xC0Нет доступа к средствам учета работы пользователей
0xC1Подключение к серверу запрещено
0xC2Истек предоставленный кредит
0xC5Блокировка при попытке злоумышленника подобрать пароль
0xC6Нет прав оператора консоли
0xD0Ошибка при работе с очередями
0xD1Нет очередей
0xD2Нет сервера очередей
0xD3Нет прав доступа к очереди
0xD4Переполнение очереди
0xD5Нет очереди заданий
0xD6Нет доступа к заданию
0xD7Пароль не является уникальным
0xD8Слишком короткий пароль
0xD9Подключение запрещено
0xDAВ этот период времени подключение запрещено
0xDBС этой станции подключение запрещено
0xDCПользователь заблокирован
0xDEПароль устарел
0xDFПароль устарел
0xEFЗадано неправильное имя объекта
0xF0Нельзя использовать символы шаблона
0xF1Неправильный код доступа
0xF2Нет доступа на чтение данных об объекте
0xF3Нет доступа на изменение имени объекта
0xF4Нет доступа на удаление объекта
0xF5Нет доступа на создание объекта
0xF6Нет доступа на удаление записи
0xF7Нет доступа на создание записи;
указанный диск не является локальным
0xF8Объект уже подключен к серверу;
нет доступа на изменение содержимого записи;
объект не подключен к серверу
0xF9Нет доступных каналов для подключения;
нт доступа на чтение содержимого записи
0xFAНет свободных слотов для подключения сервера
0xFBНеправильно заданы параметры;

нет такой записи;
неправильный код запроса 0xFCНеизвестный файл-сервер;
переполнение очереди сообщений;
нет такого объекта 0xFDПоле уже заблокировано 0xFEБаза данных объектов заблокирована;
каталог заблокирован;
неправильная длина имени семафора;
Подключение к серверу запрещено супервизором 0xFFНеправильное смещение записи;
ошибка в расширении имени файла;
ошибка в имени файла;
сбой аппаратных средств;
неправильный номер дисковода;
неправильное начальное значение семафора;
неправильный индекс семафора;
файлы не найдены;
нет отклика от файл-сервера;
нет такого объекта, или указан неправильный пароль;
путь не найден;
сбой при работе с базой данных объектов;
больше нет файлов, соответствующих указанному шаблону;
записи не найдены