sirroom
驱动大牛
驱动大牛
  • 注册日期2001-07-30
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望11点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1592回复:17

版主进来拿分(50),关于ndis.h

楼主#
更多 发布于:2002-05-24 22:20
  经偶实验证明版主就偶的关于ndis.h的解答是正确的,偶装了sdk后,path里面多了sdk的path,然后一切就好了。这里给分
  对了,又想起一件事,不知道版主知道不知道,就是关于lbfo的bundid是怎么玩的,偶没太搞清楚,偶用的xp的passthru,现在想知道关于lbfo的玩法。

最新喜欢:

moqingsongmoqing...
111
sirroom
驱动大牛
驱动大牛
  • 注册日期2001-07-30
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望11点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-05-24 22:35
1.对了,接着问一个怎么在vc里调试自已的service程序
2.
111
.X.T.I.M.
驱动大牛
驱动大牛
  • 注册日期2001-09-22
  • 最后登录2021-08-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-05-24 23:39
趁师父他老人家没来我先凑个热闹!LBFO我还真的研究过,要先从定义LBFO宏和PTBindAdapter说起!LBFO宏就不说了!PTBindAdapter这里面一开始就读注册表!获得绑定了PASSTHRU的网卡或下层其他东西比如虚拟网卡的名字[并在网上邻居的属性的高级设置里面可以看到]!然后保存到ADAPT对象的BundleUniString这个项里面,!然后当读出一个空的时候就把<no-bundle>保存到刚刚那个项里面!这些东西就是将来用来辨别和操作的!都搞定了就干些其他该干的,准备好后IPENADAPTER,OPEN完后就CALL MPINITIAL函数!对了胡老大~~上次我打电话问您哪个NdisIMInitializeDeviceInstanceEx()函数在调用完MPINITIAL函数后反不返回PTBINDADAPTER函数,后来我跟了许多次,发现是返回的!所以我认为建立设备队列也可以在PTBINDADAPTER函数里的这个函数后面建立!如果在这个PTBINDADAPTER函数里面创立了设备对象,那个反设置初始化旗帜的工作也可以在这后面做!好了~接着吹完我的牛~~然后等着师父来敲脑袋!然后就到了MPINITIALIZE函数里面了!这个时候呢先保存载体信息和设置串联OR非串联属性!接着设置电源状态为最高级D0也就是全功率工作!完成后LBFO的工作开始了!先初始化和LBFO有关的三个项!一个BOOL两个PADAPT,BOOL的值只有在是从适配器的设备对象里面才会为TRUE,在主的里面是FALSE,所以这里先设置成FALSE!然后把主次两适配器的ADAPT对象都指向自己!然后调用MPBUNDLESEARCHANDSETSECONDARY函数,在这个函数里面先比较一下刚刚我们保存的那个BundleUniString是不是等于<no-bundle>,如果不是就继续,是就返回因为没有东西可绑了嘛~~或者BundleUniString等于0也返回,因为出错了嘛~~然后就先上锁!接着这个时候出现了一个我特别欣赏的FOR的用法!!的确是巧妙!这里出现了一个叫pAdaptList的全局设备对象!当只有一个网卡的时候这个东西是不存在的,也就是NULL的!因为巧妙就巧妙在这个东西是在MPINITIALIZE函数里面调用完这个函数后保存的!如果是第一块网卡或只有一块网卡的话,它OFCOZ是空的啦!这个时候也会返回! for (pCursor = pAdaptList; pCursor != NULL; pCursor = pCursor->Next)这个时候pCursor = pAdaptList;然而pCursor != NULL;也就等于pAdaptList=NULL;所以就满足了FOR的结束条件!这个也是这个FOR的精妙之处!然后是判断是不是pCursor指向自己,如果是就跳出处理并解锁返回,然后接着是判断和设置主网卡if (NdisEqualUnicodeString(&pCursor->BundleUniString, &pAdapt->BundleUniString, TRUE))这个时候因为pCursor就是pAdaptList,而pAdaptList在这里绝对是上一块网卡!这里有个疑问因为我做的东西用不上这个,所以也没仔细的研究,如果是三块网卡会怎么样??4块呢??只有第一块网卡的BundleUniString会合pAdaptList的BundleUniString相等!所以把相等的设置为主适配器!然后继续循环这里我看得有点晕了~~不陪它转了~~反正知道是设置主适配器的就可以了!然后解锁,然后是判断 if (pPrimary != NULL),什么意意思呢?主适配器设备对象不为空嘛!为什么?因为第一次进入这个函数不是直接跳出设置主适配器的FOR去了么?所以第一次调用MPBundleSearchAndSetSecondary函数的时候这个pPrimary 一定是NULL!OFCOZ是第二次以后才不为空, 然后这个时候接着设置从适配器,当然是调用MPSetMiniportSecondary (pAdapt, pPrimary);咯!接着看MPSetMiniportSecondary函数!看啦~~预处理LBFO出现了!!干什么用?地球人都知道!呵呵~~然后就是设置从适配器,当然是调用NdisMSetMiniportSecondary,这个时候看咯~~看咯~~
Secondary->isSecondary = TRUE;
Secondary->pPrimaryAdapt = Primary;
Primary->pSecondaryAdapt = Secondary;
这个isSecondary 变成TRUE了!!搞定!

