将CreateWaitableTimer设置为不存在的日期/时间时会发生什么?

c00*_*0fd 6 c++ winapi timer dst

2013年的夏令时(美国)于3月10日星期日凌晨2:00开始.因此,现在是2013年3月9日,我在已创建的等待计时器句柄上调用以下API:

FILETIME ftWhen = //Points as absolute time to March 10th, 2013, at 2:10 AM
SetWaitableTimer(hTimer, ftWhen, 0, NULL, NULL, TRUE);
Run Code Online (Sandbox Code Playgroud)

March 10th, 2013, 2:10 AM 是一个不存在的时间,因为时间将提前一小时调整,而不是凌晨2点,它将是凌晨3点.

所以我的问题是,我的计时器会发生什么?(我似乎无法找到此案例的文档.)

Fré*_*idi 7

我怀疑你已经知道你的问题的答案,因为你的评论明确指出:

// Points _as absolute time_ to March 10th, 2013, at 2:10 AM
Run Code Online (Sandbox Code Playgroud)

所以你知道SetWaitableTimer()的文档说:

请务必使用基于UTC的绝对时间,因为系统在内部使用基于UTC的时间.

由于UTC不关心任何DST,你的定时器将被触发March 10th, 2013, 3:10 AM,您的本地时间.