Как создать драйвер - очень помогает книга Пенни Орвик, Гай Смит. В момент, когда ничего не понятно, спокойненько берем эту книгу , заливаем к ппимеру на 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