Я пытаюсь научиться кодировать драйверы Windows, к сожалению, информации мало, и иногда мне трудно получить полную картину от чтения страниц MSDN
.
Сказав это, пару недель назад я обнаружил довольно простой пример кода, который регистрирует обратный вызов с помощью одной из вышеупомянутых функций и выводит некоторую информацию в консоль отладки при создании процесса, я слегка его изменил просто распечатать имя исполняемого файла и PID . Я планировал сохранить его для дальнейшего использования, но в какой-то момент я удалил код по ошибке, и теперь, когда я снова попытался реализовать то же самое, я не могу заставить его работать, каждый раз, когда я пытаюсь загрузить драйвер, я просто получаю ACCESS DENIED
ошибка.
Вот NotifyRoutine
VOID PsCreateProcessNotifyEx_CB(IN PEPROCESS Process, IN HANDLE ProcessId, IN PPS_CREATE_NOTIFY_INFO CreateInfo)
{
if(CreateInfo)
DbgPrint("PID = %d\r\n", ProcessId);
}
Я регистрирую обратный вызов в DriverEntry
, как это.
NTSTATUS NtStatus = PsSetCreateProcessNotifyRoutineEx(PsCreateProcessNotifyEx_CB, FALSE);
Затем также удалить в DriverUnload
, установив для параметра Remove значение TRUE
Хотелось бы найти исходную страницу, где я получил код, на который я впервые ссылался, но я искал несколько часов и пробовал несколько разных вещей, но я просто не могу заставить его работать сейчас.
Кто-то, пожалуйста, укажите, что мне не хватает.