Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.28;
Скачать: CL | DM;

Вниз

Как отследить DiskChange в ДОСе?   Найти похожие ветки 

 
HeWSter   (2003-04-16 07:09) [0]

А вернее не отследить, а перехватить? :)


 
NightAngel   (2003-04-16 20:51) [1]

Перехватить никак, т.к. контроль замены дискеты осуществляется схемами контроллера ГД, по состоянию запора дискеты. Отследить можно - проверить флаг дискеты: функция 16h - возвращает в регистре AH признак изменения положения этого запора. Прерывание 13h.
Вход: AH - 16h.
DL - номер диска.
Выход: AH - признак замены дискеты:
0 - дискета не менялась.
6 - дискета была заменена.
Что касается Win95/98 как-то я делал давно, что-то подобное, сейчас точно не могу сказать, надо посмотреть.


 
Nic_B   (2003-04-17 09:52) [2]

Под Досом изменения дисков надо перехватывать Int 21h. функция 0Eh.
Если надо исходник , могу поискать


 
HeWSter   (2003-04-18 07:39) [3]

2Nic_B Да, посмотри пожалуйста!!!


 
Nic_B   (2003-04-18 10:28) [4]

Ну вот примерно так (писалось на ТР-7.0):

..
var
..
OldInt21: Pointer;
Regs: Registers;
..


{Свое прерывание int 21h}
procedure int21; Assembler;
asm
pushf
cmp ax,1235h
jnz @1
mov ax,1234h
popf
retf 2
@1:
push ax
push ds
cmp ah,0eh ;Смена текущего
;диска ?
jne @2 {@2}

call create
// Вызов продцедуры что тебе нужно сделать
pop ds
pop ax
popf
int 0e4h
retf 2

@2:
pop ds
pop ax
popf
int 0e4h
retf 2
end; {End of int 21h}

..
begin {main program}

regs.AX:=$1235;
Intr($21,regs);
swapvectors;
//Проверка есть ли мы в памяти
if regs.AX<>$1234 then
begin
GetIntVec($21, OldInt21);
SetIntVec($E4, OldInt21);
SetIntVec($21, Addr(Int21));
//Установка своего обработчика
//старый прячем в неиспользуемое прерывание E4 (можно другое)
end;

keep(0);
end;


 
hunter   (2003-05-18 10:48) [5]

Ребяты ! Ну как ето все под винды организовать ?



Страницы: 1 вся ветка

Текущий архив: 2003.07.28;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
14-91816
Palladin
2003-07-13 12:43
2003.07.28
Неуравновешеным личностям не рекомендуется :)


14-91852
NightAngel
2003-07-08 01:41
2003.07.28
Тест - какого типа вы программист.


14-91827
Igor__
2003-07-09 14:39
2003.07.28
Формат JPEG


3-91681
Avreliy
2003-07-04 20:22
2003.07.28
Неправильная процедура.


14-91909
Дмитрий Терёхин
2003-07-12 10:47
2003.07.28
нужно сделать программу