能力值:
( LV2,RANK:10 )
|
-
-
2 楼
typedef struct _ServiceDescriptorTable {
PVOID ServiceTableBase; //System Service Dispatch Table 的基地址
PVOID ServiceCounterTable;
//包含着 SSDT 中每个服务被调用次数的计数器。这个计数器一般由sysenter 更新。
unsigned int NumberOfServices;//由 ServiceTableBase 描述的服务的数目。
PVOID ParamTableBase; //包含每个系统服务参数字节数表的基地址-系统服务参数表
}ServiceDescriptorTable,*PServiceDescriptorTable;
__declspec(dllimport) ServiceDescriptorTable KeServiceDescriptorTable;
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
测试了,通不过,错误提示:error LNK2001: unresolved external symbol "struct _ServiceDescriptorTable * KeServiceDescriptorTable" (?KeServiceDescriptorTable@@3PAU_ServiceDescriptorTable@@A)
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
是这个:
__declspec(dllimport) ServiceDescriptorTable KeServiceDescriptorTable;
不是这个
__declspec(dllimport) PServiceDescriptorTable KeServiceDescriptorTable;
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
测了,一样的通不过,不懂怎么回事,去掉long addr1=(long)KeServiceDescriptorTable->ServiceTableBase ;
就编译通过
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
奇怪了,这些代码拿到dos版本下去编译可以能过,为什么在2008里不行呢
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
没招了,好不容易架好了2008ddk,难不成又回到dos版本去编,烦,有人会的吗,教教我啊
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
..驱动的文件名要用.c 而不是.cpp
?KeServiceDescriptorTable@@3PAU_ServiceDescriptorTable@@A 是c++类型
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
是2008自动生成的,这个应该没错,建其它设备都没问题,就这个extern出了问题
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
没招了,晕啊,弄了一个晚上了还不行
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
没有人知道怎么解决吗
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
前面人已经给出答案了
extern "C"
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
另外建议就拿 VS 当做代码编辑器用,编译还是用 WDK 命令行吧。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
正解,最后是用extern "C"解决,要关掉平台后再加才行,在错误的是候加extern 不一定行,可能是我电脑中毒或是平台的一个漏洞
|
能力值:
( LV12,RANK:760 )
|
-
-
15 楼
话说,我一直很喜欢脚本编译模式~VS只是一个IDE而已,何必在乎~
据说某些神人喜欢拿notepad写代码~~
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
喜欢用notepad++写代码。插件很强大。
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
明显是链接器找不到,标示符实体所在位置,加上静态库就行了
#pragma comment(lib,"ntoskrnl.lib")
|
|
|