3400|5

84

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

如何在驱动中加载DLL [复制链接]

我想利用FILEMON来开发一个实时监控程序,想在驱动中使用loadlibray函数来加载DLL,但WINXPDDK总是报winbase.h文件出错,好像是和ntddk.h有重复的宏定义。请大家帮帮忙!以下是错误报告:
1>g:\winddk\inc\crt\winbase.h(293) : error C2061: syntax error : identifier 'CRITICAL_SECTION'
1>g:\winddk\inc\crt\winbase.h(293) : error C2059: syntax error : ';'
1>g:\winddk\inc\crt\winbase.h(294) : error C2061: syntax error : identifier 'PCRITICAL_SECTION'
1>g:\winddk\inc\crt\winbase.h(294) : error C2059: syntax error : ';'
1>g:\winddk\inc\crt\winbase.h(295) : error C2061: syntax error : identifier 'LPCRITICAL_SECTION'
1>g:\winddk\inc\crt\winbase.h(295) : error C2059: syntax error : ';'
1>g:\winddk\inc\crt\winbase.h(297) : error C2061: syntax error : identifier 'CRITICAL_SECTION_DEBUG'
1>g:\winddk\inc\crt\winbase.h(297) : error C2059: syntax error : ';'
1>g:\winddk\inc\crt\winbase.h(298) : error C2061: syntax error : identifier 'PCRITICAL_SECTION_DEBUG'
1>g:\winddk\inc\crt\winbase.h(298) : error C2059: syntax error : ';'
1>g:\winddk\inc\crt\winbase.h(299) : error C2061: syntax error : identifier 'LPCRITICAL_SECTION_DEBUG'
1>g:\winddk\inc\crt\winbase.h(299) : error C2059: syntax error : ';'
1>g:\winddk\inc\crt\winbase.h(302) : error C2061: syntax error : identifier 'LPLDT_ENTRY'
1>g:\winddk\inc\crt\winbase.h(302) : error C2059: syntax error : ';'
1>g:\winddk\inc\crt\winbase.h(1141) : error C4010: single-line comment contains line-continuation character
1>g:\winddk\inc\crt\winbase.h(1154) : error C2059: syntax error : '('
1>g:\winddk\inc\crt\winbase.h(1183) : error C4005: 'InterlockedCompareExchangePointer' : macro redefinition
1>ntddk.h(6957) : error see previous definition of 'InterlockedCompareExchangePointer'
1>g:\winddk\inc\crt\winbase.h(1196) : error C2375: 'InitializeSListHead' : redefinition; different linkage
1>ntddk.h(12139) : error see declaration of 'InitializeSListHead'
1>g:\winddk\inc\crt\winbase.h(1203) : error C2373: 'InterlockedPopEntrySList' : redefinition; different type modifiers
1>ntddk.h(12329) : error see declaration of 'InterlockedPopEntrySList'
1>g:\winddk\inc\crt\winbase.h(1211) : error C2373: 'InterlockedPushEntrySList' : redefinition; different type modifiers
1>ntddk.h(12336) : error see declaration of 'InterlockedPushEntrySList'
1>g:\winddk\inc\crt\winbase.h(1218) : error C2373: 'ExInterlockedFlushSList' : redefinition; different type modifiers
1>ntddk.h(12320) : error see declaration of 'ExInterlockedFlushSList'
1>g:\winddk\inc\crt\winbase.h(1225) : error C2059: syntax error : '('
1>g:\winddk\inc\crt\winbase.h(1543) : error C2146: syntax error : missing ')' before identifier 'lpBuffer'
1>g:\winddk\inc\crt\winbase.h(1543) : error C2144: syntax error : '' should be preceded by ''
1>g:\winddk\inc\crt\winbase.h(1543) : error C2144: syntax error : '' should be preceded by ''
1>g:\winddk\inc\crt\winbase.h(1543) : error C2143: syntax error : missing ')' before 'identifier'
1>g:\winddk\inc\crt\winbase.h(1543) : error C2081: 'PMEMORY_BASIC_INFORMATION' : name in formal parameter list illegal
1>g:\winddk\inc\crt\winbase.h(1543) : error C2061: syntax error : identifier 'lpBuffer'
1>g:\winddk\inc\crt\winbase.h(1543) : error C2059: syntax error : ';'
1>g:\winddk\inc\crt\winbase.h(1543) : error C2059: syntax error : ','
1>g:\winddk\inc\crt\winbase.h(1545) : error C2059: syntax error : ')'
1>g:\winddk\inc\crt\winbase.h(1605) : error C2146: syntax error : missing ')' before identifier 'lpBuffer'
1>g:\winddk\inc\crt\winbase.h(1605) : error C2144: syntax error : '' should be preceded by ''
1>g:\winddk\inc\crt\winbase.h(1605) : error C2144: syntax error : '' should be preceded by ''
1>g:\winddk\inc\crt\winbase.h(1605) : error C2143: syntax error : missing ')' before 'identifier'
1>g:\winddk\inc\crt\winbase.h(1605) : error C2081: 'PMEMORY_BASIC_INFORMATION' : name in formal parameter list illegal
1>g:\winddk\inc\crt\winbase.h(1605) : error C2061: syntax error : identifier 'lpBuffer'
1>g:\winddk\inc\crt\winbase.h(1605) : error C2059: syntax error : ';'
1>g:\winddk\inc\crt\winbase.h(1605) : error C2059: syntax error : ','
1>g:\winddk\inc\crt\winbase.h(1607) : error C2059: syntax error : ')'
1>g:\winddk\inc\crt\winbase.h(1748) : error C2146: syntax error : missing ')' before identifier 'HeapInformationClass'
1>g:\winddk\inc\crt\winbase.h(1748) : error C2144: syntax error : '' should be preceded by ''
1>g:\winddk\inc\crt\winbase.h(1748) : error C2144: syntax error : '' should be preceded by ''
1>g:\winddk\inc\crt\winbase.h(1748) : error C2143: syntax error : missing ')' before 'identifier'
1>g:\winddk\inc\crt\winbase.h(1748) : error C2081: 'HEAP_INFORMATION_CLASS' : name in formal parameter list illegal
1>g:\winddk\inc\crt\winbase.h(1748) : error C2061: syntax error : identifier 'HeapInformationClass'
1>g:\winddk\inc\crt\winbase.h(1748) : error C2059: syntax error : ';'
1>g:\winddk\inc\crt\winbase.h(1748) : error C2059: syntax error : ','
1>g:\winddk\inc\crt\winbase.h(1751) : error C2059: syntax error : ')'
1>g:\winddk\inc\crt\winbase.h(1758) : error C2146: syntax error : missing ')' before identifier 'HeapInformationClass'
1>g:\winddk\inc\crt\winbase.h(1758) : error C2144: syntax error : '' should be preceded by ''
1>g:\winddk\inc\crt\winbase.h(1758) : error C2144: syntax error : '' should be preceded by ''
1>g:\winddk\inc\crt\winbase.h(1758) : error C2143: syntax error : missing ')' before 'identifier'
1>g:\winddk\inc\crt\winbase.h(1758) : error C2081: 'HEAP_INFORMATION_CLASS' : name in formal parameter list illegal
1>g:\winddk\inc\crt\winbase.h(1758) : error C2061: syntax error : identifier 'HeapInformationClass'
1>g:\winddk\inc\crt\winbase.h(1758) : error C2059: syntax error : ';'
1>g:\winddk\inc\crt\winbase.h(1758) : error C2059: syntax error : ','
1>g:\winddk\inc\crt\winbase.h(1762) : error C2059: syntax error : ')'
1>g:\winddk\inc\crt\winbase.h(2247) : error C2146: syntax error : missing ')' before identifier 'lpSelectorEntry'
1>g:\winddk\inc\crt\winbase.h(2247) : error C2144: syntax error : '' should be preceded by ''
1>g:\winddk\inc\crt\winbase.h(2247) : error C2144: syntax error : '' should be preceded by ''
1>g:\winddk\inc\crt\winbase.h(2247) : error C2143: syntax error : missing ')' before 'identifier'
1>g:\winddk\inc\crt\winbase.h(2247) : error C2081: 'LPLDT_ENTRY' : name in formal parameter list illegal
1>g:\winddk\inc\crt\winbase.h(2247) : error C2061: syntax error : identifier 'lpSelectorEntry'
1>g:\winddk\inc\crt\winbase.h(2247) : error C2059: syntax error : ';'
1>g:\winddk\inc\crt\winbase.h(2248) : error C2059: syntax error : ')'
1>g:\winddk\inc\crt\winbase.h(2484) : error C2146: syntax error : missing ')' before identifier 'lpCriticalSection'
1>g:\winddk\inc\crt\winbase.h(2484) : error C2144: syntax error : '' should be preceded by ''
1>g:\winddk\inc\crt\winbase.h(2484) : error C2144: syntax error : '' should be preceded by ''
1>g:\winddk\inc\crt\winbase.h(2484) : error C2143: syntax error : missing ')' before 'identifier'
1>g:\winddk\inc\crt\winbase.h(2484) : error C2061: syntax error : identifier 'lpCriticalSection'
1>g:\winddk\inc\crt\winbase.h(2484) : error C2059: syntax error : ';'
1>g:\winddk\inc\crt\winbase.h(2485) : error C2059: syntax error : ')'
1>g:\winddk\inc\crt\winbase.h(2491) : error C2146: syntax error : missing ')' before identifier 'lpCriticalSection'
1>g:\winddk\inc\crt\winbase.h(2491) : error C2144: syntax error : '' should be preceded by ''
1>g:\winddk\inc\crt\winbase.h(2491) : error C2144: syntax error : '' should be preceded by ''

