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

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


Для изменения атрибутов файлов, а также другой информации, такой, как время создания файла и идентификатор владельца, можно воспользоваться функцией SetFileInformation(): int SetFileInformation(BYTE DirectoryHandle, char *FilePath, BYTE SearchAttributes, BYTE FileAttributes, BYTE ExtendedFileAttributes, char *CreationDate, char *LastAccessDate, char *LastUpdateDateAndTime, char *LastArchiveDateAndTime, long *FileOwnerID);
Параметры этой функции имеют такое же назначение, что и параметры функции _ScanFileInformation(): с помощью параметров DirectoryHandle и FilePath вы должны указать путь к файлу, остальные параметры задают новые значения для атрибутов файла и другой информации, имеющей отношение к файлу.
Функция SetFileInformation() возвращает 0 при успешном завершении или код ошибки.
Для изменения атрибутов файлов и другой информации о файлах можно использовать функцию E3h прерывания INT21h:
На входе:AH= E3h;
DS:SI= Адрес буфера запроса;
ES:DI= Адрес буфера ответа.
На выходе:AL= Код ошибки или 0, если операция завершилась без ошибок.



Буфер запроса имеет следующий формат: struct REQUEST { WORD PacketLength; // размер пакета запроса BYTE Function; // должно быть равно 16 BYTE FileAttributes; // атрибуты файла BYTE ExtendedFileAttributes; // расширенные // атрибуты файла long Reserved; // зарезервировано BYTE CreationDate[2]; // дата создания BYTE LastAccessDate[2]; // дата последнего доступа BYTE LastUpdateDateAndTime[4]; // дата и время // обновления BYTE LastArchiveDateAndTime[4]; // дата и время выгрузки BYTE Reserved[60]; // зарезервировано BYTE DirectoryHandle; // индекс каталога BYTE SearchAttributes; // тип файлов для поиска BYTE PathLength; // длина поля пути BYTE DirectoryPath[PathLength]; // путь к каталогу };
Для изменения байта расширенных атрибутов удобно использовать функцию SetExtendedFileAttributes(): int SetExtendedFileAttributes(char *FilePath, BYTE *NewExtendedFileattributes);
Параметр FilePath задает путь к файлу, а параметр NewExtendedFileattributes - новое значение для байта расширенных атрибутов.
Функция возвращает 0 при успешном завершении или код ошибки:
Код ошибкиЗначение
0xFEУ программы нет прав для изменения атрибута
0xFFФайл не найден

Для того чтобы узнать байт расширенного атрибута файла, используйте функцию GetExtendedFileAttributes(): int GetExtendedFileAttributes(char *FilePath, BYTE *ExtendedFileattributes);
Параметр FilePath задает путь к файлу, параметр ExtendedFileattributes определяет адрес байта памяти, в который будет записано значение байта расширенных атрибутов файла.
Функция возвращает 0 при успешном завершении или код ошибки:
Код ошибкиЗначение
0xFEУ программы нет прав для просмотра каталога
0xFFФайл не найден

Для получения и изменения расширенных атрибутов файла и можно использовать функцию B6h прерывания INT 21h:
На входе:AH= B6h;
AL= Выполняемая функция:
00h - получить байт расширенного атрибута;
01h - изменить байт расширенного атрибута;
DS:DX= Адрес буфера, содержащего путь к файлу;
CL= Новое значение расширенного атрибута.
На выходе:AL= 0, если операция завершилась без ошибок, или
код ошибки:
FCh - нет прав для выполнения функции;
FFh - файл не найден;
CL= Если при вызове функции регистр AL содержал значение 00h, в регистр CL будет записано значение расширенного атрибута указанного файла.
Содержание раздела