WinCE 6.0驱动编程中常用的API

 WinCE 6.0驱动编程中常用的API

/************************************************************************************
**本文为作者原创,转载请注明出处,未经本人允许请勿用于商业用途!
**Author:于海平
** 邮箱:linux_fish@126.com
**本文链接:http://blog.csdn.net/drivelinux/article/details/8484252
*************************************************************************************/

一、物理地址到虚拟地址的映射

1.MmMapIoSpace()

PVOID MmMapIoSpace( 
  PHYSICAL_ADDRESS PhysicalAddress, 	//需要映射的物理地址
  ULONG NumberOfBytes, 		//映射长度
  BOOLEAN CacheEnable 		//对设备寄存器而言,其值通常为FALSE
);

该函数的返回值为一个虚拟地址,或NULL。

2.MmUnmapIoSpace()

VOID MmUnmapIoSpace( 
  PVOID BaseAddress, 	//需要取消映射的虚拟地址
  ULONG NumberOfBytes 	//字节数
);

该函数无返回值。

 

 

二、线程编程

 1.CreateThread()

HANDLE CreateThread(
  LPSECURITY_ATTRIBUTES lpsa,	//应设置为NULL
  DWORD cbStack,			//当设置了STACK_SIZE_PARAM_IS_A_RESERVATION标识时,表示为新线程所保留的虚拟内存
  LPTHREAD_START_ROUTINE lpStartAddr,//要创建的线程函数的地址
  LPVOID lpvThreadParam,		//传给线程的一个32位的参数
  DWORD fdwCreate,			//控制创建线程的标识
  LPDWORD lpIDThread		//一个指向32位的变量的指针,该指针用于接收着线程的标识符
);
返回值:若返回一个指向线程的句柄,则表示创建线程成功,否则,若返回NULL,表示创建失败。

该函数在调用它的进程所在的地址空间创建一个线程。fdwCreate的取值及意义如下表所示。

                              Value                                                                                     Description

CREATE_SUSPENDED

The thread is created in a suspended state and does not run until the ResumeThread function is called.

The thread can be run immediately after creation if the flag is not specified.

STACK_SIZE_PARAM_IS_A_RESERVATION

The cbStack parameter specified the maximum stack size instead of being ignored.

This is a Windows Embedded CE only flag for the CreateThread function and is used to reserve the stack size for the thread created.

By default, a thread is created with 64 KB stack reserved. You can use this flag to increase the stack size for the new thread that was created.

2.CeGetThreadPriority()

int CeGetThreadPriority(
  HANDLE hThread //线程的句柄
);

该函数用于获取一个线程的优先级。返回值:若调用成功,则返回一个0~255的优先级值,0为最高优先级,若返回THREAD_PRIORITY_ERROR_RETURN,表示调用失败。

3.CeSetThreadPriority()

BOOL CeSetThreadPriority(
  HANDLE hThread,	//线程的句柄
  int nPriority	//要设置的优先级,0~255
);

该函数用于设置线程的优先级。

4.ExitThread()

VOID ExitThread(
  DWORD dwExitCode	//退出码
);

该函数用于结束一个线程。


5.GetCurrentThread()

HANDLE GetCurrentThread(void);

该函数返回当前线程的伪句柄。

 

三、等待内核对象


1.WaitForSingleObject()

DWORD WaitForSingleObject(
  HANDLE hHandle,
  DWORD dwMilliseconds
);

2.WaitForMultipleObjects()

DWORD WaitForMultipleObjects(
  DWORD nCount, 
  CONST HANDLE* lpHandles, 
  BOOL fWaitAll, 
  DWORD dwMilliseconds 
);


四、电源管理

1.DevicePowerNotify()

DWORD DevicePowerNotify(
  PVOID pvDevice,
  CEDEVICE_POWER_STATE DeviceState,
  DWORD Flags
);

该函数请求电源管理器改变指定设备的电源状态。



五、事件函数

1.CreateEvent()

HANDLE CreateEvent(
  LPSECURITY_ATTRIBUTES	
  lpEventAttributes,	//应设置为NULL
  BOOL bManualReset,	//表示创建的事件对象是手动复位还是自动复位的一个布尔型变量
  BOOL InitialState,	//指示事件的初始状态
  LPTSTR lpName		//事件名
);

该函数用于创建一个事件对象。

2.SetEvent()

BOOL SetEvent(
  HANDLE hEvent	//事件对象的句柄
);

该函数的作用是设置事件的状态为有标记,释放任意等待线程。常和WaitForSingleObject()、WaitForMultiObjects()配合使用,来使两个函数从等待状态中返回退出。进而结束线程的运行。

 

 

《Windows CE API手册》是Blitz Force团队继 Xarm和ROS开发系统之后之后又一重要作品。本手册收录并翻译了 MSDN Library for Visual Studio 2008 超过2000 个API函数和宏的资料信息。分为:系统函数、COM函数、驱动函数、网络通信4个大类,有以下特点: 01. 资料权威。本手册收录的绝大多数函数和宏都取自微软MSDN,权威性比较有保证。部分从DLL找到的API在MSDN尚未介绍。我们收录这部分MSDN未介绍的API主要是认为这些API似乎比较重要,希望有熟悉这部分API使用的高手能够多多指教。 02. 分类详细。本手册根据API函数的功能进行了详细分类。通过分类 方便读者查找和扫描学习API,提高学习效率。 03. 提供编程示例和开发经验。本手册取自Xarm开发系统,我们已经用Xarm系统试验了1000个左右的函数,在试验获得的经验教训都保存在本手册。用户使用本手册除了可以查询函数的使用方法,还可以参考我们提供的心得体会加深对API的理解。查看Xarm编写的函数示例可以到我们的联系站点下载Xarm 1.0。 04. 不断更新。本手册1.0版在2008年4月底完成后,发给Blitz Force队员做内部测试并收到很多反馈意见,本次发布的是2.0版。我们还会继续努力发布新的版本,根据新系统增加新函数,不断完善旧函数说明,提供更多示例。希望使用本手册的朋友如果发现手册有错误或者有好的改进意见给我们发邮件或者留言。《作者简介》有详细的联系方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值