tjm
tjm
驱动小牛
驱动小牛
  • 注册日期2002-05-18
  • 最后登录2004-10-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2039回复:16

在WDM中能否EXPORT一个服务供其它SYS或APP调用?

楼主#
更多 发布于:2002-12-11 14:15
在VXD中我们可以输出一个函数,供其他VXD调用,在WDM中是否也能这样,如何实现?又如何调用?

最新喜欢:

AxiAxi
tjm
tjm
驱动小牛
驱动小牛
  • 注册日期2002-05-18
  • 最后登录2004-10-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-12-17 00:17
现在成功了。谢谢!但又有了新问题请看:
http://www.driverdevelop.com/forum/viewthread.php?tid=29980

给分了。
sam_h
驱动牛犊
驱动牛犊
  • 注册日期2001-04-19
  • 最后登录2012-01-25
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-12-12 13:18
不一定需要返回错误信息。很简单了。你可以定义一个协议:

例如:发送fffe数据到驱动API,如果返回efff,证明驱动加载,否则没有。

或者干脆API驱动加载时,写注册表,卸载时,删注册表。当然其它的驱动就可以知道是否加载了。

给分!
tjm
tjm
驱动小牛
驱动小牛
  • 注册日期2002-05-18
  • 最后登录2004-10-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-12-12 12:56
非常感谢各位指点。我已经成功了。
但还有一个问题:
当导出函数的驱动没有加载时,另一个驱动在调用这个API时,不返回错误信息,请问我如何知道驱动是否加载?
sam_h
驱动牛犊
驱动牛犊
  • 注册日期2001-04-19
  • 最后登录2012-01-25
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-12-12 10:52
你没有看过waltoney的书?它的例子里面的generic.sys就是输出了很多函数供其他的wdm driver调用的。

但是能不能直接共APP使用,我不清楚。不过我想应该是不可以的。你也最好也不要这样用。
tjm
tjm
驱动小牛
驱动小牛
  • 注册日期2002-05-18
  • 最后登录2004-10-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于: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”
???
dazzy
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-08-12
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望10点
  • 贡献值1点
  • 好评度10点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-12-11 17:29
看一看ddk的classpnp吧。一切都在那里面的。
ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-12-11 17:17
直接在你的.def文件里加。
你可以到NTDDK里面去找一些来参考。
生命驱动,活力无限!
tjm
tjm
驱动小牛
驱动小牛
  • 注册日期2002-05-18
  • 最后登录2004-10-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-12-11 17:08
我对。DEF很不熟,一个程序能有多个DEF文件吗?已经有一个makefile.def了。
kernel_kernel
驱动小牛
驱动小牛
  • 注册日期2002-12-08
  • 最后登录2009-02-06
  • 粉丝0
  • 关注0
  • 积分435分
  • 威望51点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-12-11 16:17
为何不愿search一下呢
http://www.driverdevelop.com/forum/viewthread.php?tid=28342
tjm
tjm
驱动小牛
驱动小牛
  • 注册日期2002-05-18
  • 最后登录2004-10-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-12-11 16:04
因为DDK提供了一个默认的makefile.def,我不敢改呀。
要不,请指点一下。
kernel_kernel
驱动小牛
驱动小牛
  • 注册日期2002-12-08
  • 最后登录2009-02-06
  • 粉丝0
  • 关注0
  • 积分435分
  • 威望51点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-12-11 15:46
那么在WDM中如何导出函数入口?其它SYS如何使用?
能否给个示意例子?在VXD时,我是在。DEF文件中导出,在WDM时找不到DEF了(我是用DDK的BUILD命令)
 


“在WDM时找不到DEF了”
no,一样也可以的。你可以像dll那样处理。
tjm
tjm
驱动小牛
驱动小牛
  • 注册日期2002-05-18
  • 最后登录2004-10-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-12-11 15:21
那么在WDM中如何导出函数入口?其它SYS如何使用?
能否给个示意例子?在VXD时,我是在。DEF文件中导出,在WDM时找不到DEF了(我是用DDK的BUILD命令)
kernel_kernel
驱动小牛
驱动小牛
  • 注册日期2002-12-08
  • 最后登录2009-02-06
  • 粉丝0
  • 关注0
  • 积分435分
  • 威望51点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-12-11 15:06
在VXD中我们可以输出一个函数,供其他VXD调用,在WDM中是否也能这样,如何实现?又如何调用?

Vxd中并不是直接输出,你调用的过程仍旧由系统转发了。
WDM倒可以直接导出函数入口供其它SYS使用,但不可以提供给APP。

search是个好习惯
ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-12-11 15:04
WDM之间相互调用或许可以,应用程序我没听说过。
生命驱动,活力无限!
tjm
tjm
驱动小牛
驱动小牛
  • 注册日期2002-05-18
  • 最后登录2004-10-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-12-11 14:50
使用CreateFile,ReadFile、WriteFile、DeviceIoControl的方法我是知道的,我问的其实是如何让我的SYS输出一个或几个API,供其他人调用,就象WINDOWS一样。
ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-12-11 14:33
我这样理解,不知对不对?


编写驱动程序时,你可以自由地设计一系列IOCTL操作,应用程序也可以使用这些IOCTL操作与你的驱动程序对话。


[编辑 -  12/11/02 by  ydyuse]
生命驱动,活力无限!
游客

返回顶部