Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Использование драверов под w2k

2.1K
12 февраля 2003 года
OxMDN
17 / / 13.12.2002
Знает ли кто нить как использовать функции
дравера , да и ваще просто обращаться к драйверу
какого либо устройства.

Конкретно:
Какое имя использовать при получении handle
при помощи CreateFile() , и еще какие
Device Input and Output Control Codes я должЁн
использовать в DeviceIOControl().
Звучит конечно глупо - типа мой драйвер , я и знать должен - но я просто взял пример fdc дравера
из ddk и пытаюсь понять, как можно поиметь функциональность функций в нем описанных. :(
Если кто возьметься помочь ,конечно, вышлю исходники.
Заранее спасибо.
2.2K
20 февраля 2003 года
anbezr
11 / / 28.01.2003
#define IOCTL_ADDR CTL_CODE \
(FILE_DEVICE_UNKNOWN, 0x800, METHOD_BUFFERED,FILE_ANY_ACCESS)
это пример...
а в общем случае:
биты
0,1 - тип передачи см.METHOD_BUFFERED
2-13 - функциональный код - 0х800..0хFFF
14,15 - доступ см. FILE_ANY_ACCESS
16-30 - тип устройства см. FILE_DEVICE_CD_ROM
31 - файловый флаг 1 для дрв. файловой системы.

а на счет имени -
drvHandle = CreateFile('\\\\.\\Win32Name',
т.е. то имя, которое ты указал в драйвере в кач-ве имени в пр-ве Win32

Расскажи пож, как ты компилируешь драйвер
2.1K
21 февраля 2003 года
OxMDN
17 / / 13.12.2002
Цитата:

а на счет имени -
drvHandle = CreateFile('\\\\.\\Win32Name',
т.е. то имя, которое ты указал в драйвере в кач-ве имени в пр-ве Win32

Расскажи пож, как ты компилируешь драйвер



Откомпилил я стандартный пример из DDK стандартного драйвера w2k для работы с floppy под w2k. Даже полученый sys переписал в папку с драйверами виндовыми - все работает. Только вот у меня трабла с тем как, его теперяча использовать то? То имя про которое ты говоришь я не знаю где задано.

Самое-то обидное, что я не до конца понял идеологию написания дров. В некоторых примерах
создают объекты с наличием метода DriverEntry в некоторых - просто API из функций в качестве одной из них есть и DriverEntry. В документации ваще хлам - не разобрать :(

2.2K
25 февраля 2003 года
anbezr
11 / / 28.01.2003
Извини, ято молчал - выходные...
Проблема с именем в связывании имен драйвера для приложений и для ядра. эти имена д.б. связаны след образом:
#define NT_DEVICE_NAME L"\\Device\\DeviceName"
#define WIN_DEVICE_NAME L"\\??\\WinName"
L означает Unicode

DriverEntry
UNICODE_STRING usNtName;
UNICODE_STRING usWinName;

RtlInitUnicodeString(&usNtName, NT_DEVICE_NAME)
RtlInitUnicodeString(&usWinName, WIN_DEVICE_NAME)

IoCreateSymbolicLink(&usWinName, &usNtName)
Теперь имена связаны и существуют, можно создавать объект драйвера
IoCreateDevice(... &usNtName
у меня это пока не работает - в приложение не передаются данные, хотя код драйвера выполняется.
http://www.wasm.ru/publist.php Драйверы режима ядра Windows 2000 - классная дока - многое есть там.
P.S. никогда не знал, что откомпилить так сложно, но все-таки получилось :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог