WinCE 6.0驱动编程中常用的API

 WinCE 6.0驱动编程中常用的API

/************************************************************************************
**本文为作者原创,转载请注明出处,未经本人允许请勿用于商业用途!
**Author:于海平
** 邮箱:[email protected]
**本文链接: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()配合使用,来使两个函数从等待状态中返回退出。进而结束线程的运行。

 

 

你可能感兴趣的:(WinCE 6.0驱动编程中常用的API)