Re: разработка дров под nt
- From
- Alex Fedotov ()
- To
- Kirill Neznamov ()
- Date
- 2001-10-19T09:26:27Z
- Area
- SU.WINDOWS.NT.PROG
From: "Alex Fedotov" <me@alexfedotov.com>
Kirill Neznamov wrote:
> AF> Если это не драйвер, то что ты указываешь первым параметром
> AF> IoAttachDevice ?
>
> Да тоже что и в драйвере.Только в драйвере DeviceObject передается
> системой а здесь я его вычисляю сам примерно так:
> открываем порт (com2): zwCreateFile(&ntfile,...,..)
>
> ObReferenceObjectByHandle(&ntfile,...,&fileobject,...)
> ComDeviceObject=IoGetRelatedDeviceObject(fileobject)
> ^^^^^^^^^^^^^^
> получили 1ый параметр для функции IoAttachDevice.
> Приатачились к драйверу компорта вызовом IoAttachDevice().
> Но как дальше можно получить IRP пакет?
По моему, имеет место непонимание того, как работает driver layering в NT.
Функция IoAttachDevice имеет, как известно, три параметра:
NTSTATUS IoAttachDevice(
IN PDEVICE_OBJECT SourceDevice,
IN PUNICODE_STRING TargetDevice,
OUT PDEVICE_OBJECT *AttachedDevice
);
SourceDevice - это указатель на объект устройства которое будет layered
поверх другого устройства
TargetDevice - это имя устройства, поверх которого будет layered это самое
SourceDevice
AttachedDevice - принимает указатель на устройство TargetDevice (точнее, на
устройство, которое сейчас находится на верхушке стека)
Так вот, объясни нам, какое устройство поверх какого ты пытаешься to layer?
> 2ALL Меня сейчас вот что интересует.Есть прога TdiMon от SysInternals.
> Она без драйвера перехватывает все Tdi сообщения (TDI_SEND,etc..)
> Kто нить знает как она это делает? Исходники они не дают :(
Посмотри в ресурсы tdimon.exe. Драйвера в ресурсах (.sys и .vxd).
-- Alex Fedotov
--- ifmail v.2.15dev5
* Origin: Undisclosed (2:5020/400)