boot driver

Тема в разделе "WASM.BEGINNERS", создана пользователем Drinkerq, 1 апр 2011.

  1. Drinkerq

    Drinkerq New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2010
    Сообщения:
    3
    Здравствуйте.

    Имеется самый простой драйвер, который я пытаюсь загрузить при старте системы:

    Код (Text):
    1. #include <ntifs.h>
    2.  
    3. DRIVER_INITIALIZE DriverEntry;
    4. DRIVER_UNLOAD UnloadRoutine;
    5.  
    6. VOID UnloadRoutine(IN PDRIVER_OBJECT pDriverObject)
    7. {
    8.     int i;
    9.     for(i=0;i<100;i++);
    10. }
    11.  
    12. NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject,
    13.                       IN PUNICODE_STRING RegistryPath  )
    14. {
    15.     NTSTATUS status = STATUS_SUCCESS;
    16.     int i=0;
    17.        
    18.     DriverObject->DriverUnload = UnloadRoutine;
    19.  
    20.     for(i=0;i<100;i++);
    21.  
    22.     return status;
    23. }
    есть соответствующая ему запись в реестре:
    Код (Text):
    1. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\ZmbComm]
    2. "Type"=dword:00000000
    3. "Start"=dword:00000000
    4. "ErrorControl"=dword:00000000
    5. "ImagePath"=hex(2):5c,00,3f,00,3f,00,5c,00,43,00,3a,00,5c,00,57,00,49,00,4e,00,\
    6.   44,00,4f,00,57,00,53,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,\
    7.   00,5c,00,64,00,72,00,69,00,76,00,65,00,72,00,73,00,5c,00,5a,00,6d,00,62,00,\
    8.   43,00,6f,00,6d,00,6d,00,2e,00,73,00,79,00,73,00,00,00
    9. "DisplayName"="testComm"
    10. "Tag"=dword:00000002
    11. "Group"="Test"
    12.  
    13. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\ZmbComm\Security]
    14. "Security"=hex:01,00,14,80,90,00,00,00,9c,00,00,00,14,00,00,00,30,00,00,00,02,\
    15.   00,1c,00,01,00,00,00,02,80,14,00,ff,01,0f,00,01,01,00,00,00,00,00,01,00,00,\
    16.   00,00,02,00,60,00,04,00,00,00,00,00,14,00,fd,01,02,00,01,01,00,00,00,00,00,\
    17.   05,12,00,00,00,00,00,18,00,ff,01,0f,00,01,02,00,00,00,00,00,05,20,00,00,00,\
    18.   20,02,00,00,00,00,14,00,8d,01,02,00,01,01,00,00,00,00,00,05,0b,00,00,00,00,\
    19.   00,18,00,fd,01,02,00,01,02,00,00,00,00,00,05,20,00,00,00,23,02,00,00,01,01,\
    20.   00,00,00,00,00,05,12,00,00,00,01,01,00,00,00,00,00,05,12,00,00,00
    Ключ Start = SERVICE_BOOT_START(0x0).
    После запуска системы в системном логе появляется следующее сообщение об ошибке:
    Код (Text):
    1. Тип события:  Ошибка
    2. Источник события:    Service Control Manager
    3. Категория события:  Отсутствует
    4. Код события:  7026
    5. Дата:       01.04.2011
    6. Время:     12:51:58
    7. Пользователь:       Н/Д
    8. Компьютер: DENIS
    9. Описание:
    10. Сбой при загрузке драйвера(ов) перезагрузки или запуска системы:
    11. testComm
    При значении ключа Start = SERVICE_SYSTEM_START(0x1) он успешно грузится.

    Я подумал что дравер импортирует функции которые еще не доступны на этом этапе загрузки, но в таблице импорта у выше приведенного драйвера только переменная KeTickCount. Драйвер лежит в С:\Windows\system32\drivers. Компилировал с помощью WDK 7600, Windows Xp sp3.

    Собственно вопрос в том почему драйвер не загружается при Start = SERVICE_BOOT_START. Видимо я что то упускаю )
     
  2. ntkernelspawn

    ntkernelspawn New Member

    Публикаций:
    0
    Регистрация:
    17 дек 2010
    Сообщения:
    61
    Drinkerq
    Причем сдесь импорт? наверное рановато писать boot дрова ...

    http://www.osronline.com/showThread.cfm?link=76970