Глава 5. Дисковые накопители.

Раздел 2. Работа с каталогами диска.

5.2.6 Спрятанные и защищенные от записи файлы.

DOS использует шесть различных атрибутов файлов, которые дают данному файлу определенный статус. Файл может иметь несколько из этих атрибутов одновременно (но не все). Атрибуты устанавливаются 12-м байтом 32-байтного элемента каталога. Младшие шесть битов имеют значение, а остальные должны быть равны нулю. Биты такие:

 
   если бит 5 = 1,   то файл был изменен со времени последней 
                     архивации 
            4 = 1,   то файл является подкаталогом 
            3 = 1,   то этот элемент является не файлом, а меткой 
                     тома 
            2 = 1,   то файл является "системным" 
            1 = 1,   то файл спрятан при поиске по каталогу 
            0 = 1,   то файл объявлен только для чтения 
Бит 5 это архивный бит, используемый программами BACKUP и RESTORE DOS. Этот бит сьрасывается в 0 после архивации и устанавливается, когда с файлом снова работали. При следующей архивации неизмененные файлы могут быть обнаружены и проигнорированы.

Средний уровень.

Функция 43H прерывания 21H может как находить, так и изменять атрибуты файла, но только если файл был открыт с помощью метода дескриптора файлов, а не с помощью метода управляющего блока файла. Hет аналогичной функции для FCB. Байт атрибутов может быть установлен при создании файла {5.3.2}, используя расширенный управляющий блок файла. Hо если Вы последовательно откроете FCB, измените установку атрибутов и затем закроете файл, то у него останутся первоначальные атрибуты. Хотя, конечно, Вы можете изменить атрибуты каким-нибудь обходным путем, но намного проще использовать функцию, использующую метод дескриптора файлов.

Чтобы использовать функцию 43H, поместите 1 в AL, чтобы присвоить файлу байт атрибутов, содержащийся в CX (на самом деле в CL, поскольку CH равен 0). Можно наоборот поместить в AL 0, чтобы в CX был возвращен текущий байт атрибутов файла. В обоих случаях DS:DX должны указывать на строку, дающую путь к файлу. Kонец строки отмечается байтом ASCII 0 (который не входит в число 63-х символов). В примере статус "hidden" (спрятанный) присваивается файлу OVERDUE:
;---в сегменте данных
PATH DB 'A:ACCOUNTS',0
;---включаем признак спрятанного файла
MOV AH,43H ;номер функции
MOV AL,0 ;читаем байт атрибутов
LEA DX,PATH ;DS:DX указывают на путь
INT 21H ;байт атрибутов в CX
JC ERROR_ROUTINE ;обработка ошибок
OR CL,10B ;включаем бит 1
MOV AH,43H ;номер функции
MOV AL,1 ;заменяем байт атрибутов
INT 21H ;теперь файл стал спрятанным
Флаг переноса устанавливается при возникновении ошибки. В этом случае в AX возвращается 2 - если файл не найден, 3 - если не найден путь и 5 - при других ошибках (нет доступа).


<~-5.2.5 Получение/установка времени и даты последнего доступа к файлу.
Содержание
5.2.7 Чтение/изменение метки тома.-~>

Сайт управляется системой uCoz