WinCE 控制面板和驱动通信
//=====================================================================================================
//AUTHOR:
// norains
//DATE:
// Saturday 25-Feb-2006
//=====================================================================================================
控制面板有不少组件,是直接和驱动通信的,其过程一般如此(以创建一个"MyBacklightChange"事件为例子):
1.驱动初始化,并创建一个线程,在线程内部创建一个通信的事件
Class MyDriver
{
....
private:
void MyInit();
//一个线程处理程序,注意在这里必须声明为static,否则编译(PB4.1)的时候会出错,不知道为什么
static DWORD WINAPI MyBacklightChangeThreadProc(PVOID pArg);
....
}
//驱动初始化函数:
MyDriver::MyInit()
{
....
//-------------------------------
//创建一个线程
HANDLE hMyThread;
DWORD dwMyThreadID;
//CreateThread函数调用之后,会进入到线程处理函数MyBacklightChangeThreadProc里面去
hMyThread=CreateThread(NULL,0,MyBacklightChangeThreadProc,0,0,&dwMyThreadID);
//由于MyBacklightChangeThreadProc是一个死循环,所以一般不会执行到关闭线程这段
if(hMyThread!=NULL)
{
CloseHandle(hMyThread);
}
....
}
2.在驱动线程内部的死循环体调用WaitForSingleObject()函数进行等待
DWORD WINAPI SocLcd::MyBacklightChangeThreadProc(PVOID pArg)
{
//创建一个背光灯事件,事件名称要与控制面板创建的事件名相同
HANDLE hEvent = CreateEvent(NULL, FALSE, FALSE, L"MyBacklightChange");
//死循环,不断接受信息
while(true)
{
//如果控制面板不发送信号,则此线程会一直停留在WaitForSingleObject处
WaitForSingleObject(hEvent, INFINITE);
//-------------------------------------------------------------------------
//只有获得信号之后,才会往这里执行
//在这里执行相关操作,比如:读写注册表,操作寄存器等等
//-------------------------------------------------------------------------
}
CloseHandle(hEvent);
return 0;
}
3.接下来,我们来看看控制面板如何发送信号
DWORD SendEvent()
{
//在这里创建一个事件,注意:此事件的名称必须要和驱动接收的名称相同,否则驱动无法获取信号
HANDLE hEvent = CreateEvent(NULL, FALSE, FALSE, L"MyBacklightChange");
if (hEvent != NULL)
{
//发送信号
SetEvent(hEvent);
CloseHandle(hEvent);
return TRUE;
}
return FALSE;
}
windows ce下的控制面板和硬件打交道的组件就是采用此机制和驱动进行通信,唯一多出之处,就是组件会写注册表,然后再发送信号;驱动接到信号之后,先读注册表,根据读取的数值对硬件进行操作.
转载于:https://www.cnblogs.com/wodeyitian/archive/2006/02/25/2460578.html
WinCE 控制面板和驱动通信相关推荐
- 【WinCE】SD card技术了解并WINCE下SDHC驱动开发(updated)
SD Card Driver on ADS Summary 了解SD card. 1 WinCE 5.0下SD Stack. 6 Bus Driver 7 Host Controller Driver ...
- 狸猫换太子:动态替换WinCE的原生驱动!
//===================================================================== //TITLE: // 狸猫换太子:动态替换Win ...
- WinCE控制面板添加应用程序
WinCE系统中的控制面板和Windows系统中的控制面板原理是一样的,里面就是包含了一些应用程序.WinCE系统的控制面板由Ctlpnl.exe,Control.exe和一些.cpl文件组成,其中C ...
- Windows驱动—Windows应用程序和Windows驱动通信编程
文章目录 介绍 知识前奏 内核方面编程 设备对象和符号链接 分发函数 应用方面编程 打开设备 设备控制请求 代码 应用层代码 内核层代码 完整工程代码 测试效果 介绍 Windows应用程序(Ring ...
- PXA270处理器PCMCIA/CF接口设计及WinCE 5.0驱动实现 ----eetchina.com
PXA270处理器PCMCIA/CF接口设计及WinCE 5.0驱动实现 ----eetchina.com 2008年09月19日 星期五 21:20 本文以Intel PXA270开发平台Mains ...
- S3C2440的camera接口特性及WinCE 下的驱动
S3C2440的camera接口特性及WinCE 下的驱动 发布:2011-06-02 | 作者: | 来源: luhaifei | 查看:1022次 | 用户关注: 摘要:实现了一种全集成可变带宽中 ...
- WinCE虚拟串口驱动
//======================================================================== //TITLE: // WinCE虚 ...
- usb扫描枪驱动下载 wince_WinCE系列全站仪USB驱动程序(WinCE全站仪USB驱动) 最新中文版...
WinCE系列全站仪USB驱动程序(WinCE全站仪USB驱动) 最新中文版 WinCE系列全站仪usb驱动程序是一款WinCE系列全站仪连接USB驱动同步软件,适合全系列Windows操作系统,支持 ...
- 基于WinCE的I2C驱动程序设计
http://www.mcu123.com/news/Article/rtos/WinCE/200607/88.html 引言 随着以计算机技术.通信技术和软件技术为核心的信息技术的迅速发展,嵌入式系 ...
最新文章
- 转:AbstractQueuedSynchronizer的介绍和原理分析
- python运维脚本部署jdk_Jenkins自动执行Python脚本,并输出测试报告
- python读取进程内存_Python读取Linux内存进程错误(/ proc / $pid / mem...
- 教你些技巧,用 Python 自动化办公做一些有趣的事情!太方便了
- 剧透LiveVideoStackCon 2020:除了干货,还有更多优惠的年度通票
- 边缘计算和网络切片,为何成为5G的“技术网红”
- oracle with as内存,oracle中with as子句的用法小结(转)
- input file HTML控件控制
- ngui中 代码调用按钮事件(后来改成了按钮绑定键盘..)
- DataTable 转换 DataSet
- WebUtils-网络请求工具类
- vue 第十天 (组件的基本使用)
- 腾讯位置服务开发应用-使用教程,案例分享,知识总结
- [机器学习与scikit-learn-33]:算法-回归-通过PolynomialFeatures实现数据的升维
- 提升自己的实力才是硬道理
- 三坐标检测之精密模具检测2021
- (论文阅读笔记)Semantic-Aware Domain Generalized Segmentation
- 嵌入式地理信息系统技术
- 服务启动日志时间跟系统时间不相符问题
- 基于能力保护原则的桥梁抗震设计
热门文章
- Flask Jinja2模板
- Pandas DataFrame 去重
- java decompiler 使用_是否有任何Java Decompiler可以正确地反编译对重载方法的调用?...
- mysql行转列和列转行_Mysql中行转列和列转行
- go数据结构与算法| 稀疏数组
- pr抖动插件_某宝价值135元的PS/AE/PR全套插件合集,一键安装,大神必备这一套就够了【第10期】...
- redis怎么修改_面试官问我Redis事务,还问我有哪些实现方式
- au如何关闭预览编辑器_在线IDE开发入门之从零实现一个在线代码编辑器
- MariaDB日志审计 帮你揪出内个干坏事儿的小子
- 批量修改一张表格的多个sheet名