WinCE OAL中的OEMIoControl函数
关于OEMIoControl函数,我在2008年1月份写过一篇blog叫“WinCE BSP中OAL层中的OEMIoControl介绍”,已经比较详细的介绍了OEMIoControl,今天在这里只是对OEMIoControl中比较常用的case说一说。看看PB的文档就知道OEMIoControl可以包含很多case而且被分了类。下面就我个人接触到的和比较常用的做个说明:
1. IOCTL_HAL_INIT_RTC:
对应OALIoctlHalInitRTC函数,该case用于重新初始化RTC。在系统冷启动的时候,内核会调用它来设置时钟。
dwIoControlCode:IOCTL_HAL_INIT_RTC
lpInBuf:要设置的时钟结构体
实际上在该case中一般都是注册RTC的ALarm中断,然后调用OEMSetRealTime函数来进行设置。关于OAL中的RTC的说明,可以参考我在2008年1月写的“WinCE中RTC驱动开发介绍”。
2. IOCTL_HAL_POSTINIT:
对应OALIoctlHalPostInit函数,该case会被内核调用,不传入任何数据,也不返回任何数据。在系统进程启动之前,它提供了最后一次机会让我们在OAL中做一些动作。
3. IOCTL_HAL_ILTIMING:
对应OALIoctlHalILTiming函数,该case实现了对ILTiming的支持,当Iltiming.exe运行时,该case会被调用。
dwIoControlCode:IOCTL_HAL_ILTIMING
lpInBuf:传入ILTiming结构
4. IOCTL_HAL_REBOOT:
对应OALIoctlHalReboot函数,该case用于热启动系统。
5. IOCTL_HAL_ENABLE_WAKE:
对应OALIoctlHalEnableWake函数,该case用于添加可唤醒系统的中断源。
dwIoControlCode:IOCTL_HAL_ENABLE_WAKE
lpInBuf:可唤醒系统的系统中断号
6. IOCTL_HAL_DISABLE_WAKE:
对应OALIoctlHalDisableWake函数,该case用于删除可唤醒系统的中断源。
dwIoControlCode:IOCTL_HAL_DISABLE_WAKE
lpInBuf:被删除的系统中断号
7. IOCTL_HAL_GET_HIVE_CLEAN_FLAG:
对应OALIoctlHalGetHiveCleanFlag函数,该case会被Filesys模块调用,用于确定是否清除系统Hive和用户Hive。
dwIoControlCode:IOCTL_HAL_GET_HIVE_CLEAN_FLAG
lpInBuf:HIVECLEANFLAG_SYSTEM表示查询系统Hive;HIVECLEANFLAG_USERS表示查询用户Hive
lpOutBuf:返回TRUE表示清除,返回FALSE表示不清除
8. IOCTL_HAL_GET_HIVE_RAM_REGION:
对应OALIoctlHalGetHiveRamRegion函数,该case会被Filesys模块调用,返回一块内存区域用来存放Hive,此时系统Hive和用户Hive是存放在一起的,所以所有的用户都使用同一个用户Hive。
dwIoControlCode:IOCTL_HAL_GET_HIVE_RAM_REGION
lpOutBuf:返回一个存放Hive的RAM结构信息
9. IOCTL_HAL_QUERY_FORMAT_PARTITION:
对应OALIoctlHalQueryFormatPartition函数,该case会被Filesys模块调用,返回是否需要格式化某个分区。对于一块存储介质来说,如果在该介质驱动的注册表配置中设置了CheckForFormat项,Filesys模块才会调用该case,例如:
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/MyProfile/FATFS]
"CheckForFormat"=dword:1
dwIoControlCode:IOCTL_HAL_QUERY_FORMAT_PARTITION
lpInBuf:传入存储介质的信息
lpOutBuf:返回TRUE表示该分区需要格式化,返回FALSE表示不需要格式化
10. IOCTL_HAL_REQUEST_IRQ:
对应OALIoctlHalRequestIrq函数,该case用于为一个总线设备申请硬件中断号。
dwIoControlCode:IOCTL_HAL_REQUEST_IRQ
lpInBuf:传入总线设备的位置信息
lpOutBuf:返回硬件中断号
11. IOCTL_HAL_REQUEST_SYSINTR:
对应OALIoctlHalRequestSysintr函数,该case用于完成物理IRQ到系统中断之间的映射。
dwIoControlCode:IOCTL_HAL_REQUEST_SYSINTR
lpInBuf:物理IRQ
lpOutBuf:系统中断SYSINTR
12. IOCTL_HAL_RELEASE_SYSINTR:
对应OALIoctlHalReleaseSysintr,该case用于释放以前申请的系统中断SYSINTR。
dwIoControlCode:IOCTL_HAL_RELEASE_SYSINTR
lpInBuf:要被释放的系统中断SYSINTR
13. IOCTL_PROCESSOR_INFORMATION:
对应OALIoctlHalProcessorInformation函数,该case用于应用程序获得处理器的相关信息。
dwIoControlCode:IOCTL_PROCESSOR_INFORMATION
lpOutBuf:返回处理器的相关信息
14. IOCTL_HAL_GET_DEVICE_INFO:
对应OALIoctlHalGetDeviceInfo函数,该case用于获得系统的相关参数信息。
dwIoControlCode:IOCTL_HAL_GET_DEVICE_INFO
lpInBuf:系统信息码SPI_xxx
lpOutBuf:根据SPI_xxx码,返回相应的系统信息
15. IOCTL_HAL_QUERY_DISPLAYSETTINGS:
对应OALIoctlHalQueryDisplaysettings函数,该case会被GDI调用来查询显示分辨率和显示深度等信息。
dwIoControlCode:IOCTL_HAL_QUERY_DISPLAYSETTINGS
lpOutBuf:返回显示宽度,高度和深度
WinCE OAL中的OEMIoControl函数相关推荐
- WinCE OAL中的RAM定制函数
在WinCE系统中,Kernel是如何使用内存的,如何知道内存的大小?是通过config.bib文件的描述,我们会在config.bib文件中MEMORY段定义WinCE内核所占用RAM的起始地址和大 ...
- 【转载】WinCE OAL架构分析
转载自:http://blog.csdn.net/nanjianhui/article/details/3830452 我个人认为OAL应该是WinCE BSP中最为重要的一个模块了,简单回顾一下,W ...
- WINCE BSP中source文件中的宏定义
在WinCE BSP中会看到很多sources文件,一般会和源代码放在同一个目录,当然不是绝对的.这些sources文件里面就是定义了一些宏,主要用于告诉Build.exe在编译源代码的时候应该如何编 ...
- WINCE 系统中的同步机制
摘要 Windows® CE 是微软系列嵌入式平台所采用的操作系统内核.本文讨论了 WinCE 进程/线程之间的同步机制,给出了它们的典型应用场景.这些同步机制包括临界区.互斥体.信号量.事件.互锁函 ...
- OpenCV 相机校正过程中,calibrateCamera函数projectPoints函数的重投影误差的分析
OpenCV 校正过程中,calibrateCamera函数的ret和重投影误差的分析 OpenCV对相机进行校正的过程中,校正返回值retval和重投影误差的计算公式表示和分析. OpenCV 校正 ...
- Iar环境c语言调用汇编函数,如何在IAR EWARM中通过内联汇编程序在另一个模块中调用C函数?...
我在硬故障处理程序中有一些程序集.程序集基本上是为了传递当前堆栈指针作为参数(在R0中).它看起来像这样...如何在IAR EWARM中通过内联汇编程序在另一个模块中调用C函数? __asm(&quo ...
- C++11 :STL中的 iota ()函数
该函数是C++11 才引入,之前版本没有此函数. iota 函数是一个计算机语言中的函数,用于产生连续的值.该函数得名自 APL 语言,其中用来产生从 1 开始的连续数值. 该函数位于头文件#incl ...
- Matlab中的lsqcurvefit函数的使用
Matlab中的lsqcurvefit函数的使用 lsqcurvefit函数 调用示例 lsqcurvefit函数 非线性曲线拟合是已知输入向量xdata和输出向量ydata,并且知道输入与输出的函数 ...
- 在Vue的webpack中结合runder函数
在Vue的webpack中结合runder函数 1.引入: <h1>下面是vue的内容:</h1><div id="app"><login ...
最新文章
- 在哪里学python好-为什么要学Python,Python好在哪里?
- 置顶 | 2021学习单/读书单(该来的总会来,过好当下,静待花开)
- 输入两个整数序列。其中一个序列表示栈的push顺序, 判断另一个序列有没有可能是对应的pop顺序。
- 持续更新 | PMCAFF问答专场活动分享笔记大合集
- Action Service Dao三层的功能划分
- 模板 - 快速输入输出
- lucene 索引出错 no segments* file found in org.apache.lucene.store.MMapDirectory
- 你单身,其实是个科学问题……
- P1009 [NOIP1998 普及组] 阶乘之和-2022.02.01(python3实现)
- 表单html遇到的问题及处理,Web前端开发中常见问题及解决方案
- Vijos P1740聪明的质检员
- 图像处理 灰度世界算法
- 凯恩帝绝对坐标清零_凯恩帝 K90T i 数控车床系统使用手册分享
- 【硬石科技】电机系列教学(基于STM32)——PID算法实现闭环控制
- 前端xlsx导入与导出
- 不用 qlv 格式转换成 mp4 - 优雅的下载腾讯视(mp4 格式)
- 单方差分析MATLAB,MATLAB单因素方差分析.PDF
- WSO2 XMl转JSON
- java 迷宫代码_老鼠走迷宫代码 JAVA
- pwd python 安装 模块_python模块学习之OS、PWD
热门文章
- 用Java和ffmpeg把音频和视频合成视频
- 计算机键盘标注,你所不知道的 Windows 10 小诀窍:万能计算器、虚拟键盘、屏幕截图标注...
- qchart 设置线颜色_实战PyQt5: 137-QChart图表之散点图
- html展示pdf文件流,使用pdfjs提供的viewer.html展示pdf文件流
- node作为php中转带参数,Nodejs中使用命令行如何进行传参(代码)
- IT职业就业-学长有话说(二)
- Flag counter被博客园禁了的解决方法
- 开发者福音!面向Web场景的云开发服务正式开放!
- 蠢货别忘(一)common lisp funcall
- Ubuntu安装pycharm并且激活