再就是看HALT函数在某NIC当掉的时候,先加锁,然后又是那个优美的FOR,for (ppCursor = &pAdaptList; *ppCursor != NULL; ppCursor = &(*ppCursor)->Next),在这里面从新排列设备队列,接着是查找该升谁的官做老大!当然如果死的不是老大那就别想篡位!如果是老大死了就调用MPPromoteSecondary来提升第一个从成主!也就是老二直接升老大!接着就是料理去世的那位兄弟的后世,不管它是不是老大都要料理的嘛!因为要环保啊!资源宝贵啊!料理完后LBFO也就讲完了~~接着的是NDIS。SYS做的事情了!不管俺们的事~~哇~~12点了~~睡觉觉咯~~大家祝我晚上梦到美女吧~~
<IMG src="http://www.microsoft.com/traincert/images/logos/mcp.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcdba.gif" border=0><br> <IMG src="http://www.microsoft.com/traincert/images/logos/mcse.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcsd.gif" border=0>
.X.T.I.M.
驱动大牛
驱动大牛
  • 注册日期2001-09-22
  • 最后登录2021-08-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-05-24 23:48
哎~~明天你起来看到这篇帖子的时候就知道我多辛苦了~~怎么也得在给完我师父分后也施舍点给我做润笔吧~~真是可怜啊~~
<IMG src="http://www.microsoft.com/traincert/images/logos/mcp.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcdba.gif" border=0><br> <IMG src="http://www.microsoft.com/traincert/images/logos/mcse.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcsd.gif" border=0>
HuYuguang
论坛版主
论坛版主
  • 注册日期2001-04-25
  • 最后登录2013-04-29
  • 粉丝3
  • 关注1
  • 积分92分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分1分
  • 专家分0分
地下室#
发布于:2002-05-25 09:24
1.对了,接着问一个怎么在vc里调试自已的service程序
2.



调试service,最好一开始不要写成service,然后
调试。

听起来这象是废话,但是其实不是废话,把一个程序变成
service很容易,就那么几步,所以其他的代码可以先用
console app实现,然后简单的处理成service。

sdk里面有一个sample,叫做service,实现得很好,
这个程序可以直接运行成console app,也可以当作service
运行。你可以去看看。这个程序里面的异步读pipe的代码
也可以去研究研究。
不再回忆从前,我已经生活在幸福当中。
sirroom
驱动大牛
驱动大牛
  • 注册日期2001-07-30
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望11点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-05-25 09:43
版主的意见看来很经典,不过换句话说,就是没有办法在IDE中调service吧,如果不行,偶也不用找了。
    不过偶很奇怪,为什么service程序可以在nt4下调呢?不太理解
111
sirroom
驱动大牛
驱动大牛
  • 注册日期2001-07-30
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望11点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-05-25 09:50
看来本版也该设个板斧,由top出任,版主回答高级问题,版副回答一般问题。
  其实每个版应再设个faq,精华区的小栏目,然后版副来整理,同意的请re一个.hehehe
111
.X.T.I.M.
驱动大牛
驱动大牛
  • 注册日期2001-09-22
  • 最后登录2021-08-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-05-25 09:50
如果是DEBUG-BUILD的话,在任务管理器里面按DEBUG可不可以?SIRROOM试了没有?我还没有试!
<IMG src="http://www.microsoft.com/traincert/images/logos/mcp.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcdba.gif" border=0><br> <IMG src="http://www.microsoft.com/traincert/images/logos/mcse.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcsd.gif" border=0>
sirroom
驱动大牛
驱动大牛
  • 注册日期2001-07-30
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望11点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-05-25 10:32
你说的是另类debug吧,就象什么程序出错了,然后vc跑出来让你看汇编?那我还不如用softice呢
111
.X.T.I.M.
驱动大牛
驱动大牛
  • 注册日期2001-09-22
  • 最后登录2021-08-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-05-25 10:33
