edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:4241回复:13

WDM 驱动中的全局变量处在分页内存中还是非分页内存中?

楼主#
更多 发布于:2002-12-19 11:02
我的一个 9x 下可以正常运行的内核移植到 2000 下就出现了 DRIVER_IRQL_NOT_LESS_OR_EQUAL 蓝屏,我想知道 VxD 中是不是没有 IRQL 这个概念,我的内核(几乎没有涉及任何内核调用,全部是内存数据的处理)在 9x 下很正常,放在 Passthru 里面就会蓝屏,一时找不到原因,所以现在怀疑跟内存有关系。

希望各位给一些建议,谢谢!

最新喜欢:

zackaryzackar...
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-12-19 11:09
我的程序是分步测试的,我改过的 Passthru 框架运行很正常,现在挂上内核以后在 MPSendPackets 里面一调用我内核里的函数处理包就蓝屏,痛苦啊!
ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-12-19 11:24
全局变量使用的是非分页的内存池空间
生命驱动,活力无限!
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-12-19 11:31
还有一些弱智的疑问:

(1)VxD 中是不是没有 IRQL 这个概念?
(2)函数调用跟 IRQL 有什么样的关系?在函数 A 中调用函数 B,这两个函数所处的 IRQL 肯定一样还是有可能不一样?
(3)我上面遇到的问题各位大侠凭你们的直觉可能是哪里的问题?希望凭借你们丰富的经验给我一些建议。
ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-12-19 11:51

线程优先级是与IRQL非常不同的概念

你的问题估计是不满足:所有对共享数据的访问都应该在同一(提升的)IRQL上进行。

生命驱动,活力无限!
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-12-19 12:57
内存的问题和处理方式的问题,

vxd里面没有IRQL,
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-12-19 12:59
为什么要在MPSendPackets里面发包?在这里发包你是怎么处理那些内存释放的?
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
bingjie
驱动小牛
驱动小牛
  • 注册日期2001-08-15
  • 最后登录2007-11-29
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望5点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-12-19 13:09
如果没有调用过KeRaisIRQL函数,在同一个线程空间它的IRQL总是一样的。如果有严重的内存错误同样也会引起上面所说的错误,而且通常是如此。所以最好还是检查以下你的使用内存的部分,使用全局变量一定要注意同步(函数重入),还有确认在完成例程中处理数据。
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-12-19 15:36
 
为什么要在MPSendPackets里面发包?在这里发包你是怎么处理那些内存释放的?


我是在这里处理过之后把它发出

我用一个内部链表来区分自己发的包和上层发的包,最后在 SendComplete 里进行不同的处理(仿照 PIM 的)
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-12-19 15:37
 
如果没有调用过KeRaisIRQL函数,在同一个线程空间它的IRQL总是一样的


这是我想要的答案之一:)
fuq_dddd
驱动老牛
驱动老牛
  • 注册日期2002-10-15
  • 最后登录2009-10-09
  • 粉丝0
  • 关注0
  • 积分331分
  • 威望57点
  • 贡献值0点
  • 好评度28点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-12-19 16:26
 
使用全局变量一定要注意同步(函数重入),


能解释一下吗?
你说的这些概念,我不是很清楚。

谢谢!!!!!!!!!!!!!
星星之火 可以燎原 每一个光亮 都可能是黎明 [img]http://joke.tom.com/img/assets/1/gaoxiao_80_910.gif[/img]
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-12-19 17:34
 
能解释一下吗?


呵呵俺倒是知道一点,先发表一下看法,关公面前耍大刀――献丑了:)

NDIS 是异步方式的,所以当对函数 A 的调用尚未结束时有可能函数 A 又被调用了,这就是“重入”。

函数重入时使用的局部变量是处于不同栈上的,所以不会相互影响,而所有全局变量只有一份,所以不做处理会有问题。

哪位高人再讲讲这方面的经验好吗?全当俺抛砖引玉了呵呵:)
lifeship
驱动小牛
驱动小牛
  • 注册日期2002-10-18
  • 最后登录2005-07-19
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-12-19 22:03
呵呵,有个困惑的问题, 优势我在程序段中定义一个变量,编译通不过,可是吧定义放到函数的开头,就通过了,不知道是什么问题啊
杯汝前来,  老子今朝,  放荡形骸!  甚长年抱渴,  咽如焦釜,  于今喜醉,  气似奔雷!  慢说刘伶,  古今达者,  醉后何妨死便埋! 
bacongong
驱动牛犊
驱动牛犊
  • 注册日期2007-10-10
  • 最后登录2009-01-12
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望31点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2008-05-24 20:18
这是不是早期c语言的标准要求的啊?
驱网无线,快乐无限
游客

返回顶部