/************************************************************************************
**本文为作者原创,转载请注明出处,未经本人允许请勿用于商业用途!
**Author:于海平
** 邮箱:[email protected]
**本文链接:http://blog.csdn.net/drivelinux/article/details/8484252
*************************************************************************************/
PVOID MmMapIoSpace( PHYSICAL_ADDRESS PhysicalAddress, //需要映射的物理地址 ULONG NumberOfBytes, //映射长度 BOOLEAN CacheEnable //对设备寄存器而言,其值通常为FALSE );
该函数的返回值为一个虚拟地址,或NULL。
VOID MmUnmapIoSpace( PVOID BaseAddress, //需要取消映射的虚拟地址 ULONG NumberOfBytes //字节数 );
该函数无返回值。
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 |
|
||
STACK_SIZE_PARAM_IS_A_RESERVATION |
|
int CeGetThreadPriority( HANDLE hThread //线程的句柄 );
该函数用于获取一个线程的优先级。返回值:若调用成功,则返回一个0~255的优先级值,0为最高优先级,若返回THREAD_PRIORITY_ERROR_RETURN,表示调用失败。
BOOL CeSetThreadPriority( HANDLE hThread, //线程的句柄 int nPriority //要设置的优先级,0~255 );
该函数用于设置线程的优先级。
VOID ExitThread( DWORD dwExitCode //退出码 );
该函数用于结束一个线程。
HANDLE GetCurrentThread(void);
该函数返回当前线程的伪句柄。
DWORD WaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds );
DWORD WaitForMultipleObjects( DWORD nCount, CONST HANDLE* lpHandles, BOOL fWaitAll, DWORD dwMilliseconds );
DWORD DevicePowerNotify( PVOID pvDevice, CEDEVICE_POWER_STATE DeviceState, DWORD Flags );
该函数请求电源管理器改变指定设备的电源状态。
HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, //应设置为NULL BOOL bManualReset, //表示创建的事件对象是手动复位还是自动复位的一个布尔型变量 BOOL InitialState, //指示事件的初始状态 LPTSTR lpName //事件名 );
该函数用于创建一个事件对象。
BOOL SetEvent( HANDLE hEvent //事件对象的句柄 );
该函数的作用是设置事件的状态为有标记,释放任意等待线程。常和WaitForSingleObject()、WaitForMultiObjects()配合使用,来使两个函数从等待状态中返回退出。进而结束线程的运行。