阅读:1796回复:2
[求助]应用程序应该怎么调用驱动程序?
本人目前遇到一个问题,需要在应用程序中控制、使用驱动程序中的一些功能,而且wince中的驱动程序大都是dll形式的,那么应用程序可以直接加载这些dll,并使用其中的导出函数吗?特别是像LCD、狱摸屏驱动之类的非流接口驱动,如果不行,那又该怎么控制这些非流接口驱动呢?希望大侠能够不吝赐教。
|
|
沙发#
发布于:2004-11-01 00:08
让小弟嘀咕一下吧:
WinCE 的驱动一般分为本地驱动和可定制的驱动.好象你所说的LCD等的驱动应该属于本地驱动.本地驱动好象是和系统结合比较紧密,是由OEM灌系统时就已开发好的,不方便移植.这类驱动应该由操作系统把底层的物理特性抽象出来作为接口给上层调用.因而,我的愚见是你可以参考一些WINCE和本地驱动相关的接口调用函数之类的文档,说不定可以达到事半功倍的效果呢. 小陈 |
|
论坛版主
![]() |
板凳#
发布于: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显示器控制。 触摸屏的好象不那么明显,不过看你要控制什么了,办法总是有的:) |
|