40楼#
发布于:2002-12-07 14:16
俺给你上两堂语文课吧,不过给钱先, :D :D :D :D
|
|
|
41楼#
发布于:2002-12-07 14:58
先跟大家说声对不起,都是俺的错,请看:
我不知道怎么搞的,居然把 RtlUnicodeStringToAnsiString( &TempStr, DeviceName, TRUE ); 写成了 RtlUnicodeStringToAnsiString( &TempStr, &pAdapt->DeviceName, TRUE ); 所以输出的东西就是从 UpperBindings 里面读出来的,再次深刻检讨!!!不过这下我以后一定不会搞混了,大家不要仍东西:) |
|
42楼#
发布于:2002-12-07 15:17
不过讨论一下对大家都有好处,清晰了很多东西
|
|
|
43楼#
发布于:2002-12-07 15:22
我还想要跟进去看那个参数是什么每:)
这下不用了, |
|
|
44楼#
发布于:2002-12-07 15:46
呵呵,这些我知道(PtBindAdapter 中):
SystemSpecific1 的内容形如: PASSTHRU\\Parameters\\Adapters\\{47942F0A-ECC8-4BFB-8DC4-CAF4BA8AC5BC} 或 PASSTHRU\\Parameters\\Adapters\\NdisWanIp 它的实际位置在: HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Service |
|
45楼#
发布于:2002-12-07 16:12
这回总算把 PtBindAdapter() 彻底搞清了!
给分! |
|
46楼#
发布于:2002-12-07 16:14
先跟大家说声对不起,都是俺的错,请看: 嘿嘿~~ 不放分就要仍东东了。。。 偶现在就查你们公司的地址喽 |
|
|
47楼#
发布于:2002-12-07 16:22
偶现在就查你们公司的地址喽 呵呵不用查,上次不是告诉过你了吗,工作找的如何了? |
|
48楼#
发布于:2002-12-07 16:48
[quote] 偶现在就查你们公司的地址喽 呵呵不用查,上次不是告诉过你了吗,工作找的如何了? [/quote] edust兄: 谢谢你的关心! :) :P |
|
|
49楼#
发布于:2002-12-09 14:35
基本上来说,我也是在PtBindAdapter中,我查到了DeviceName,这个名字,它的名字内容,我也跟进去查过了,的确就是那个虚拟Adapter的ID,就是在注册表的upperBinding子键下面的ID值,从DDK上得到的资料上说,Specifiedname1这个值,传到OpenAdapter中去的时候,不能够传入它的拷贝,即你必须要直接传入DeviceName这个地址进去,我不知道这是为什么,不过书上确实是这样说的,因此,如果你查一下,我不知道你是怎么查到你所说的那个错误的,不过,那个错误似乎并非是一个很重要的问题??
基本上来说,我觉得你的推理是正确的,Adapter的ID确不是真实的网卡ID,我不知道你最后得到的结论是什么?能够总结一下吗?还有就是有个问题要请教一下,在Passthu中你跟过程序的,你有没有发现,OpenAdapter返回的是NDIS_STATUS_PENDING?也就是说,系统需要调用OpenCompleteAdapter来完成这个打开操作?这样,你下面的NdisIMInitializeDeviceInstanceEx会成功吗?我跟了一次,似乎没有这个问题,我问了这个问题,不过还是不很清楚Passthu用event的意义是什么,请指教 |
|
50楼#
发布于:2002-12-09 15:20
基本上来说,我也是在PtBindAdapter中,我查到了DeviceName,这个名字,它的名字内容,我也跟进去查过了,的确就是那个虚拟Adapter的ID,就是在注册表的upperBinding子键下面的ID值 不会吧!你说的是 PtBindAdapter() 的参数 DeviceName 吗?那个是物理网卡的设备名,ADAPT 结构中的 DeviceName 才是 IMD 导出的虚拟网卡的设备名。你犯了跟我同样的错误还是你在注册表中看错了值? |
|
51楼#
发布于:2002-12-09 15:23
从DDK上得到的资料上说,Specifiedname1这个值,传到OpenAdapter中去的时候,不能够传入它的拷贝,即你必须要直接传入DeviceName这个地址进去,我不知道这是为什么,不过书上确实是这样说的,因此,如果你查一下,我不知道你是怎么查到你所说的那个错误的,不过,那个错误似乎并非是一个很重要的问题?? 对不起,我没有弄清楚你的意思,我的那个错误是输出调试信息时搞错了对象,你说的“我不知道你是怎么查到你所说的那个错误的”是这个意思吗? |
|
52楼#
发布于:2002-12-09 15:33
基本上来说,我觉得你的推理是正确的,Adapter的ID确不是真实的网卡ID,我不知道你最后得到的结论是什么?能够总结一下吗? 呵呵,确实应该这样!给后来看帖子的兄弟们一个明确的结论。 我最后的结论就是:直接从 PtBindAdapter() 参数中得到的那个 DeviceName 的确就是物理网卡的设备名(当然有个前提,那就是这个 Adapter 不是系统中其它 IMD 导出的虚拟 Adapter),而用 NdisReadConfiguration() 读出来的,最后存到 pAdapt->DeviceName 中的那个设备名才是我们的 IMD 导出的虚拟 Adapter 的设备名。 |
|
53楼#
发布于:2002-12-09 15:38
还有就是有个问题要请教一下,在Passthu中你跟过程序的,你有没有发现,OpenAdapter返回的是NDIS_STATUS_PENDING?也就是说,系统需要调用OpenCompleteAdapter来完成这个打开操作?这样,你下面的NdisIMInitializeDeviceInstanceEx会成功吗?我跟了一次,似乎没有这个问题,我问了这个问题,不过还是不很清楚Passthu用event的意义是什么,请指教 对啊,OpenAdapter() 有可能返回 NDIS_STATUS_PENDING,但是你没有注意到下面那几行吗: if( *Status == NDIS_STATUS_PENDING ) { NdisWaitEvent( &pAdapt->Event, 0 ); *Status = pAdapt->Status; } 它会等待这个未决的操作完成之后才会继续往下执行啊。 用事件对象就是要在操作未决时阻塞程序,让它等待(NdisWaitEvent())操作完成。 |
|
54楼#
发布于:2002-12-09 20:14
edust,我还要去看一下代码才能确定是否是我和你范了同样的错误,如果你的认识是正确的,那么应该说我跟你犯了同样的错误,我没有仔细的查过DeviceName和Adapter结构中的那个值,呵呵,可能是“眼误”哟。还有,就是下午请教的那个问题,我已经设置了一个NDIS_EVENT变量,也就是说先完成adapteropencomplete,不过,我还有一个事情不明白,DDK上说,在OpenAdapter返回NDIS_PENDING的时候说最终必须要调用NdisCompleteAdapter来完成打开操作,但是,我在Passthru中没有看到他调用这个函数,难道系统最后会自己调用这个函数吗?不太明白?请指教
|
|
55楼#
发布于:2002-12-09 20:22
那个complete是NDIS来调用的,
|
|
|
56楼#
发布于:2002-12-09 20:40
呵呵,对啊,如果即时完成了那就是完成了,但如果返回了 NDIS_PENDING 又怎么知道什么时候完成了?――答案是 NDIS 会调用 CompleteHandler 告诉我们。
|
|
57楼#
发布于:2003-03-25 21:50
为什么我打不开后面两页啊? |
|
58楼#
发布于:2003-05-26 12:51
在ProtocolBindAdapter中使用IoGetDeviceObjectPointer函数并传入DeviceName为什莫得不到DEVICE_OBJECT呢?急问
|
|
上一页
下一页