看来本版也该设个板斧,由top出任,版主回答高级问题,版副回答一般问题。
  其实每个版应再设个faq,精华区的小栏目,然后版副来整理,同意的请re一个.hehehe

你别逗了~~胡老大今天没敲我的脑袋我都烧高香了~~还版副呢!就我的那点三脚猫老大知道,我也知道!!免了免了~~
<IMG src="http://www.microsoft.com/traincert/images/logos/mcp.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcdba.gif" border=0><br> <IMG src="http://www.microsoft.com/traincert/images/logos/mcse.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcsd.gif" border=0>
.X.T.I.M.
驱动大牛
驱动大牛
  • 注册日期2001-09-22
  • 最后登录2021-08-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-05-25 10:39
你说的是另类debug吧,就象什么程序出错了,然后vc跑出来让你看汇编?那我还不如用softice呢

可是如果DEBUG-BUILD有可能在IDE里面设置什么就可以得到调试符号呢??A~~~这个难说~~听听老大怎么说!
<IMG src="http://www.microsoft.com/traincert/images/logos/mcp.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcdba.gif" border=0><br> <IMG src="http://www.microsoft.com/traincert/images/logos/mcse.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcsd.gif" border=0>
.X.T.I.M.
驱动大牛
驱动大牛
  • 注册日期2001-09-22
  • 最后登录2021-08-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-05-25 10:43
哦~~看来老大已经说了~~是我看帖子没看清楚~~我错了我错了~~我罚自己去面壁!
<IMG src="http://www.microsoft.com/traincert/images/logos/mcp.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcdba.gif" border=0><br> <IMG src="http://www.microsoft.com/traincert/images/logos/mcse.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcsd.gif" border=0>
HuYuguang
论坛版主
论坛版主
  • 注册日期2001-04-25
  • 最后登录2013-04-29
  • 粉丝3
  • 关注1
  • 积分92分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分1分
  • 专家分0分
12楼#
发布于:2002-05-25 11:35
版主的意见看来很经典,不过换句话说,就是没有办法在IDE中调service吧,如果不行,偶也不用找了。
    不过偶很奇怪,为什么service程序可以在nt4下调呢?不太理解


可以在vc ide中调试,方法和调试其他程序一样。
不再回忆从前,我已经生活在幸福当中。
sirroom
驱动大牛
驱动大牛
  • 注册日期2001-07-30
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望11点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-05-25 12:36
但如果是在vc ide里来调,在StartServiceCtrlDispatcher处会停一会儿,然后就返回1063..,偶在ServiceMain处设的断点它也不进去,如果以服务的方式起来,(net start xxx),偶不知道如何调哩。感觉和一般的程序好象调试不太一样,偶也在网上找了一阵,有不少问的,也有答的(softice当然应该可以(有些局部变量看起来不方便);也可以直接用vc debug(那都是汇编哩),但没有看到说如何在vc ide中调。
    版主说的是哪一个啊,偶看sdk下有好几个service哩
111
sirroom
驱动大牛
驱动大牛
  • 注册日期2001-07-30
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望11点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-05-25 12:39
偶知道了。是winbase下的service
111
sirroom
驱动大牛
驱动大牛
  • 注册日期2001-07-30
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望11点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-05-25 12:44
wuwu.sdk用了偶的1.65g.硬盘要不够了。sigh
111
HuYuguang
论坛版主
论坛版主
  • 注册日期2001-04-25
  • 最后登录2013-04-29
  • 粉丝3
  • 关注1
  • 积分92分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分1分
  • 专家分0分
16楼#
发布于:2002-05-25 12:53
wuwu.sdk用了偶的1.65g.硬盘要不够了。sigh


开发的机器上如果没有sdk,ddk,msdn,resource kit,我几乎就
无法开始干活,如果连sdk都没有,我就活不下去。
不再回忆从前,我已经生活在幸福当中。
sirroom
驱动大牛
驱动大牛
  • 注册日期2001-07-30
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望11点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2002-05-25 13:12
看完了例子,得出的结论是没办法调service的,hoho,不过知道怎么办了。决定开新贴给分
111
游客

返回顶部