sunjerry
驱动牛犊
驱动牛犊
  • 注册日期2004-09-14
  • 最后登录2006-01-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1796回复:7

使用NTDDK.h中的函数的问题,请大家帮忙看看

楼主#
更多 发布于:2004-09-17 17:17
一个PS打印机的驱动程序,现在想使用NTDDK.h中的部分函数,如“KeGetCurrentIrql”。不知道是不是由于原先的代码包含了"WIndowsDDI.h"等头文件,现在不能包含“NTDDK.h”。所以我把需要的函数定义自己写了一个头文件。编译的时候链结了“NTDDK.lib”。
编译正常。但是如果调用代码中调用了“KeGetCurrentIrql”函数,打印驱动就不能正常工作,反之一切正常。

请遇到过类似问题的DX给讲讲解决方法。
多谢了。
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2004-09-22 13:23
动态获得函数地址
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
sunjerry
驱动牛犊
驱动牛犊
  • 注册日期2004-09-14
  • 最后登录2006-01-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-09-22 12:56
还是不行,谢谢帮忙的兄弟,我再继续想办法。
ananda
驱动牛犊
驱动牛犊
  • 注册日期2003-12-12
  • 最后登录2006-09-01
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望4点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于: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]
sunjerry
驱动牛犊
驱动牛犊
  • 注册日期2004-09-14
  • 最后登录2006-01-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-09-20 09:07
不行啊,是NT4的驱动,内核模式的,不能使用windows api函数,所以很头痛。:(

注册表用普通API函数就可以访问
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-09-19 20:19
注册表用普通API函数就可以访问
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
sunjerry
驱动牛犊
驱动牛犊
  • 注册日期2004-09-14
  • 最后登录2006-01-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-09-19 13:43
你调用KeGetCurrentIrql干什么,好像没什么用途,
打印机的驱动程序不是WDM不涉及到IRQL
 [/quote]

我是想调用RtlQueryRegValues,读取注册表的一些数据,现象和上面说的一样。由于调用RtlQueryRegValues有IRQL的限制,所以我加上KeGetCurrentIrql看看情况。

我调用RtlQueryRegValues也是同样的问题,需自己定义函数、强行链接NTDDK.lib,编译通过但是不能运行。
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-09-18 14:06
一个PS打印机的驱动程序,现在想使用NTDDK.h中的部分函数,如“KeGetCurrentIrql”。不知道是不是由于原先的代码包含了"WIndowsDDI.h"等头文件,现在不能包含“NTDDK.h”。所以我把需要的函数定义自己写了一个头文件。编译的时候链结了“NTDDK.lib”。
编译正常。但是如果调用代码中调用了“KeGetCurrentIrql”函数,打印驱动就不能正常工作,反之一切正常。

请遇到过类似问题的DX给讲讲解决方法。
多谢了。


你调用KeGetCurrentIrql干什么,好像没什么用途,
打印机的驱动程序不是WDM不涉及到IRQL
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
游客

返回顶部