阅读:2037回复:16
在WDM中能否EXPORT一个服务供其它SYS或APP调用?
在VXD中我们可以输出一个函数,供其他VXD调用,在WDM中是否也能这样,如何实现?又如何调用?
|
|
最新喜欢:![]() |
沙发#
发布于:2002-12-11 14:33
我这样理解,不知对不对?
编写驱动程序时,你可以自由地设计一系列IOCTL操作,应用程序也可以使用这些IOCTL操作与你的驱动程序对话。 [编辑 - 12/11/02 by ydyuse] |
|
|
板凳#
发布于:2002-12-11 14:50
使用CreateFile,ReadFile、WriteFile、DeviceIoControl的方法我是知道的,我问的其实是如何让我的SYS输出一个或几个API,供其他人调用,就象WINDOWS一样。
|
|
地板#
发布于:2002-12-11 15:04
WDM之间相互调用或许可以,应用程序我没听说过。
|
|
|
地下室#
发布于:2002-12-11 15:06
在VXD中我们可以输出一个函数,供其他VXD调用,在WDM中是否也能这样,如何实现?又如何调用? Vxd中并不是直接输出,你调用的过程仍旧由系统转发了。 WDM倒可以直接导出函数入口供其它SYS使用,但不可以提供给APP。 search是个好习惯 |
|
5楼#
发布于:2002-12-11 15:21
那么在WDM中如何导出函数入口?其它SYS如何使用?
能否给个示意例子?在VXD时,我是在。DEF文件中导出,在WDM时找不到DEF了(我是用DDK的BUILD命令) |
|
6楼#
发布于:2002-12-11 15:46
那么在WDM中如何导出函数入口?其它SYS如何使用? “在WDM时找不到DEF了” no,一样也可以的。你可以像dll那样处理。 |
|
7楼#
发布于:2002-12-11 16:04
因为DDK提供了一个默认的makefile.def,我不敢改呀。
要不,请指点一下。 |
|
8楼#
发布于:2002-12-11 16:17
为何不愿search一下呢
http://www.driverdevelop.com/forum/viewthread.php?tid=28342 |
|
9楼#
发布于:2002-12-11 17:08
我对。DEF很不熟,一个程序能有多个DEF文件吗?已经有一个makefile.def了。
|
|
10楼#
发布于:2002-12-11 17:17
直接在你的.def文件里加。
你可以到NTDDK里面去找一些来参考。 |
|
|
11楼#
发布于:2002-12-11 17:29
看一看ddk的classpnp吧。一切都在那里面的。
|
|
12楼#
发布于:2002-12-11 17:53
我没提供DEF文件,哪个makefile.def是DDK提供的,说明中说不许改,我这样的菜鸟哪敢随便改啊。makefile.def很长啊
是不是在写一个DEF文件,一共有两个,可不可以呀? 我原来看过一个ASM的DEF如何输出服务,不知C++下如何写? 我的项目中有DDK提供的makefile(没后缀),只有一句话: !INCLUDE $(NTMAKEENV)\\makefile.def 如果我再写个DEF,是不是再加一句 !INCLUDE $(NTMAKEENV)\\MY.def 或者在CPP文件中直接 #INCLUDE “MY。DEF” ??? |
|
13楼#
发布于:2002-12-12 10:52
你没有看过waltoney的书?它的例子里面的generic.sys就是输出了很多函数供其他的wdm driver调用的。
但是能不能直接共APP使用,我不清楚。不过我想应该是不可以的。你也最好也不要这样用。 |
|
14楼#
发布于:2002-12-12 12:56
非常感谢各位指点。我已经成功了。
但还有一个问题: 当导出函数的驱动没有加载时,另一个驱动在调用这个API时,不返回错误信息,请问我如何知道驱动是否加载? |
|
15楼#
发布于:2002-12-12 13:18
不一定需要返回错误信息。很简单了。你可以定义一个协议:
例如:发送fffe数据到驱动API,如果返回efff,证明驱动加载,否则没有。 或者干脆API驱动加载时,写注册表,卸载时,删注册表。当然其它的驱动就可以知道是否加载了。 给分! |
|
16楼#
发布于:2002-12-17 00:17
现在成功了。谢谢!但又有了新问题请看:
http://www.driverdevelop.com/forum/viewthread.php?tid=29980 给分了。 |
|