Функция 69, подфункция 9 - установить/снять аппаратную точку останова.
Параметры:
eax = 69 - номер функции
ebx = 9 - номер подфункции
ecx = идентификатор потока
dl = индекс точки останова, от 0 до 3 включительно
dh = флаги:
если старший бит сброшен - установить точку останова:
биты 0-1 - условие:
00 = точка останова на выполнение
01 = точка останова на запись
11 = точка останова на чтение/запись
биты 2-3 - длина; для точек останова на исполнение должно быть
00, в противном случае одно из
00 = байт
01 = слово
11 = двойное слово
esi = адрес точки останова; должен быть выровнен
соответственно длине (т.е. должен быть чётным для
точек останова на слово, кратен 4 для двойного слова)
если старший бит установлен - сбросить точку останова
Возвращаемое значение:
eax = 0 - успешно
eax = 1 - ошибка во входных данных
eax = 2 - (зарезервировано, никогда не возвращается
в текущей реализации) с этим индексом уже установлена
глобальная точка останова
Замечания:
Процесс должен быть загружен для отладки (как указано в
общем описании).
Аппаратные точки останова реализуются через DRx-регистры
процессора, отсюда все ограничения.
Функция может переустановить ранее установленную ей же
точку останова (никак не сообщая об этом).
Ведите список установленных точек останова в отладчике.
Срабатывание точки останова заключается в генерировании
отладочного исключения #DB, о котором система сообщает отладчику.
Точка останова на запись и чтение/запись срабатывает после
выполнения вызвавшей её инструкции.
KOS API | Содержание DockPack
Pterox' DocPack R4.1. Last Edition: 04.05.2010. История выпусков