wxqcs
驱动牛犊
驱动牛犊
  • 注册日期2001-06-27
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3063回复:7

NDIS与底层驱动

楼主#
更多 发布于:2001-06-28 00:20
本人最近在用NTDDK开发一个网络加密驱动。在NDIS过滤层驱动中,将接受的数据包中的数据从IP包中取出,然后调用底层的PCI设备驱动,对数据进行加密,然后,重新组织IP包。底层PCI设备驱动已经完成,经API测试,write和read一切正常。但是在NDIS过滤层驱动中,怎样调用底层的PCI设备驱动?我是这样调用的,但结果却造成了DOWN机。
   IO_STATUS_BLOCK ioStatus;
    PIRP newIrp;
    PIPSYS_DEVICE_EXT devExt = (PIPSYS_DEVICE_EXT)DeviceObject->DeviceExtension;
NTSTATUS status;
    KEVENT   event;
    LARGE_INTEGER   startOffset ;


    KeInitializeEvent(&event, NotificationEvent, FALSE);

    //
    // Build IRP to read MBR.
    //

startOffset.QuadPart = (LONGLONG) 0;

    newIrp = IoBuildSynchronousFsdRequest(IRP_MJ_WRITE,
devExt->PcicardDeviceObject ,
pIoBuffer,
writelen,
&startOffset,
&event,
&ioStatus );

    if (!newIrp) {
KdPrint( ("IO allocate irp failed\n") ) ;
return STATUS_INSUFFICIENT_RESOURCES ;
    }

    //
    // Pass request to pcicard driver and wait for request to complete.
    //

    status = IoCallDriver(devExt->PcicardDeviceObject,
                          newIrp);

    if (status == STATUS_PENDING) {
        KeWaitForSingleObject(&event,
                              Suspended,
                              KernelMode,
                              FALSE,
                              NULL);
        status = ioStatus.Status;
    }

另:

    我的NDIS驱动加载到系统后,并没有马上分析并加密数据,而是通过一个API程序通知其开始加密。在执行加密之前,先执行命令ping ,调用底层PCI设备驱动,有时可以加密若干个包,最后在PCI设备驱动的DPC中执行IoCompleteRequest(irp, IO_NO_INCREMENT)时DOWN机;如果不执行ping命令,则第一次就在调用IoBuildSynchronousFsdRequest时DOWN机。
    谁能帮助我?急!急!急!谢谢!


我的电邮是wxqcs@263.net

[wxqcs 编辑于 2001-06-28 00:26]

最新喜欢:

mapoflmapofl
wangbo
驱动牛犊
驱动牛犊
  • 注册日期2001-06-11
  • 最后登录2002-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-06-28 11:29
你试试用ExCreateCallback,ExRegisterCallback,ExNotifyCallback这些函数把数据做参数传递过去,可不可以。
神仙?妖怪? 谢谢!
lxf
lxf
驱动小牛
驱动小牛
  • 注册日期2001-03-26
  • 最后登录2013-05-04
  • 粉丝4
  • 关注0
  • 积分76分
  • 威望30点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-07-03 10:02
你的PCI驱动有没有把IRP处理完后交还?
底层PCI设备驱动经API测试时,有没有用数据冲一下?
你的IRP有没有经过队列处理?
别着急,慢慢来!
h_happy
驱动牛犊
驱动牛犊
  • 注册日期2001-05-09
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-07-04 10:29
说句比较外行的话,
看起来像是Irp根本不存在造成的.
2000下调试的吗?把出错代码贴出来,印证一下.要不怎么知道怎么回事?
每天都有一堆一堆的问题出现. 总希望有一个牛人出现在我的面前. 每个工程师的梦想大概也不过如此.
rascal
驱动牛犊
驱动牛犊
  • 注册日期2001-07-05
  • 最后登录2005-02-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-07-06 15:27
可不可以和我联系一下,我要做的正好也是这个东西
需要在98底下提取IP包,做加密!!
我对这个驱动程序还是一点都摸不着头脑呢
希望能和大家一起进步!!呵呵!
小弟我的号是:564215
谢谢大家!!!
是我吗,不是吧!?
h_happy
驱动牛犊
驱动牛犊
  • 注册日期2001-05-09
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-07-06 15:39
这是什么号码?不像电话号码啊.
不成是oicq?
我们公司重点封堵的东东.
每天都有一堆一堆的问题出现. 总希望有一个牛人出现在我的面前. 每个工程师的梦想大概也不过如此.
rascal
驱动牛犊
驱动牛犊
  • 注册日期2001-07-05
  • 最后登录2005-02-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2001-07-06 17:02
H-HAPPY果然是成天趴在网上的牛人
小弟不才正是用的QQ,只因为实验室这种小地方也用不着封啦
你在北京吗!?
特别想找个高手问问这个东西到底怎么回事的
以前一直在UNIX下混着,到现在我弱得居然连别人的贴子都看不大懂
真想一头撞死得了!
各位大哥一定要挽救一下我这个可以教育好的富农子弟呀!!
是我吗,不是吧!?
h_happy
驱动牛犊
驱动牛犊
  • 注册日期2001-05-09
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2001-07-11 13:44
What? 客气.竟然有人拿我当牛人?我身上可没有牛肉.
unix哥们可是没有用过.linux都没有玩过.好在不影响windows的使用.
(一头汗啊)
看你的号码位数,好像是个老油条哦.大家不用客气.等楼上的把出错信息贴出来再分析吧.
你的是什么问题?拿出来摆摆,大家也好讨论啊.我还没有搞过过滤层的东东呢.反正我知道,你的东东可以转行做黑客工具.我喜欢.等你写好了,共享一套.我正好想做把刀呢.
每天都有一堆一堆的问题出现. 总希望有一个牛人出现在我的面前. 每个工程师的梦想大概也不过如此.
游客

返回顶部