книга Орвик в помощь

Как создать драйвер - очень помогает книга Пенни Орвик, Гай Смит. В момент, когда ничего не понятно, спокойненько берем эту книгу , заливаем к ппимеру на eBook, выбираем время и читаем не торопясь, делаем заметки. Одного дня не хватит.

Самое прикольное - надо изучать командную строку и утилиту build, ибо драйверы не собираются в VisualStudio и сама Windows кстати тоже собирается через build.

В папочке C:\WinDDK\7600.16385.1 собрано все : и инструменты , и примеры.

KMDF - драйверы пишутся на C (тут С++ может налажать с выделением памяти не туда куда нужно).

UMDF - драйверы на С++ , там на COM объектах замес, интерфейсы и все такое...

Нас интересует UMDF драйвер типа VirtualSerial и к нему присобачить TCP слушающий поток.

Так вот UMDF драйвер это dll файл, inProc тип, т.е. он не создает своего потока , а работает в потоке вызывающего хоста.

Делать поток для прослушивания TCP порта будем в Initialize при создании драйвера. Тупо смотрим пример tcp2com.

Привожу заметки сумасшедшего, как есть пока без корректировки:

похоже драйвер не создает своего потока

tlist утилита
примеры по ходу книги:
skeleton umdf
fx2_driver umdf

DBH
файлы идентификаторов
отладочная версия виндоус (вроде как есть такая штука)
OSR learning kit
фоновый режим - драйверам
WDM DDI низший уровень
ДРАЙВЕР как одностороннее зеркало

FDO functional dev.object
PDO phisical device object
FIDO filter device objec
IRP method_buffered
ISR interrupt service routing
DFC deferred proc call
IRQL interrupt request level
до 51 страницы дочитал далее бегло промотрел

------------------

DISPATCH_LEVEL
DIRQL
-------------------
аппаратные ресурсы и прерывания Глава 16 - для UMDF тута ничего не надо
read_port_xxx macro write_port_xxx

write/read _register_xxx

функции обратного вызова фов
EvtDtiverDeviceAdd:
wdf_pnppower_event_callbacks structure

EvtDevicePrepareHardware
......
EvtInterruptIsr return false/true = наше устройство вызвало прерывание?
EvtInterruprDpcq
......
EvtDeviceD0Exit
...
EvtDeviceReleaseHardware

usb,1394,bt не генерируют апп.прер.!


HAL hardware abstract layer

MSI Message Signaled Interrupt

глава18 com umdf
inProc dll выполняется в потоке хоста,с++

DllMain
DllGetClassObject
об'екты обратного вызова - интфейсы
IWDFxxxx- об'екты umdf

CreateRequest
QueryInterface

DllMain может вызываться для создания потока!?

Initialize - д/б открытый метод (вызывается извне) т.к. может зак.неудачей

kmdf ntddk.h wdf.h
umdf wudfddi.h

----------- сборка --------------------
build _ только ей собираются дрова
и сама виндоус тоже только ей. Только командная строка.

makefile - ребята изучает все связано с makefile (похоже на ближайшее столетие ничего не поменяется)
inx см.stampinf.exe
makefile.inc
MOF для WMI
Dirs

build -gce только текущую папку с Sources остальные только через .lib

nmake all

Файлы для скачивания