Главная страница
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.009 c
14-91863
Nikolay M.
2003-07-11 14:28
2003.07.28
Как удалить warning


1-91743
Dennis S
2003-07-15 12:13
2003.07.28
Как удалять следующие вещи ?


14-91861
Proxy_HELP
2003-07-10 13:04
2003.07.28
Proxy


6-91794
paul_77
2003-05-22 17:23
2003.07.28
? как считать некоторый параметр из реестра


8-91777
БРУТЪ
2003-04-03 14:57
2003.07.28
Преобразование