Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Драйвер с нуля.  (Прочитано 128185 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
Sel
Злобный
Администратор

ru
Offline Offline

« : 27-08-2006 12:28 » 

Обсуждение статьи: «Драйвер с нуля.»
« Последнее редактирование: 06-09-2012 11:26 от Ochkarik » Записан

Слово не воробей. Всё не воробей, кроме воробья.
inf158704
Участник

ru
Offline Offline

« Ответ #1 : 06-09-2012 05:33 » new

BUILD: Examining c:\mydriver directory for files to compile.
Compiling c:\mydriver directory ********************
'nmake.exe /c BUILDMSG=Stop. -i NTTEST= UMTEST= NOLINK=1 386=1'
1>makefile(1) :  U1052: file 'c:\NTDDK\binmakefile.def' not found
1>Stop.
в логе
BUILD: nmake.exe /c BUILDMSG=Stop. -i NTTEST= UMTEST= NOLINK=1 386=1 failed - rc = 2
Linking c:\mydriver directory ********************
'nmake.exe /c BUILDMSG=Stop. -i LINKONLY=1 NOPASS0=1 NTTEST= UMTEST= 386=1'
1>makefile(1) :  U1052: file 'c:\NTDDK\binmakefile.def' not found
1>Stop.
BUILD: nmake.exe /c BUILDMSG=Stop. -i LINKONLY=1 NOPASS0=1 NTTEST= UMTEST= 386=1 failed - rc = 2
что не так сделал?
Записан
darkelf
Молодой специалист

Offline Offline

« Ответ #2 : 06-09-2012 05:38 » 

BUILD: Examining c:\mydriver directory for files to compile.
Compiling c:\mydriver directory ********************
'nmake.exe /c BUILDMSG=Stop. -i NTTEST= UMTEST= NOLINK=1 386=1'
1>makefile(1) :  U1052: file 'c:\NTDDK\binmakefile.def' not found
1>Stop.
имхо, должно быть что-то типа: c:\NTDDK\bin\makefile.def
возможно где-то потерялся обратный слеш.
Записан
inf158704
Участник

ru
Offline Offline

« Ответ #3 : 06-09-2012 10:00 » 

%SystemRoot%\system32\cmd.exe /c "cd c:\DDK_XP\bin &&setenv.bat c:\DDK_XP &&cd  c:\myDriver  &&build -ceZ "
создает папки obj с файлом _objects.mac и objfre с подкаталогом i386
лог тот же ничего непонимаю где искать то...
извините за назойливость но всетаки это мой первый драйвер Улыбаюсь после коврика мышки Улыбаюсь
Записан
darkelf
Молодой специалист

Offline Offline

« Ответ #4 : 06-09-2012 10:13 » 

посмотрите свой makefile, я как-то немного занимался драйверами в windows, у меня он выглядел следующим образом:
Код:
!INCLUDE $(NTMAKEENV)\makefile.def
к сожалению это уже было очень давно, и я уже не помню, я-ли его создавал, или какой-то там автомат, но если у Вас есть такой файл, и в нём пропущен "\" после $(NTMAKEENV), то сообщение примерно так и будет выглядеть, имхо..
Записан
Ochkarik
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 06-09-2012 11:19 » 

открыть консоль:
(должно было создаться при установке DDK)
"меню Пуск->Windows DriverKit->DDK2600->Buil Environments->Windows XP->Launch Windows XP x86 Free build"
оно же
C:\WINDOWS\system32\cmd.exe /k C:\DDK\6001.18001\bin\setenv.bat C:\DDK\6001.18001\ fre WXP
(или дебажные в зависимости от необходимости)
в открывшейся консоли просто выполнить
cd c:\"папка где лежат исходники"
build

в исходниках две ошибки:
"MyDrv.c"
в начале:
Код: (C)
#define NT_DEVICE_NAME      L"\\Device\\myDrv"
#define DOS_DEVICE_NAME            L"\\DosDevices\\myDrv"
- должны быть ДВОЙНЫЕ слеши!!!

ошибка два
файл "MyDrv.h":
Код: (C)
#define TEST_SMTH   CTL_CODE(FILE_DEVICE_myDRV,  FIRST_IOCTL_INDEX + 101,  METHOD_BUFFERED, FILE_ANY_ACCESS)
- записать ОДНОЙ строкой без переносов. либо использовать знак "\" для продолжения определения на другой строке.
Код: (C)
#define TEST_SMTH   CTL_CODE(FILE_DEVICE_myDRV,           \
                                                   FIRST_IOCTL_INDEX + 101,  \
                                                   METHOD_BUFFERED,            \
                                                   FILE_ANY_ACCESS)

кстати в коде приложения аналогичная ошибка (в тексте выше поправил)

и должно получится что то типа:
C:\temp\1>build -ceZ
BUILD: Compile and Link for x86
BUILD: Start time: Thu Sep 06 15:23:32 2012
BUILD: Examining c:\temp\1 directory for files to compile.
BUILD: Compiling and Linking c:\temp\1 directory
_NT_TARGET_VERSION SET TO WINXP
Compiling resources - mydrv.rc
Compiling - mydrv.c
Linking Executable - objfre_wxp_x86\i386\mydrv.sys
BUILD: Finish time: Thu Sep 06 15:23:33 2012
BUILD: Done

    4 files compiled - 2 Warnings
    1 executable built

C:\temp\1>
« Последнее редактирование: 06-09-2012 11:31 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
inf158704
Участник

ru
Offline Offline

« Ответ #6 : 07-09-2012 17:29 » 

darkelf, Ochkarik все получилось  Класс!
буду разбиратся дальше.
интересет экспорт функции из драйвера по анагогии с эксортом из dll
где бы посмотреть?
Записан
Ochkarik
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 07-09-2012 17:36 » 

не корректный вопрос. напрямую экспорт невозможен.
но то что вы хотели спросить:
к драйверу можно обращаться как к файлу (обработка IRP_MJ_CREATE, IRP_MJ_READ и т.д.)
+ дополнительный механизм - обработка IRP_MJ_DEVICE_CONTROL

PS читайте соломона-руссиновича! см список литературы в профильной ветке )
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
inf158704
Участник

ru
Offline Offline

« Ответ #8 : 07-09-2012 18:19 » 

Интересует расширение таблицы символических имен через _PELDR_AddExportTable в win98, по аналогии как это сделано в WMUSTUB.SYS или если это возможно так же ка сделано в ssm_cr.sys где также экспортируются 8 функций, правда незнаю там идет расширение таблицы или надо вызывать с указанием. WMUSTUB слишком сложен для меня а на ssm_cr.sys нет исходника Жаль
Записан
Ochkarik
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 08-09-2012 01:33 » 

PELDR_AddExportTable  - это ж VxD? каменный век)

PS про упомянутые примеры не слышал)
« Последнее редактирование: 08-09-2012 01:39 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines