阅读:1265回复:3
请教在驱动中调用别的lib的问题
例如我想在驱动中调用ntdll.lib(按原作者应该调用ntoskrnl.lib ,但好像编译不了)中的native函数ZwReadVirtualMemory,我的方法是在驱动头文件中加上该函数的原型
NTSYSAPI NTSTATUS NTAPI ZwReadVirtualMemory(IN HANDLE hProcess,IN PVOID BaseAddress,OUT PVOID Buffer,IN ULONG BytesToRead,OUT PULONG BytesRead); 然后在驱动的source文件中加上: TARGETLIBS=$(DDK_LIB_PATH)\\ndis.lib \\ $(DDK_LIB_PATH)\\tdi.lib \\ $(DDK_LIB_PATH)\\ntoskrnl.lib \\ $(DDK_LIB_PATH)\\ntdll.lib 编译通过了,但在驱动加载的时候却说过程函数地址找不到,这到底是怎么回事,是不是我调用的方法不对? |
|
沙发#
发布于:2004-05-05 18:51
内核驱动不可以调用ntdll.dll中的函数。
|
|
板凳#
发布于:2004-05-05 20:54
大家看看这篇文章:
http://www.driverdevelop.com/forum/viewthread.php?tid=11010 我就是按照它来写的,但按照它的方法好像找不到ZwReadVirtualMemory这个函数 |
|
地板#
发布于:2004-05-08 09:39
NTOSKRNL没有导出ZwReadVirtualMemory,而只在NTDLL里有,所以你可以在RING3来调用该函数,而不能直接在驱动中使用,当然我看了下在XP下该函数在SERVICETABLE中的序号为BAH,所以你也可以通过该序号直接定位到该函数,而在驱动中直接调用他。
|
|
|