阅读:2365回复:10
如何调用驱动程序中的函数
我现在想从应用程序调用一个驱动程序中的一个函数,这个驱动程序在Win98系统启动时被加载。如果直接调用的话会有页面错误,请问最常用的办法有那些?多谢了,鞠躬了。
|
|
最新喜欢:jmzz00... |
沙发#
发布于:2001-09-05 08:38
一定要用deviceiocontrol之类的函数吧
|
|
|
板凳#
发布于:2001-09-05 21:22
[QUOTE]原本由 winter 发表
[B]一定要用deviceiocontrol之类的函数吧 [/B][/QUOTE] 应该是这样,好象应用层调驱动程序再没有别的办法了。 |
|
|
地板#
发布于:2001-09-06 00:39
问题是我只知道该驱动程序函数的名字和参数,但是不知道这个函数提供的SERVICE的IOCTL CODE和对外开放的详细情况,也就是说没有供应用程序引用的H头文件。那就死定了吗?可不可以自己写一个VXD来直接引用那个函数,然后让应用程序和这个VXD通信?还望有识之士指点。
|
|
地下室#
发布于:2001-09-06 09:46
"调用一个驱动程序中的一个函数",你说的这个函数是属于内核模式的函数吗?是在这个驱动程序(设为nVxd)中对外输出的函数吗?
如果是的话,(你好像是WIn9x下的Vxd)你要先建造一个Vxd驱动(定为mVxd),在mVxd中提供DeviceIoControl供应用程序调用,然后在这个DeviceIoControl中调用nVxd对外输出的函数来调用nVxd驱动。 一般来讲,驱动若在内核模式提供的函数服务在应用层也定会有相应的,你同原厂商联系一下,不用这样绕弯子。:)还记得给分!! |
|
5楼#
发布于:2001-09-06 12:47
[QUOTE]原本由 blue 发表
[B]"调用一个驱动程序中的一个函数",你说的这个函数是属于内核模式的函数吗?是在这个驱动程序(设为nVxd)中对外输出的函数吗? 如果是的话,(你好像是WIn9x下的Vxd)你要先建造一个Vxd驱动(定为mVxd),在mVxd中提供DeviceIoControl供应用程序调用,然后在这个DeviceIoControl中调用nVxd对外输出的函数来调用nVxd驱动。 一般来讲,驱动若在内核模式提供的函数服务在应用层也定会有相应的,你同原厂商联系一下,不用这样绕弯子。:)还记得给分!! [/B][/QUOTE] 即使两个VXD间的VXD_SERVER也需要知道提供的服务,而且还需要看看驱动程序是否提供VXD_SERVER。 IoCallDevice也需要有相应的内部IOCTL码相应。 所以必须有厂商的支持。不管是从应用层调用还是从驱动层调用。 |
|
|
6楼#
发布于:2001-09-06 15:22
实际上就是因为厂商没有提供驱动程序函数的输出服务(No Driver function export service),我恰好知道驱动程序中的几个模块的函数名和参数。所以就问问有什么旁门左道可以直接调用这些核心函数。无论如何,谢谢各位了。顺便问一下,怎么给分?
|
|
7楼#
发布于:2001-09-06 19:25
有函数名? 是VxD还是Dll(Drv)?
如果是VxD得有函数的Number才成, 是Dll或者Drv用GetModuleHandle,再GetProcAddress就行了。 别看前面的,我明白什么意思了. 理论上可以通过反汇编获得函数的入口地址(当然不知道是什么函数的),然后去试……(而且别忘了进入Ring0) [svgxl 编辑于 2001-09-06 20:57] |
|
8楼#
发布于:2001-09-06 19:58
[QUOTE]原本由 cheart 发表
[B]实际上就是因为厂商没有提供驱动程序函数的输出服务(No Driver function export service),我恰好知道驱动程序中的几个模块的函数名和参数。所以就问问有什么旁门左道可以直接调用这些核心函数。无论如何,谢谢各位了。顺便问一下,怎么给分? [/B][/QUOTE] 在你最上面的帖子下的按钮有一个是“给分”。 |
|
|
9楼#
发布于:2001-09-07 10:30
To svqxl:
也就是说只能反汇编找到那些函数address,然后创建一个ring0进程去调那些函数入口address来一个个试,直到找到位置?(那些函数都在一个。SYS文件里面)。 能再描述得具体一些吗?谢谢。 BTW,有谁知道热门的国外的驱动相关的Maillist? [cheart 编辑于 2001-09-07 10:41] |
|
10楼#
发布于:2001-09-07 16:34
……
不好意思sys我就不清楚了。如果不是内部函数的话,总是有迹可循的。比如说程序中有集中大批地存储函数的首址情况,或者看与其相关的其他文件对其中函数的调用等等。 说老实话,我是个新的不能再新的新手。 |
|