wchsuperman
驱动牛犊
驱动牛犊
  • 注册日期2004-03-02
  • 最后登录2005-11-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1796回复:2

[求助]应用程序应该怎么调用驱动程序?

楼主#
更多 发布于:2004-10-29 14:22
本人目前遇到一个问题,需要在应用程序中控制、使用驱动程序中的一些功能,而且wince中的驱动程序大都是dll形式的,那么应用程序可以直接加载这些dll,并使用其中的导出函数吗?特别是像LCD、狱摸屏驱动之类的非流接口驱动,如果不行,那又该怎么控制这些非流接口驱动呢?希望大侠能够不吝赐教。
big_chen
驱动牛犊
驱动牛犊
  • 注册日期2004-06-10
  • 最后登录2006-10-22
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-11-01 00:08
让小弟嘀咕一下吧:

WinCE 的驱动一般分为本地驱动和可定制的驱动.好象你所说的LCD等的驱动应该属于本地驱动.本地驱动好象是和系统结合比较紧密,是由OEM灌系统时就已开发好的,不方便移植.这类驱动应该由操作系统把底层的物理特性抽象出来作为接口给上层调用.因而,我的愚见是你可以参考一些WINCE和本地驱动相关的接口调用函数之类的文档,说不定可以达到事半功倍的效果呢.

小陈
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-11-01 14:33
如果你在应用进程中load驱动dll的话有可能有问题,主要是涉及到内核虚拟地址和应用进程虚拟地址转换的时候,不过我认为仔细设置可以避免这个问题。主要是dll共享数据的维护问题。另外一个问题是多进程访问硬件,你自己开一个口子来访问的话会破坏互斥。

对于非流接口驱动需要额外操作的情况,ce也留了接口,类似于XXX_iocontrol的流接口函数。

对于显示驱动控制,在应用中可以调用:
ULONG APIENTRY DrvEscape(
    DHPDEV   dhpdev,
    SURFOBJ *pso,
    ULONG    iEsc,
    ULONG    cjIn,
    PVOID    pvIn,
    ULONG    cjOut,
    PVOID    pvOut)

而显示驱动内部实现gpe成员函数:
    virtual ULONG   DrvEscape(
                        SURFOBJ *pso,
                        ULONG    iEsc,
                        ULONG    cjIn,
                        PVOID    pvIn,
                        ULONG    cjOut,
                        PVOID    pvOut);

这样可以实现io显示器控制。

触摸屏的好象不那么明显,不过看你要控制什么了,办法总是有的:)
根据地的兄弟们,团结就是力量
游客

返回顶部