johnchang
驱动牛犊
驱动牛犊
  • 注册日期2004-03-23
  • 最后登录2004-05-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1325回复:4

有关内核模式下的运行库问题。

楼主#
更多 发布于:2004-03-29 15:10
我用C++写的驱动程序,可以用堆栈实例化(即局部变量)。
不能在堆中实例化,不能使用全局变量,这和CRT好象相关。小弟不知该如何处理,请大家指教。编译都能通过,但链接无法通过。全局变量时编译后,需要链接atexit函数,可是找不到。
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2004-03-29 16:17
用DS写吧,所有的C++库函数都进行了封装,一般没问题的。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
johnchang
驱动牛犊
驱动牛犊
  • 注册日期2004-03-23
  • 最后登录2004-05-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-03-29 17:23
您能告诉我,DriverStudio是如何封装CRT的吗?如果我在2000 DDK下,我该如何做能达到同样效果呢?按照我的理解,DriverStudio只是封装了DDK的东东。我就是想知道它是如何做的,如何封装的。呵呵。请指教!
cool-net
驱动小牛
驱动小牛
  • 注册日期2003-03-18
  • 最后登录2010-01-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-03-29 19:15
>> 不能在堆中实例化
这个没问题,可以通过重载全局new和delete操作符解决。

>> 不能使用全局变量
实际上你要是自己实现initializer和terminator也可以解决,不过要复杂一些。
使用C++,全局变量的使用本来就不被提倡的(C里也一样),必要的话你可以使用Singleton模式处理。


有错误才会有进步,所以我的人生目标是: 错误不断,毁人不倦!
wuyanfeng
驱动小牛
驱动小牛
  • 注册日期2003-08-26
  • 最后登录2011-05-06
  • 粉丝0
  • 关注0
  • 积分1002分
  • 威望127点
  • 贡献值0点
  • 好评度103点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-03-31 17:08
您能告诉我,DriverStudio是如何封装CRT的吗?如果我在2000 DDK下,我该如何做能达到同样效果呢?按照我的理解,DriverStudio只是封装了DDK的东东。我就是想知道它是如何做的,如何封装的。呵呵。请指教!


这里我在 ds 中抠出来的一个可以编译过去的例子.这个例子只是给你一个启发而已.没有实际用途.如果这个例子还不能给你足够的信息的话.我就没有办法了.里面的东西要自己去理解了.我是用 xpsp1 ddk 编译的.工程文件是 vc2003 的.
附件名称/大小 下载次数 最后更新
2004-03-31_TestDriver.rar (10KB)  2
游客

返回顶部