Great А нафига? Аффтар вроде не ставил задачу маскировать прерывания на всех процессорах. Может быть перед ответом стоит иногда читать содержимое топика?
Мужчины, не надо кипятиться. Уточняю, мне требуется чтобы код выполнился на том самом процессоре где был сброшен WP-bit. Работа с данными из различных потоков отсутствует.
Если на другом процессоре возникнет прерывание, выполнится ISR - код в которой сможет писать аналогично твоему коду.
Сорри, запутался малость - все верно получается, если CLI у тебя на данном процессоре и WP сброшен в cr0 твоего процессора, писать можно будет на твоем процессоре.
А есть еще другой вариант. Автор же не написал, что за код изменяется. Если этот код может выполняться в момент модификации, то это вариант для сбоя №1. Допустим, код расшифровываем свой - тогда cli/sti действительно защитит - ведь мы монопольно владеем памятью. Второй вариант для сбоя - модифицированный код попал в кеш. После возвращения из DriverEntry может случится исполнение этого кода на другом процессоре и тоже из кеша ( уже другого ). Результат - исполнение процессором мусора и BSOD.
а по стеку не понятно в чем дело? driver verifier включали? Скорее всего, ошибка банальная - например, когда расшировывали код переполнили буфер.
2TarasCo понимаешь, не всегда дрова вылетают. я думаю что-то с ирпами накосячил. по стеку сложно, т.к. софтайса нет, а windbg мне не помощник, т.к. у меня дравер последовательного порта
Great я пробовал локально дебажить, он драйвер com-порта не грузит и крэш не создаёт... видимо, потому что я с драйвером диска работаю
локально с windbg это как? Причин может быть много... файла подкачки может быть недостаточно, либо его нет вообще, либо он расположен не на системном диске (где каталог Windows лежит). Насчет драйвера диска - а че ты с ним делаешь то?
локально можно начиная с winxp. в boot.ini добавляешь ключ /debug - тогда отладчик грузится с системой. а в виндбг выбираешь file->kernel debug, а затем local. а с драйвером диска работаю чтобы получить его параметры такие как serial number и model.
а ну это вряд ли причина отказа в записи крешдампа и много можно так надебажить? чтото я сомневаюсь что из юзермодного гуи можно отлаживать чтото ядерное.. надо глянуть будет
Я тут походу накосячил... Создаю синхронный ирп и устанавливаю процедуру завершения. Это лишнее. А косяки могут быть из-за этого ?