Windows API CreateWaitableTimer和SetWaitableTimer
用户感觉到软件的好用,就是可以定时地做一些工作,而不需要人参与进去。比如每天定时地升级病毒库,定时地下载电影,定时地更新游戏里的人物。要想实现这些功能,就可以使用定时器的API函数CreateWaitableTimer和SetWaitableTimer来实现了,这对API函数创建的时钟是比较精确的,可以达到100倍的10亿分之一秒。
函数CreateWaitableTimer和SetWaitableTimer声明如下:
WINBASEAPI
__out
HANDLE
WINAPI
CreateWaitableTimerA(
__in_opt LPSECURITY_ATTRIBUTES lpTimerAttributes,
__in BOOL bManualReset,
__in_opt LPCSTR lpTimerName
);
WINBASEAPI
__out
HANDLE
WINAPI
CreateWaitableTimerW(
__in_opt LPSECURITY_ATTRIBUTES lpTimerAttributes,
__in BOOL bManualReset,
__in_opt LPCWSTR lpTimerName
);
#ifdef UNICODE
#define CreateWaitableTimer CreateWaitableTimerW
#else
#define CreateWaitableTimer CreateWaitableTimerA
#endif // !UNICODE
f M a n u a l R e s e t参数用于指明人工重置的定时器或自动重置的定时器。
当发出人工重置的定时器信号通知时,等待该定时器的所有线程均变为可调度线程。当发出自
动重置的定时器信号通知时,只有一个等待的线程变为可调度线程。
WINBASEAPI
BOOL
WINAPI
SetWaitableTimer(
__in HANDLE hTimer,
__in const LARGE_INTEGER *lpDueTime,
__in LONG lPeriod,
__in_opt PTIMERAPCROUTINE pfnCompletionRoutine,
__in_opt LPVOID lpArgToCompletionRoutine,
__in BOOL fResume
);
lpTimerAttributes是设置定时器的属性。
bManualReset是是否手动复位。
lpTimerName是定时器的名称。
hTimer是定时器的句柄。
lpDueTime是设置定时器时间间隔,当设置为正值是绝对时间;当设置为负数是相对时间。
lPeriod是周期。
pfnCompletionRoutine是设置回调函数。
lpArgToCompletionRoutine是传送给回调函数的参数。
fResume是设置系统是否自动恢复。
调用函数的例子如下:
#001 //创建定时器
#002
#003 int CreateTestTimer(void)
#004 {
#005 HANDLE hTimer = NULL;
#006 LARGE_INTEGER liDueTime;
#007
#008 //设置相对时间为10秒。
#009 liDueTime.QuadPart = -100000000;
#010
#011 //创建定时器。
#012 hTimer = CreateWaitableTimer(NULL, TRUE, _T("TestWaitableTimer"));
#013 if (!hTimer)
#014 {
#015 return 1;
#016 }
#017
#018 OutputDebugString(_T("10秒定时器\r\n"));
#019
#020 // 设置10秒钟。
#021 if (!SetWaitableTimer(hTimer, &liDueTime, 0, NULL, NULL, 0))
#022 {
#023 //
#024 CloseHandle(hTimer);
#025 return 2;
#026 }
#027
#028 //等定时器有信号。
#029 if (WaitForSingleObject(hTimer, INFINITE) != WAIT_OBJECT_0)
#030 {
#031 OutputDebugString(_T("10秒定时器出错了\r\n"));
#032 //
#033 CloseHandle(hTimer);
#034 return 3;
#035 }
#036 else
#037 {
#038 //10秒钟到达。
#039 OutputDebugString(_T("10秒定时器到了\r\n"));
#040 }
#041
#042 //
#043 CloseHandle(hTimer);
#044 return 0;
#045 }
转载于:https://www.cnblogs.com/dongzhiquan/archive/2009/04/09/1994906.html
Windows API CreateWaitableTimer和SetWaitableTimer相关推荐
- 转载 CreateWaitableTimer和SetWaitableTimer函数
用户感觉到软件的好用,就是可以定时地做一些工作,而不需要人参与进去.比如每天定时地升级病毒库,定时地下载电影,定时地更新游戏里的人物.要想实现这些功能,就可以使用定时器的API函数CreateWait ...
- C#通过Windows API捕获窗,获取窗口文本(FindWindow、GetWindowText),附录:Windows窗口消息大全、Windows API大全
文章目录 一.前言 二.使用Spy++工具分析窗口 三.C#通过Windows API捕获窗口,获取窗口文本 四.附录:Windows窗口消息 五.Windows API大全 1.API之网络函数 2 ...
- Windows API 函数大全
Windows API函数大全,从事软件开发的朋友可以参考下 1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建 ...
- Windows API函数大全(方便查找)
Windows API函数大全 目录 Windows API函数大全 1. API之网络函数 2. API之消息函数 3. API之文件处理函数 4. API之打印函数 5. API之文本和字体函数 ...
- WINDOWS API函数说明
Windows API函数大全,从事软件开发的朋友可以参考下 1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建 ...
- 易语言常用WINdows API分类查询
WINdows API分类 1.API之网络函数 2.API之消息函数 3.API之文件处理函数 4.API之打印函数 5.API之文本和字体函数 6.API之菜单函数 7.API之位图.图标和光栅运 ...
- Windows API函数速查
http://blog.csdn.net/ghevinn/article/details/8213614 Windows API函数速查 1. API之网络函数 WNetAddConnection 创 ...
- Windows API
一.简要介绍 Windows API 就是windows应用程序接口,是针对microsoft windows操作系统家族的系统编程接口,这样的系统包括Windows 8,Windows 7,Wind ...
- C#中调用Windows API时的数据类型对应关系
C#中调用Windows API时的数据类型对应关系 原文 C#中调用Windows API时的数据类型对应关系 BOOL=System.Int32 BOOLEAN=System.Int32 BYTE ...
最新文章
- 程序员能成为设计师吗
- tomcat手动发布
- Webpack 4进阶--从前的日色变得慢 ,一下午只够打一次包
- 又双叒叕 - 中国汉字的奇妙
- 还在使用if else写代码?试试 “策略模式” 吧!
- 为什么我使用Java
- 使用eclipse调试hive mapreduce
- python3_实现BP神经网络 + BP神经网络应用实例
- 树莓派 网络附加存储NAS系统和USB外接硬盘文件服务器
- Linux学习笔记RHEL 7(九)--RHEL7.0 DNS服务配置
- 贝恩分类法(行业集中度)
- 选购云服务器时云盘该如何选择?(高性能/SSD/增强型/急速型)
- Flutter 使用 ESC/POS蓝牙或以太网库控制热敏打印机
- 微信公众平台服务器配置时token验证失败
- 什么品牌的蓝牙耳机音质最好?高品质蓝牙耳机排行榜
- 5424. 【NOIP2017提高A组集训10.25】凤凰院凶真
- 每周一品 · 无线充电设备中的磁性材料
- 通过虚拟驱动vivi分析摄像头驱动
- 硅谷之思:数据的永生
- OUC软件开发实验1
热门文章
- xubntu18.10中的conky配置文件
- Flask Web中的db.relationship()
- 【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)
- m40型工业机器人_工业机器人4大控制方式,你知道几种?
- maven打jar包pom配置
- Windows 10 中 VMware 要求禁用 Device Guard 问题
- bzoj5252 [2018多省省队联测]林克卡特树
- Mysql 的表级锁和行级锁
- 【AIX 命令学习】lsattr 显示一个给定设备或一种设备的属性
- org.tinygroup.databasebuinstaller-数据库结构及元数据自动创建