阅读:1795回复:7
使用NTDDK.h中的函数的问题,请大家帮忙看看
一个PS打印机的驱动程序,现在想使用NTDDK.h中的部分函数,如“KeGetCurrentIrql”。不知道是不是由于原先的代码包含了"WIndowsDDI.h"等头文件,现在不能包含“NTDDK.h”。所以我把需要的函数定义自己写了一个头文件。编译的时候链结了“NTDDK.lib”。
编译正常。但是如果调用代码中调用了“KeGetCurrentIrql”函数,打印驱动就不能正常工作,反之一切正常。 请遇到过类似问题的DX给讲讲解决方法。 多谢了。 |
|
沙发#
发布于:2004-09-18 14:06
一个PS打印机的驱动程序,现在想使用NTDDK.h中的部分函数,如“KeGetCurrentIrql”。不知道是不是由于原先的代码包含了"WIndowsDDI.h"等头文件,现在不能包含“NTDDK.h”。所以我把需要的函数定义自己写了一个头文件。编译的时候链结了“NTDDK.lib”。 你调用KeGetCurrentIrql干什么,好像没什么用途, 打印机的驱动程序不是WDM不涉及到IRQL |
|
|
板凳#
发布于:2004-09-19 13:43
你调用KeGetCurrentIrql干什么,好像没什么用途,
打印机的驱动程序不是WDM不涉及到IRQL [/quote] 我是想调用RtlQueryRegValues,读取注册表的一些数据,现象和上面说的一样。由于调用RtlQueryRegValues有IRQL的限制,所以我加上KeGetCurrentIrql看看情况。 我调用RtlQueryRegValues也是同样的问题,需自己定义函数、强行链接NTDDK.lib,编译通过但是不能运行。 |
|
地板#
发布于:2004-09-19 20:19
注册表用普通API函数就可以访问
|
|
|
地下室#
发布于:2004-09-20 09:07
不行啊,是NT4的驱动,内核模式的,不能使用windows api函数,所以很头痛。:(
注册表用普通API函数就可以访问 |
|
5楼#
发布于:2004-09-21 17:26
在你的sources文件中加上
DRIVER_INC_PATH=%DDKROOT%incddk 这样就可以用ntddk.h/ntddk.lib了,不要再include wdm.h 一般这样用KeGetCurrentIrql() ASSERT(KeGetCurrentIrql() == PASSIVE_LEVEL(or sth. else)); 只在debug版里调用 [编辑 - 9/21/04 by ananda] |
|
6楼#
发布于:2004-09-22 12:56
还是不行,谢谢帮忙的兄弟,我再继续想办法。
|
|
7楼#
发布于:2004-09-22 13:23
动态获得函数地址
|
|
|