dana_wx
驱动牛犊
驱动牛犊
  • 注册日期2002-11-08
  • 最后登录2003-07-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2514回复:24

NDIS passthru 例子 中能不能这样修改 请指点

楼主#
更多 发布于:2003-02-24 14:06
我如果想在应用层传递数据到 passthru 驱动中 在passthru的DriverEntry中能不能加
// Initialize function pointers

DriverObject->DriverUnload = DriverUnload;
DriverObject->DriverExtension->AddDevice = AddDevice;

DriverObject->MajorFunction[IRP_MJ_CREATE] = DispatchCreate;
DriverObject->MajorFunction[IRP_MJ_CLOSE] = DispatchClose;
DriverObject->MajorFunction[IRP_MJ_READ] =DispatchReadWrite;
DriverObject->MajorFunction[IRP_MJ_WRITE]=DispatchReadWrite;
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = DispatchControl;

并通过deviceiocontrol 传数据进去的
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-02-24 14:19
可以通过这中方式来做
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-02-24 14:23
不过你要注意driver和device的区别,ndis里面要注册NdisMRegisterDevice,不是driver
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
dana_wx
驱动牛犊
驱动牛犊
  • 注册日期2002-11-08
  • 最后登录2003-07-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-02-24 14:28
实在很抱歉 我懂的很少 你说的driver 和 device 区别是什么意思
dana_wx
驱动牛犊
驱动牛犊
  • 注册日期2002-11-08
  • 最后登录2003-07-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-02-24 14:31
而且  DriverObject->DriverUnload = DriverUnload;
 我添加上这样的代码 编译时说DriverObject没有  DriverUnload
dana_wx
驱动牛犊
驱动牛犊
  • 注册日期2002-11-08
  • 最后登录2003-07-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-02-24 14:32
还有其他方法 可以实现从应用层传数据 到内核中么?
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-02-24 14:59
看一下ddk里面NdisMRegisterDevice的说明先
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
dana_wx
驱动牛犊
驱动牛犊
  • 注册日期2002-11-08
  • 最后登录2003-07-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-02-24 15:50
看过了 对MajorFunction 怎么赋值啊 哪里有没有例子的啊



NdisMRegisterDevice(
WrapperHandle,//    IN NDIS_HANDLE  NdisWrapperHandle,
myName,     //IN PNDIS_STRING  DeviceName,
myName, //IN PNDIS_STRING  SymbolicName,
   MajorFunction,//IN PDRIVER_DISPATCH  MajorFunctions[],
   myDriverObject,//OUT PDEVICE_OBJECT  *pDeviceObject,
   NdisDeviceHandle,//OUT NDIS_HANDLE  *NdisDeviceHandle
    );
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-02-24 16:00
 NDIS_STATUS         status = NDIS_STATUS_SUCCESS;
    UNICODE_STRING      DeviceName;
    UNICODE_STRING      DeviceLinkUnicodeString;
    PDRIVER_DISPATCH    DispatchTable[IRP_MJ_MXAIMUM_FUNCTION];
PDEVICE_OBJECT      deviceObject;
NDIS_HANDLE         NdisDeviceHandle;
    UINT                i;


for (i = 0; i < IRP_MJ_MAXIMUM_FUNCTION; i++)
{
DispatchTable = yourdispatchfun;
}

NdisInitUnicodeString(&DeviceName, NT_DEVICE_NAME);
NdisInitUnicodeString(&DeviceLinkUnicodeString, DOS_DEVICE_NAME);

status = NdisMRegisterDevice(
NdisWrapperHandle,
&DeviceName,
&DeviceLinkUnicodeString,
&DispatchTable[0],
&deviceObject,          // global variable
&NdisDeviceHandle       //global variable
);

return status;
}

大概就是这样的过程

[编辑 -  2/24/03 by  mikeluo]
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
dana_wx
驱动牛犊
驱动牛犊
  • 注册日期2002-11-08
  • 最后登录2003-07-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-02-24 16:32
for (i = 0; i < IRP_MJ_MAXIMUM_FUNCTION; i++)
{
DispatchTable = IPSecConfigProc;
}


中是不是
DispatchTable = IPSecConfigProc;
啊?

IPSecConfigProc 这个是处理所有IRP的 函数么?



mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-02-24 16:39
你不会替换成自己的函数么????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
kaput
驱动中牛
驱动中牛
  • 注册日期2002-06-26
  • 最后登录2004-08-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-02-24 17:21
把windows下的passthru看明白,差不多也就明白了
天下风云出我辈 一入江湖岁月催 鸿图霸业谈笑中 不胜人生一场醉......
dana_wx
驱动牛犊
驱动牛犊
  • 注册日期2002-11-08
  • 最后登录2003-07-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-02-24 17:58
kaput  你是说 那个什么都不做的例子?
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-02-24 19:50
2k ddk中的passthru的例子没有这段,不过xp的例子里面有
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
dana_wx
驱动牛犊
驱动牛犊
  • 注册日期2002-11-08
  • 最后登录2003-07-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2003-02-25 10:48
谢谢你  给分 我去看例子 我懂得东西不多 谢谢你告诉我在哪里看例子  这可能就是说的 师父领进门修行在个人 吧  呵呵

非常感谢  嗯 怎么给你分
dana_wx
驱动牛犊
驱动牛犊
  • 注册日期2002-11-08
  • 最后登录2003-07-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2003-02-25 10:51
我给完了 希望下次还能得到你的解答 谢谢 祝好
kaput
驱动中牛
驱动中牛
  • 注册日期2002-06-26
  • 最后登录2004-08-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2003-02-25 11:06
看win xp的,win2k的没用

更正
winxp下的NdisUio很不错,就是一开始会被它的宏搞昏。下面说的是指NdisUio


winxp在PacketSize> LookAheadBufferSizes时的NdisTranferdata()用了一个小小的技巧,很有意思。


[编辑 -  2/25/03 by  kaput]

[编辑 -  2/25/03 by  kaput]
天下风云出我辈 一入江湖岁月催 鸿图霸业谈笑中 不胜人生一场醉......
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2003-02-25 11:11
passthru里面有调用NdisTranferdata么?
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
fuq_dddd
驱动老牛
驱动老牛
  • 注册日期2002-10-15
  • 最后登录2009-10-09
  • 粉丝0
  • 关注0
  • 积分331分
  • 威望57点
  • 贡献值0点
  • 好评度28点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2003-02-25 12:18
mikeluo:

你的那段代码是XP PASSTHRU里的吗?
要仔细看看XP PASSTHRU了
星星之火 可以燎原 每一个光亮 都可能是黎明 [img]http://joke.tom.com/img/assets/1/gaoxiao_80_910.gif[/img]
kaput
驱动中牛
驱动中牛
  • 注册日期2002-06-26
  • 最后登录2004-08-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2003-02-25 12:33
passthru里面有调用NdisTranferdata么?


混了---
我看的是winxp的passthru和NdisUio
我把他们合2为一了。
实际是NdisUio里面的。

这个东西很久以前做完了就没管了,搞混了
天下风云出我辈 一入江湖岁月催 鸿图霸业谈笑中 不胜人生一场醉......
上一页
游客

返回顶部