[n00b] проблема при загрузке простейшего драйвера

Тема в разделе "WASM.NT.KERNEL", создана пользователем nanoo, 6 авг 2010.

  1. nanoo

    nanoo New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2010
    Сообщения:
    23
    Добрый день!
    Пишу дрова для линукса.
    Возник вопрос написать для виндовс.
    Скачал ДДК, поставил. Покурил доки и выдал такое:
    Код (Text):
    1. #include<ntddk.h>
    2.  
    3. DRIVER_INITIALIZE DriverEntry;
    4.  
    5. NTSTATUS DriverExit(IN PDRIVER_OBJECT drv)
    6. {
    7.     DbgPrint("lpi: exit.");
    8.     return STATUS_SUCCESS;
    9. }
    10.  
    11. NTSTATUS DriverEntry(IN PDRIVER_OBJECT drv, IN PUNICODE_STRING strRegistryPath)
    12. {
    13.     NTSTATUS ret;
    14.     ret = STATUS_SUCCESS;
    15.     drv->DriverUnload = DriverExit;
    16.     DbgPrint("lpi: enter.");
    17.     return ret;
    18. }
    sources выглядит так
    Код (Text):
    1. TARGETNAME = MYDRIVER
    2. TARGETTYPE = DRIVER
    3. TARGETPATH = obj
    4. KMDF_VERSION_MAJOR = 1
    5. SOURCES = main.c
    После компиляции копирую mydriver.sys в windows/system32/mydrivers/mydriver.sys
    В консоли даю команду
    Код (Text):
    1. sc create mydrv bitpath= system32/mydrivers/mydriver.sys type= kernel start= demand
    Запускаю dbgview и даю команду
    Код (Text):
    1. sc start mydrv
    В ответ:
    Код (Text):
    1. [SC] start service failed 123:
    2. the filename, directory name or volume label syntax is incorrect.
    Вопрос: Почему sc не хочет загружать мой драйвер?
    Спасибо.

    п.с. видновс на виртуальной машине. антивируса нет. ddk 7600.16385.1
    п.с.с. проверить правильность путей к файлам не предлагать.
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    попробуй заюзать альтернативные загрузчики.
    osrloader, kmdmanager.
     
  3. IceCrashLdr

    IceCrashLdr New Member

    Публикаций:
    0
    Регистрация:
    29 июн 2010
    Сообщения:
    193
    sc create mydrv bitpath= windows/system32/mydrivers/mydriver.sys type= kernel start= demand
    ?
     
  4. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    зачем заморачиваться с
    Код (Text):
    1. sc create mydrv bitpath= system32/mydrivers/mydriver.sys type= kernel start= demand
    Прислушайся к совету n0name
     
  5. nanoo

    nanoo New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2010
    Сообщения:
    23
    Закоментировал строку KMDF_VERSION_MAJOR = 1 в source (я так понимаю, теперь он не wdf, а обычный wdm будет), перекомпилировал и загрузил при помощи KmdManager - работает. sc - нет.
    Всем спасибо за помощь!

    п.с. Всё таки не совсем понятно, почему штатное средство загрузки драйверов (sc) не работает.
     
  6. dfrsa

    dfrsa New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2010
    Сообщения:
    88
    потому-что filename, directoryname или volumelabelsyntax - incorrect
    Кривые руки или шаблонное мышление линуксоида? ;)
     
  7. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    > п.с. Всё таки не совсем понятно, почему штатное средство загрузки драйверов (sc) не работает
    проверить можно достаточно просто.
    заюзать утилиту filemon (а лучше современную замену - procmon) и поглядеть, куда кто лезет, и какие ключи создаются.
     
  8. nanoo

    nanoo New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2010
    Сообщения:
    23
    Здесь подробнее пожалуйста.
    filename - я так понимаю, имя файла драйвера (sys файл, для конкретики).
    directoryname - путь к драйверу (в моём случае system32/mydrivers/).
    volumelabelsyntax - это что? Имя диска?
    Извините за возможно глупый вопрос, но всё-таки, что я сделал не так?
    Если вам нужна более подробная информация о моих дейсвиях - с радостью её предоставлю.
    Спасибо.

    п.с. Я не собираюсь разводить здесь холливар win vs lin, мне просто интерестно узнать о своих ошибках. Именно за этим я сюда и пришёл.
     
  9. nanoo

    nanoo New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2010
    Сообщения:
    23
    Простите, а чем это отличаеться от посмотреть в regedit?
     
  10. ziral2088

    ziral2088 New Member

    Публикаций:
    0
    Регистрация:
    16 авг 2009
    Сообщения:
    283
  11. nanoo

    nanoo New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2010
    Сообщения:
    23
    А на что указывает driverpath?

    Если на drivers, то точно не заработает, ибо мой драйвер лежит в system32/mydrivers/
     
  12. nanoo

    nanoo New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2010
    Сообщения:
    23
    Код (Text):
    1. sc create mydrv bitpath= system32/mydrivers/mydriver.sys type= kernel start= demand
    2.  
    3. [SC] Create service SUCCESS
     
  13. ziral2088

    ziral2088 New Member

    Публикаций:
    0
    Регистрация:
    16 авг 2009
    Сообщения:
    283
    Создание сервиса\драйвера и его запуск - разные вещи. Создание сервиса\драйвера через реестр можно и ручками провести. Главное его запустить. Попробуй в папку драйверов кинуть и путь полный указать.
     
  14. nanoo

    nanoo New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2010
    Сообщения:
    23
    Спасибо кеп!

    Уже пытался, симптомы теже.
    Спасибо.
     
  15. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    ну тогда приведи что записано в реестре.
    да и можешь посмотреть возможные примере там же для валидных драйверов.
     
  16. nanoo

    nanoo New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2010
    Сообщения:
    23
    http://yfrog.com/e4consolep - создание и неудачная попытка запуска mydrv
    http://yfrog.com/mdconsoleipfwp - запуск и остановка службы ip6fw
    http://yfrog.com/0dregeditipfwp - кусок реестра, ответственный за mydrv
    http://yfrog.com/miregeditmydrvp - кусок реестра, ответсвенный за ip6fw
     
  17. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    обратные слэши?
     
  18. nanoo

    nanoo New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2010
    Сообщения:
    23
    Я так и думал, это какая-нибудь мелочь.
    Спасибо за советы и помощь.