Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.07.28;
Скачать: [xml.tar.bz2];

Вниз

Как отследить 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.006 c
14-91869
clickmaker
2003-07-11 11:33
2003.07.28
Win 98 не выключает комп после апгрейда мамы


7-91930
iliann
2003-05-16 22:50
2003.07.28
мышь


14-91914
Вован
2003-07-11 14:28
2003.07.28
У кого нибуть есть сорцы по перехвату API функций?


1-91741
Igit
2003-07-13 12:34
2003.07.28
Извлечение ресурсов.


3-91665
АТ
2003-07-04 15:47
2003.07.28
Надо сравнить в таблице значения типа Date...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский