阅读:1602回复:4
ntddk.h能在一般的.c文件中引用吗
为什么总是提示我找不到这个文件,但是我在写驱动时,编译没问题!奇怪
|
|
沙发#
发布于:2005-04-27 10:40
能找到才奇怪呐.
内核态驱动运行在ring0,应用程序运行在ring3,普通的应用程序(exe\\dll)不能调用ntddk.h中的函数. 从理论上讲,你非要包含它,再调用其中的函数,不是没可能做到的,可是做到了,结果是程序DOWN掉.或者死机. 微软让你找不到是为你好. |
|
|
板凳#
发布于:2005-04-27 11:02
好像是不行啊。不过我不太懂啊:(
楼上的仁兄是不是说ntddk.h是与内核有关的, 而我们编写的c文件是应用程序? |
|
|
地板#
发布于:2005-04-27 11:47
当然,C文件有可能是应用也有可能是驱动.看楼主的意思应该是应用.
应用程序调用NTDDK.H里的函数当然不行,没有权限嘛. 多说几句: MICROSOFT出于安全\\性能方面的考虑,将一部分驱动设定为用户态或用户态与内核态合作,如图形子系统.为了用户态驱动的方便,将部分内核例程包装了用户态形式的函数. 因此,如果你非要调用NTDDK.H里的函数,而你链接用户态DLL中的函数,你的程序多半不能正常使用;你链接内核例程,你的程序大概就不能启动了. |
|
|
地下室#
发布于:2005-04-27 12:16
恩,明白!本来想放到ring3测试一个小东东,不用折腾驱动了,看来懒还是偷不了
|
|