tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1070回复:2

请问怎样使此程序执行?

楼主#
更多 发布于:2002-03-12 18:28
从《Windos NT/2000本机API参考手册》有以下程序(我加了一些函数调用):
#include <windows.h>
namespace NT{
extern \"C\"{
#pragma warning(disable:4005)
#include <ntddk.h>
#pragma warning(default:4005)
}
}
using NT::NTSTATUS;

int main(int argc, char* argv[])
{
    PUCHAR Buffer;
    Buffer = (PUCHAR)NT::ExAllocatePool(NT::PagedPool,100);
    NT::ExFreePool(Buffer);
    return 0;
}
编译时要在ntddk.h中加入对ULONG_PTR和LONG_PTR的定义
还要修改guiddef.h中的一个==使用,在link中加入WDM.lib或ntoskrnl.lib可编译通过。但运行时初始化就发生0xC0000005 Access denide错误,应该是运行级别不一样。有没有办法让其运行?如果不行,但书上很多程序都是如此类似的,难道都不能运行吗?还是美国佬有什么诀窍?!还有就是即使不调用ExXXX例程,只要包括WDM.lib,也不能运行,又是为什么呢?
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
wilton
驱动牛犊
驱动牛犊
  • 注册日期2001-04-23
  • 最后登录2005-03-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-03-14 09:26
应该加入NTDLL.LIB。而不是WDM.lib或ntoskrnl.lib。
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-03-14 12:45
如果去掉ExXXX调用,用NTDLL.LIB可行。
可是那样包含在NTDDK.H中的函数原型找不到函数库。我看书上还有ZwXXX,PoXXX等我们在驱动程序中才可调用的例程,NTDLL.LIB中没有。是怎么回事呢?
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
游客

返回顶部