首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>NET专区>其他>WinCE BSP中OAL层中的OEMIoControl介绍
WinCE BSP中OAL层中的OEMIoControl介绍
来源: 发布时间:2008-02-20 发布人: 浏览: 人次   字体: [ ]  

在WinCE的BSP中的OAL部分,会有一个ioctl.c或者oemioctl.c文件,里面主要定义了一个叫OEMIoControl(..)的函数。可以说OEMIoControl是一个很有用的WinCE内核输入/输出函数。

在WinCE5.0中,应用程序和驱动程序可以通过调用KernelIoControl(..)函数来访问WinCE内核,导致调用OEMIoControl函数,这样应用程序和驱动程序就可以访问到OAL中的资源了。但在WinCE6.0中,提供了更好的安全性,应用程序能够访问OEMIoControl中的case受到了限制,只有下面的这些case是可以让应用程序访问的:

IOCTL_HAL_GET_CACHE_INFO
IOCTL_HAL_GET_DEVICE_INFO
IOCTL_HAL_GET_DEVICEID
IOCTL_HAL_GET_UUID
IOCTL_PROCESSOR_INFORMATION

如果用户在应用程序中试图访问其他的case,肯定会返回失败的。在WinCE6.0中,驱动程序还像以前一样,可以访问OEMIoControl中的任何case。也许有人会问,那么我们如何让应用程序也访问到一些case呢??

办法还是有的,可以看一下\WINCE600\public\common\oak\oalioctl\oalioctl.c,这个文件中定义了应用程序可以访问的case,把你的应用程序要访问的case加到这个文件中的IOControl(..)函数中就可以了。当然,你需要重新编译\public目录。

在WinCE5.0中,OEMIoControl函数被定义在BSP中的OAL部分,上面已经提到,应该是ioctl.c或者oemioctl.c,但是在WinCE6.0中,这个函数的定义被移到了\WINCE600\platform\common\src\common\ioctl\ioctl.c中了,这里面的OEMIoControl函数和以前也有了变化,该函数会查一个表:g_oalIoCtlTable[]。该表实际上是一个结构数组,定义了OEMIoControl中所有的case,已经针对这个case的处理函数,还包括一个针对每个case的flag,该flag表示是否使用临界区保护。具体定义如下:

typedef struct {  UINT32 code;  UINT32 flags;  BOOL (*pfnHandler) (UINT32, VOID*, UINT32, VOID*, UINT32, UINT32*);} OAL_IOCTL_HANDLER, *POAL_IOCTL_HANDLER;

所以,在WinCE6.0的BSP中,我们只需要实现g_oalIoCtlTable[]就可以了。例如:

const OAL_IOCTL_HANDLER g_oalIoCtlTable[]={
{ IOCTL_HAL_POSTINIT,                                               0, OALIoCtlHalPostInit         },
{ IOCTL_HAL_GET_HIVE_CLEAN_FLAG,                  0, OALIoCtlHalGetHiveCleanFlag },
{ IOCTL_HAL_GET_HWENTROPY,                             0, OALIoCtlHalGetHWEntropy     },
{ IOCTL_HAL_GET_IMAGE_SIGNED_STATE,          0, OALIoCtlHalGetImageSignedState },
{ IOCTL_HAL_QUERY_FORMAT_PARTITION,         0, OALIoCtlHalQueryFormatPartition },
{ 0,                                                                                      0, NULL}
};

在OEMIoControl函数中,我们不光要实现OEMIoControl中的case,有一些全局的OAL变量我们也需要定义:

g_oalIoCtlClockSpeed

This global variable contains information about the processor clock speed.

g_oalIoCtlInstructionSet

This global variable contains the processor instruction set identifier.

g_oalIoCtlPlatformOEM

This global variable contains information about the hardware platform OEM.

g_oalIoCtlPlatformType

This global variable contains information about the hardware platform type.

g_oalIoCtlProcessorCore

This global variable contains information about the processor core.

g_oalIoCtlProcessorName

This global variable contains information about the processor name.

g_oalIoCtlProcessorVendor

This global variable contains information about the processor vendor.

其实都是一些硬件及平台的相关信息,定义一下就可以了。

有时根据具体需要,我们还希望在OEMIoControl函数中添加自己定义的case,这个比较简单,只要定义个case,然后在这个case下写你的实现代码就可以了,驱动程序通过KernelIoControl调用同样的case就可以调用到你在OEMIoControl中定义的case了。关于case值得定义,一般都在2048到4096之间会比较安全,我记得在WinCE6.0下,看微软的代码好像256以上就可以了,具体没有试过,要是保险的话,还是用2048以上的值吧。


相 关 文 章   发布商链接
·在WinCE5.0和WinCE6.0中编译选项介绍...
·silverlight是什么?有什么用?
·浅谈asp.net服务器端控件与客户端脚...
·如何在.NET打包时加入卸载功能两法
·.Net程序如何脱离.net框架也能正常运...
·实例讲解ASP.NET抽象工厂模式教程
·怎样开启WinCE中的File Server?
·如何用Silverlight制作scrollbar的步...
·Wine环境下成功运行Bitcomet 1.01下...
·WINE中文字体显示方块的解决方案
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·安装WinCE6.0的开发环境全攻...
·CE6和CE5在Platform Builder...
·WINCE自带的驱动程序被修改后
·图解Mobile5.0的环境配置和开
·WinCE分析Flash分区原则和块...
·WINE中文字体显示方块的解决...
·Wine环境下成功运行Bitcomet ...
·如何用Silverlight制作scroll...
·怎样开启WinCE中的File Serve...
·实例讲解ASP.NET抽象工厂模式
·.Net程序如何脱离.net框架也...
·如何在.NET打包时加入卸载功...
·浅谈asp.net服务器端控件与客
·silverlight是什么?有什么用?
·在WinCE5.0和WinCE6.0中编译...
热 门 文 章
·WINE中文字体显示方块的解决...
·在WinCE5.0和WinCE6.0中编译...
·WinCE下,快速编译驱动及BSP...
·实例讲解ASP.NET抽象工厂模式...
·WinCE中telnet,FTP及网络共享...
·WinCE BSP中打印信息的实现介...
·WinCE中RTC驱动开发介绍
·实例详解WinCE中Display驱动...
·Wince开发之创建桌面快捷方式
·wince动态加载图片,数据类型...
·wince中BIB文件的详细介绍
·WinCE环境变量的添加,删除和...
·图解WinCE6.0添加自定义的工...
·安装WinCE6.0的开发环境全攻...
·实例讲解PDA入门开发的过程,...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .