Лучше, чем Intel Manual volume 3 никто не расскажет
Все функции в общем-то перехватываются одинаково. Жизнь можно упростить, если перехватывать IoCreateFile, - тогда достаточно одного перехвата. Но...
Ну да
По всей видимости, бсод связан с тем, что система не может освободить залоченные страницы NTSTATUS status = STATUS_SUCCESS;...
ProbeForRead: { if (Length != 0) if (((ULONG_PTR) Address & (Alignment -1)) != 0)) { ExRaiseDatatypeMisalignment();...
UNICODE_STRING с именем имеет например вид: UNICODE_STRING name = {10, 10, (PVOID *) 1}; Это можно еще обойти, поставив if (addr >= 0x1000) А как...
Путано написано. Как я понял: сверху приходит IRP устройству, ты его отправляешь вниз, ждешь результат обработки. Пока не дождался результата,...
Дык всегда пожалуйста :)
А чем не устраивают существующие реал-таймовые юниксы? Посмотри здесь (там про real-time Windows XP Embedded):...
Выкинуть exporer можно, не залезая в ядро. Например, заменить его на cmd. А вот на счет своего планировщика... Если не ошибаюсь, планировщик...
Имхо, все зависит от цели - прикладной кодер, системщик, под-железо-писатель, ОСь. Но в любом случае без выполнения реальных проектов любая теория...
gina.dll - юзер-модная библиотека. Кроме того, можно выключить все кнопки в диалоговом окне таким образом, что и админ не сможет их вернуть, -...
Нельзя, потому что планировщик задач сильно завязан на это прерывание. Планировщик получает управление при переходе потока из режима ядра в режим...
Чтобы систему можно было свалить с юзер-мода? Не хотел бы я на такой машине работать...
Имхо, без API - это не более тонко, это топор в ядре :)
Перехватить обработчик прерывания 0x0E и в нем в зависимости от текущего контекста изменять трансляцию виртуальных адресов в физические.
Почти. void* pMdl; BOOLEAN locked1 = FALSE, locked2 = FALSE, locked3 = FALSE; if (ExGetPreviousMode() == UserMode) { pMdl1 =...
Без проблем
1) убери это условие; 2) выполняй Probe над аргументами, которые используешь в перехватчике (здесь тебе нужно сделать Probe для адресов...
if ((ULONG *)ObjectAttributes > MmUserProbeAddress) return STATUS_INVALID_PARAMETER; А если это условие не выполняется по какой-то причине?...
Имена участников (разделяйте запятой).