阅读:1325回复:4
有关内核模式下的运行库问题。
我用C++写的驱动程序,可以用堆栈实例化(即局部变量)。
不能在堆中实例化,不能使用全局变量,这和CRT好象相关。小弟不知该如何处理,请大家指教。编译都能通过,但链接无法通过。全局变量时编译后,需要链接atexit函数,可是找不到。 |
|
沙发#
发布于:2004-03-29 16:17
用DS写吧,所有的C++库函数都进行了封装,一般没问题的。
|
|
|
板凳#
发布于:2004-03-29 17:23
您能告诉我,DriverStudio是如何封装CRT的吗?如果我在2000 DDK下,我该如何做能达到同样效果呢?按照我的理解,DriverStudio只是封装了DDK的东东。我就是想知道它是如何做的,如何封装的。呵呵。请指教!
|
|
地板#
发布于:2004-03-29 19:15
>> 不能在堆中实例化
这个没问题,可以通过重载全局new和delete操作符解决。 >> 不能使用全局变量 实际上你要是自己实现initializer和terminator也可以解决,不过要复杂一些。 使用C++,全局变量的使用本来就不被提倡的(C里也一样),必要的话你可以使用Singleton模式处理。 |
|
|
地下室#
发布于:2004-03-31 17:08
您能告诉我,DriverStudio是如何封装CRT的吗?如果我在2000 DDK下,我该如何做能达到同样效果呢?按照我的理解,DriverStudio只是封装了DDK的东东。我就是想知道它是如何做的,如何封装的。呵呵。请指教! 这里我在 ds 中抠出来的一个可以编译过去的例子.这个例子只是给你一个启发而已.没有实际用途.如果这个例子还不能给你足够的信息的话.我就没有办法了.里面的东西要自己去理解了.我是用 xpsp1 ddk 编译的.工程文件是 vc2003 的. |
|
|