|
| |
|
|
Ответов: 0
|
16-01-12 20:13
|
|
|
| |
|
|
Ответов: 0
|
09-01-12 11:23
|
|
|
| |
|
|
Ответов: 0
|
04-01-12 11:23
|
|
|
   Web - программирование
| |
|
|
|
   Программирование под ОС
| |
|
|
|
   Web - технологии
| |
|
|
|
   Базы Данных
| |
|
|
|
|
Операционные системы / Разное /
| |
| | |
Возможно вас заинтересует
|
|
Функция 13h прерывания 21h. Недокументированные возможности
Функция 13h прерывания 21h относится к серии функций, выполняющих
операции с файлами с использованием FCB. Она удаляет файл или группу
файлов.
Эта функция имеет один недокументированный случай, когда
расширенный FCB использует имя файла ??????????? и атрибут файла 1Fh.
При этой специфической комбинации функция 13h удаляет все файлы в
текущем каталоге, включая файлы с атрибутами "только для чтения", "том"
и "каталог". Чтобы усугубить положение, эта функция заменяет первый
символ в имени удаленного файла на 0, а не на обычный 0E5h. Это вводит
в заблуждение многие утилиты восстановления файлов.
Таким образом, будучи примененной в головном каталоге, она
эффективно удаляет все файлы на диске. Так как подкаталоги являются не
более чем специальными файлами, содержащими информацию о каталоге,
исключения для них не делается. В результате это препятствует всякому
доступу к файлам, которые были в тех подкаталогах, включая любые
подкаталоги большей глубины. Следует заметить, что файлы в тех
подкаталогах не удаляются и занимаемое ими на диске место остается
занятым. Удаляется только информация о них в каталогах. Следовательно,
утилита CHKDSK сообщит об этих неучтенных файлах как о кластерах, не
включенных в пространство диска (потерянных). Конечно, эти удаленные
файлы возможно восстановить, но только усердной работой с дисковым
редактором.
Такое поведение MS-DOS по меньшей мере странно. Обычно только
внутренние процедуры MS-DOS могут изменять или удалять файлы,
помеченные атрибутом "подкаталог". То, что функции, оперирующей с FCB,
дозволено удалять эти файлы - невероятная причуда MS-DOS.
;----------------------------------------------------------------------
; Пример использования недокументированново свойства функции 13h
; прерывания 21h.
; НИ В КОЕМ СЛУЧАЕ НЕ ВЫПОЛНЯЙТЕ ЭТОТ ПРИМЕР НА ЖЕСТКОМ ДИСКЕ:
; ЭТО МОЖЕТ ПРИВЕСТИ К НЕПРЕДСКАЗУЕМЫМ ПОСЛЕДСТВИЯМ. ЕСЛИ УЖ ЕСТЬ
; ГОРЯЧЕЕ ЖЕЛАНИЕ ИСПЫТАТЬ ЕЕ, ВЫДЕЛИТЕ ДЛЯ ЭТОЙ ЦЕЛИ ОТДЕЛЬНУЮ
; ДИСКЕТУ.
;-----------------------------------------------------------------------
mov ax, offset RETURN ; Взять смещение адреса возврата
push ax ; Занести в стек флаги, сегмент
push cs ; и смещение адреса возврата
pushf ; в обратном порядке.
mov cl, 13h ; Функция: удалить по FCB
mov dx, offset FCB ; Расширенный FCB
push cs ; Для уверенности, что DS
pop ds ; указывает на текущий код.
jmp dword ptr ALT_DOS_PTR ; Выполнить функцию.
RETURN: mov ah, 4Ch ; Завершить процесс через DOS.
int 21h ;
ALT_DOS_PTR dw 00C0h, 0000 ; Адрес для перехода в альтер-
; нативный обработчик
FCB db 0FFh ; Расширенный FCB
db 5 dup (0) ; Зарезервированные байты
db 1Fh ; Установлены все биты атрибута файла
db 0 ; Номер дискового устройства
db "???????????" ; Искать все файлы
db 19h dup (0) ; Остальная часть FCB
;--------------------------------------------------------------------------
|
Последние статьи: Операционные системы / Разное /
| |
| | |
|
В операционной системе CP/M программисты для вызова функций DOS использовали близкий CALL: по смещению 5 в PSP каждойпрограммы находится команда CALL FAR seg:off, которая теоретически позволяет вызвать DOS выполнением команды CALL 0005, точно так же, как в CP/M... подробнее
|
|
Кол. просмотров: общее - 915 сегодня - 0
|
|
|
Альтернативный обработчик прерывания 21h предъявляет другие требования к входным параметрам, чем обычный вызов INT 21h. Его использование требует некоторых специальных действий и понимания того, что он позволяет... подробнее
|
|
Кол. просмотров: общее - 930 сегодня - 0
|
|
|
Функция 13h прерывания 21h относится к серии функций, выполняющих операции с файлами с использованием FCB. Она удаляет файл или группу файлов... подробнее
|
|
Кол. просмотров: общее - 1008 сегодня - 0
|
|
|
Прерывания 30h и 31h не используются в DOS и о них ничего не говорится в обычных руководствах программиста по DOS. Строго говоря, их вообще нельзя назвать прерываниями и тем более пытаться их выполнить. Ни к чему хорошему это не приведет, поскольку ячейки памяти, зарезервированные для векторов этих двух прерываний (0:00C0 - 0:00C7) не содержат, как обычно, адресов процедур, выполняющих обработку прерываний... подробнее
|
|
Кол. просмотров: общее - 849 сегодня - 0
|
|
|
Эта инфа была написана в первую очередь для тех, у кого проблемы с жестким диском, а также для тех, кто с минимальной конфигурацией хочет выбраться в интернет... подробнее
|
|
Кол. просмотров: общее - 1821 сегодня - 1
|
|
|
|