SYSTEM_TIME_OF_DAY_INFORMATION

Тема в разделе "WASM.NT.KERNEL", создана пользователем cresta, 14 фев 2009.

  1. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    SYSTEM_TIME_OF_DAY_INFORMATION.CurrentTime
    что в нем?
    Я ожидаю увидеть там количество 100-наносекундных интервалов от рождества Бальтасарова...

    Код (Text):
    1.     while (TRUE){
    2.         KeWaitForSingleObject (&kTimer, Executive, KernelMode, FALSE, NULL);
    3.         Status = ZwQuerySystemInformation (3, &g_Date, sizeof(SYSTEM_TIME_OF_DAY_INFORMATION), &dwReturn);
    4.         if (Status == STATUS_SUCCESS){
    5.             DbgPrint("%d", g_Date.CurrentTime.LowPart);
    6.         }
    7.         if (!g_TimerActive) break;
    8.     }
    И ожидаю, что это количество будет постоянно меняться.
    Количество вижу, а вот чтобы оно менялось - нет.

    Или я что-то не понимаю, или одно из двух...
     
  2. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    а если преобразовать CurrentTime в TIME_FIELDS, то видно, как тикают часики

    Код (Text):
    1.     while (TRUE){
    2.         KeWaitForSingleObject (&kTimer, Executive, KernelMode, FALSE, NULL);
    3.         Status = ZwQuerySystemInformation (3, &g_Date, sizeof(SYSTEM_TIME_OF_DAY_INFORMATION), &dwReturn);
    4.         if (Status == STATUS_SUCCESS){
    5.             DbgPrint("%d", g_Date.CurrentTime.LowPart);
    6.             RtlTimeToTimeFields(&g_Date.CurrentTime, &tCurrentFields);
    7.             DbgPrint("%d", (int)tCurrentFields.Second);
    8.         }
    9.         if (!g_TimerActive) break;
    10.     }
    В чем прикол?
     
  3. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Я, в общем, ничего нового здесь не скажу, но время в ядре следует получать через KeQuerySystemTime(), при этом если требуется локальное время, то полученное значение необходимо дополнительно преобразовать функцией ExSystemTimeToLocalTime().
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    ZwQuerySystemInformation и обращается к KeQuerySystemTime для заполнения поля CurrentTime.
    Выводи для разнообразия и HighPart.
     
  5. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    n0name

    HighPart смотрел, просто не привел к коде, т.к. его обновления приходится ждать довольно долго.
    А LowPart должен ежесекундно обновляться.