最新回复

能给一下这篇文章的地址吗?????  详情 回复 发表于 2008-6-27 02:19
点赞 关注

回复
举报

53

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
filemon包含两部分,一部分是exe,一部分是sys, sys理论上是不能加载dll的,不在同一地址空间。

你可以使用exe加载dll.
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
如果要在驱动中加载DLL,那么这个DLL不能是应用层的,你要先把它改写成驱动层的,调用方法跟应用的差不多,只要把它的头文件和LIB文件包括了,就可以调用里面的函数了.但是你这个DLL一定要改写,应用层的不行.
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

4
 
1楼的不太对,我做过在驱动调用DLL的,后缀名可以改成sys,呵呵。还有,如果楼主你已经改写了,那么头文件的包含顺序也有一些关系,有时候顺序不同就会出错。
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

5
 
驱动只能调用内核态的DLL, 不能使用用户态的API LoadLibrary()。如何创建内核态的DLL,网上有一篇很经典的E文说明了步骤,参考一下你就明白怎么做了
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 4 楼 jintianyishiyeai 的回复:
驱动只能调用内核态的DLL, 不能使用用户态的API LoadLibrary()。如何创建内核态的DLL,网上有一篇很经典的E文说明了步骤,参考一下你就明白怎么做了


能给一下这篇文章的地址吗?????
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表