阅读:1070回复:2
请问怎样使此程序执行?
从《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,也不能运行,又是为什么呢? |
|
|
沙发#
发布于:2002-03-14 09:26
应该加入NTDLL.LIB。而不是WDM.lib或ntoskrnl.lib。
|
|
板凳#
发布于:2002-03-14 12:45
如果去掉ExXXX调用,用NTDLL.LIB可行。
可是那样包含在NTDDK.H中的函数原型找不到函数库。我看书上还有ZwXXX,PoXXX等我们在驱动程序中才可调用的例程,NTDLL.LIB中没有。是怎么回事呢? |
|
|