Re: filter(intermediate) driver

From
Kirill Neznamov (2:5025/32.88)
To
ALL
Date
2002-01-18T00:07Z
Area
SU.WINDOWS.NT.PROG
Доброе время суток ALL!

Итак как я понял у народа обитающего здесь предложений нет.Есть у меня еще
одна идея: известно что hal.dll экспортирует функции :

WRITE_PORT_BUFFER_UCHAR
WRITE_PORT_BUFFER_ULONG
WRITE_PORT_BUFFER_USHORT
WRITE_PORT_UCHAR
...........ULONG
...........USHORT
READ_PORT_BUFFER_UCHAR
.................ULONG
.................USHORT
READ_PORT_UCHAR
..........ULONG
..........USHORT

Ну и подумал я а что если ядро использует эти функции на ring0 для чтения
записи портов? Взял я любимый softice и проделал следующее : ставлю бряк
сначала на все функции семейства WRITE_PORT и запускаю дозвонку в
инет.Брякуюсь
в на функции  семейства WRITE_PORT_BUFFER.WRITE_PORT_UCHAR и другие ядром не
вызываются.Затем повторяю те же действия с READ_PORT_ляляля.Здесь ситуация
хуже - постоянно брякуюсь на функции типа READ_PORT_UCHAR.READ_PORT_BUFFER_ляля

как я понял не используется.Итак какие можно сделать выводы?
 Ядро использует для чтения и записи в порты cоответственно функции -

READ_PORT_UCHAR
READ_PORT_USHORT
READ_PORT_ULONG
WRITE_PORT_BUFFER_UCHAR
WRITE_PORT_BUFFER_ULONG
WRITE_PORT_BUFFER_USHORT
.
Теперь пишем драйвер который перехватывает эти функции.Но мне непонятно как
определить что данные пришли без присоединения к стеку драйвера серийныых
портов и вообще без всякого открытия ком порта на ring3? Пока только есть
дурная идея - user mode aplication в цикле все время делает ioctl запрос
IS_READ_OR_WRITE_OPERATION_DONE,а драйвер когда получает такой ioctl проверяет

было ли обращение к этим функциям или нет.Если было то посылает данные.На мой
взгляд все это как то очень криво.Kак еще можно решить эту проблему?

P.S. Еще один такой маленький вопросик :) Где в ddk определены типы
PUCHAR,PUSHORT? PULONG я нашел с ним все понятно.А с PUCHAR нестыковка - вроде
как PUCHAR это указатель на CHAR а в софтайсе когда я бряк ставил на
WRITE_PORT_BUFFER_UCHAR оказалось что PUCHAR все показывает как минимум на
ULONG (у меня там было e8 03 00 00).Где правда?

P.P.S Есть еще одна идея заключающаяся в том чтобы мой драйвер коннектился к
стеку драйвера модема.Будет ли такое работать? Если есть у кого то исходники
такого типа - замыльте плиз.

С наилучшими пожеланиями,
                         KiR                    [Team BuZZ] [Team GoA ]
--- TM-Ed 1.14+
 * Origin: Кто не хочет - ищет причину,кто хочет - ищет возможность.                                 Goa_Dream_Station (2:5025/32.88)