Поделиться через


Функция SetSystemTimeAdjustment (sysinfoapi.h)

Включает или отключает периодическую корректировку времени для системных часов суток. Если этот параметр включен, такие корректировки времени можно использовать для синхронизации времени с каким-то другим источником сведений о времени.

Синтаксис

BOOL SetSystemTimeAdjustment(
  [in] DWORD dwTimeAdjustment,
  [in] BOOL  bTimeAdjustmentDisabled
);

Параметры

[in] dwTimeAdjustment

Это значение представляет число 100-наносекундных единиц, добавленных к системным времени суток за каждый фактический период времени lpTimeIncrement . Вызовите Метод GetSystemTimeAdjustment , чтобы получить значение lpTimeIncrement . См. примечания.

Примечание  

В настоящее время компьютеры с Windows Vista и Windows 7 теряют любые корректировки времени, установленные менее 16.

 

[in] bTimeAdjustmentDisabled

Режим корректировки времени, используемый системой. Периодические корректировки системного времени можно отключить или включить.

Значение TRUE указывает, что периодическая корректировка времени должна быть отключена. Если параметр отключен, значение dwTimeAdjustment игнорируется, и система может настроить время суток с помощью собственных внутренних механизмов синхронизации времени. Эти внутренние механизмы синхронизации времени могут привести к изменению часов времени в течение обычного процесса работы системы, что может включать в себя заметные скачки времени, которые сочтут необходимыми системой.

Значение FALSE указывает, что должна быть включена периодическая корректировка времени, и будет использоваться для настройки часов суток. Система не будет вмешиваться в схему корректировки времени и не будет пытаться синхронизировать время суток самостоятельно.

Возвращаемое значение

Если функция выполняется успешно, возвращаемое значение не равно нулю.

Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError. Одним из способов сбоя функции является то, что вызывающий объект не обладает привилегией SE_SYSTEMTIME_NAME.

Комментарии

Функции GetSystemTimeAdjustment и SetSystemTimeAdjustment поддерживают алгоритмы, которые синхронизируют часы времени суток, сообщаемые через GetSystemTime и GetLocalTime, с другим источником времени с помощью периодической корректировки времени.

Функция SetSystemTimeAdjustment поддерживает два режима синхронизации времени:

Режим Поведение
Time-Adjustment Отключено Для этого режима параметру bTimeAdjustmentDisabled присвоено значение TRUE. В этом режиме значение dwTimeAdjustment игнорируется, и система может корректировать время суток с помощью собственных внутренних механизмов синхронизации времени. Эти внутренние механизмы синхронизации времени могут привести к изменению часов времени в течение обычного процесса работы системы, что может включать в себя заметные скачки времени, которые сочтут необходимыми системой.
Time-Adjustment Включено В этом режиме параметру bTimeAdjustmentDisabled присвоено значение FALSE. Для каждого периода времени lpTimeIncrement , который фактически проходит, dwTimeAdjustment будет добавляться к времени суток. Период времени, представленный lpTimeIncrement , можно определить, вызвав Метод GetSystemTimeAdjustment. Значение lpTimeIncrement фиксируется системой при запуске и не изменяется во время работы системы и полностью не зависит от разрешения прерываний внутренних часов системы в любой момент времени. Учитывая это, значение lpTimeIncrement просто выражает период времени, в течение которого dwTimeAdjustment будет применяться к системным часовым дням.

Если значение dwTimeAdjustment меньше lpTimeIncrement, время суток будет продвигаться медленнее, чем обычно. Если значение dwTimeAdjustment больше , чем lpTimeIncrement, время дня будет продвигаться быстрее, чем обычно. Степень, в которой время дня будет работать быстрее или медленнее, зависит от того, насколько далеко значение dwTimeAdjustment выше или ниже значения lpTimeIncrement . Если параметр dwTimeAdjustment равен lpTimeIncrement, время дня будет двигаться с нормальной скоростью.

 

Для успешного выполнения этой функции приложение должно иметь права системного времени (привилегия SE_SYSTEMTIME_NAME). Привилегия SE_SYSTEMTIME_NAME отключена по умолчанию. Используйте функцию AdjustTokenPrivileges , чтобы включить привилегию перед вызовом SetSystemTimeAdjustment, а затем отключить привилегию после вызова SetSystemTimeAdjustment . Дополнительные сведения см. в разделе Выполнение с особыми привилегиями.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header sysinfoapi.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

AdjustTokenPrivileges

GetLocalTime

GetSystemTime

GetSystemTimeAdjustment

Системное время

Функции времени