Таймер
Кто может подсказать, как перехватывать прерывания от таймера? Мне нужно написать резидентную программу на Assemblere, которая через 1 минуту после запуска выводила какое-нибудь сообщение на экран. Может у кого-нибудь есть похожая прграмма?
Это довольно просто. Устанавливаете свой вектор прерывания INT 08h (через функцию 25h прерывания 21h), и оно будет вызываться 18.1 раз в секунду. Считаете число вызовов и через соответствующее время делаете то, что вам нужно. Только не забудьте после этого восстановить старый вектор (ведь прерывание могут использовать и другие программы).
AlexII
Есть такая апи - GetTickCount. Дает весьма плавающие тики, причем сильно зависит от числа задач, но на асме работает достаточно стабильно (вызовы в цикле примерно по ~220 мкс на P120,win98). Реально эта апи - выдача значения ячейки, которую обновляет система(ф-ция Update_System_Clock) - ось и комп те же - с частотой примерно ~180мкс. Параметры, судя по всему, зависят от настройки системой таймера.
Отсюда вроде бы следует, что максимальная частота прерываний в системе вообще - около 5000 прерываний/секунду. Не думаю, что из VXD(WDM) можно перепрограммировать таймер в вин на другую частоту ... Хотя...
Инфу по написанию драйверов под win32 можно получить из DDK.