[英]DDK/WDM import wink32.lib into driver
最近,我试图在驱动程序中使用W32pServiceTable。 我在SOURCES中导入了wink32.lib:
TARGETNAME=exp
TARGETTYPE=DRIVER
TARGETLIB=$(DDK_LIB_PATH)\win32k.lib
SOURCES=Experimental.cpp
MSC_WARNING_LEVEL=/W3
我在源文件中声明:
extern PDWORD W32pServiceTable;
但是我无法解决符号。 我读到,只有GDI驱动程序可以使用wink32.lib。 但是我很确定其他驱动程序也可以链接到该库(但是我不知道如何)。 如果您能帮助我,我将非常感谢。
这是真的。 只有GDI驱动程序可以使用win32k.sys,反之亦然-GDI驱动程序只能静态链接到win32k.sys。
这样做的原因是,大多数Windows内部部件都被加载到了全局内存空间中,而win32k.sys被加载到了所谓的“会话空间”中。 一些信息在这里:
http://www.tar.hu/wininternals/ch07lev1sec4.html
简而言之-大多数Windows组件和驱动程序为整个系统加载一次,而UI管理,GDI等内容则是按会话加载。
在运行时,GDI驱动程序有一个棘手的可能性来获取指向ntoskrnl函数的指针并使用它们,反之亦然-WDM驱动程序稍加努力就可以使用win32k函数(将在“当前”会话中使用)。
无论如何,为什么要链接到win32k? 您需要什么功能?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.