Почему не выполняется процедура DriverEntry моего драйвера имеющая следующий вид : DriverEntry proc pDriverObject:PDRIVER_OBJECT, pusRegistryPath:PUNICODE_STRING mov eax, STATUS_DEVICE_CONFIGURATION_ERROR call AllocConsole push offset vvod call SetConsoleTitleA push 2000d call Sleep push 0 call ExitProcess DriverEntry endp end DriverEntry Вызывающая ее программа имеет следующий вид : .386 .model flat, stdcall option casemap:none include I:\Alex\Driver\KmdKit\include\windows.inc include I:\Alex\Driver\KmdKit\include\kernel32.inc include I:\Alex\Driver\KmdKit\include\user32.inc include I:\Alex\Driver\KmdKIt\include\advapi32.inc includelib I:\Alex\Driver\KmdKit\lib\kernel32.lib includelib I:\Alex\Driver\KmdKit\lib\user32.lib includelib I:\Alex\Driver\KmdKit\lib\advapi32.lib include I:\Alex\Driver\KmdKit\Macros\Strings.mac .data sl dd 0 .code start proc local hSCManager:HANDLE local hService:HANDLE local acDriverPath[MAX_PATH]:CHAR invoke OpenSCManager, NULL, NULL, SC_MANAGER_CREATE_SERVICE .if eax != NULL mov hSCManager,eax push eax invoke GetFullPathName, $CTA0("alexandr.sys"), sizeof acDriverPath, addr acDriverPath, esp pop eax invoke CreateService, hSCManager, $CTA0("alexandr"), $CTA0("this is simplest "), \ SERVICE_START + DELETE, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, \ SERVICE_ERROR_IGNORE, addr acDriverPath, NULL, NULL, NULL, NULL, NULL .if eax != NULL mov hService, eax invoke StartService, hService, 0, NULL .endif invoke DeleteService, hService invoke CloseServiceHandle, hService .else invoke GetLastError mov sl,eax invoke MessageBox, NULL, offset sl, NULL, MB_ICONSTOP invoke CloseServiceHandle, hService .endif invoke CloseServiceHandle, hSCManager .else invoke MessageBox, NULL, $CTA0("Can't connect to Service Control Manager."), \ NULL, MB_ICONSTOP .endif invoke ExitProcess, 0 start endp Драйвер нормально регестрируется но StartService возвращает ноль
Вызывай GetLastError и смотри, что за ошибка. P.S. Оформляй код при помощи кнопки "Код" (седьмая по счёту над окном ввода текста сообщения).
cresta Вызывая GetLastError сразу после StartService возвращает ERROR_PROC_NOT_FOUND Что бы это могло означать Помогите
Что за странный код? Ничего не путаешь? Может быть ERROR_PATH_NOT_FOUND? Проверь ещё раз. Если так, то файл не найден, проверь путь, указываемый при создании сервиса и наличие .sys по этому адресу. При такой ошибке естественно, никакая DriverEntry выполнена не будет. Непосредственно перед CreateService проверь содержимое acDriverPath
Проверил перед CreateService путь абсолютно правильный сразу после StartService возвращает ERROR_INVALID_HANDLE CreateService почемуто возвращает ноль а не хендл Помоги
Я щото никак не могу понять как тут файл прицепить подскажи если хочеш напиши на емейл вышли там всего лиш 3кб
Все понял как! в Create.asm вызов и регистрация драйвера ALEXANDER.SYS САМ ДРАЙВЕР ALEXANDER.BAT ЕГО КОД на всякий случай и его екзешник кинул 917546168__Driver.zip
Эй, приятель, ты что творишь ? Какие такие AllocConsole, SetConsoleTitleA, Sleep, ExitProcess могут быть в DriverEntry ??? Это драйвер, а не прога ))) Никаких винапи. Никаких kernel32, advapi32, user32 Всё, что у тебя есть - это ntoskrnl.lib, hal.lib. Больше ничего. Никаких других либ. Естественно ничего не запустится и не выполнится: тот файл .sys, который ты получил, на самом деле никаким драйвером не является.
Загляни в папку kmdkit\w2k, там есть файлы ntoskrnl.inc, hal.inc. Посмотри, какие функции в них есть. Это всё, что ты можешь использовать. Никаких окон, никаких консолей, никакой визуальности.