Что происходит, когда CreateWaitableTimer установлен для несуществующей даты / времени?

Переход на летнее время (США) в 2013 году начался в 2:00 утра в воскресенье, 10 марта. Итак, скажем, сейчас 9 марта 2013 года, и я вызываю следующий API для уже созданного дескриптора ожидаемого таймера:

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

March 10th, 2013, 2:10 AM это несуществующее время, потому что время будет скорректировано на один час вперед, поэтому вместо 2:00 будет 3:00.

Итак, мой вопрос, что будет с моим таймером? (Я не могу найти документацию по этому делу.)

6

Решение

Я подозреваю, что вы уже знаете ответ на свой вопрос, потому что в вашем комментарии прямо говорится:

// Points _as absolute time_ to March 10th, 2013, at 2:10 AM

Итак, вы знаете, что документация для SetWaitableTimer () говорит:

Обязательно используйте абсолютное время на основе UTC, так как система использует UTC
время внутренне.

Так как UTC не заботится о летнем времени, ваш таймер сработает March 10th, 2013, 3:10 AM, ваше местное время.

7

Другие решения

SetWaitableTimer ожидает pDueTime быть предоставленным в UTC; так что нет способа назвать это с такой несуществующей датой / временем.

3

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector