информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / operating systems
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
ZwQuerySystemTime 27.05.03 10:17  Число просмотров: 1807
Автор: cb <cb> Статус: Member
<"чистая" ссылка>
> А тут я не понимаю что с этими интервалами по 100 нс
> делать?
>
> ZwQuerySystemTime(OUT PLARGE_INTEGER CurrentTime);
>
> CurrentTime
> Points to a variable that receives the current time of day
> in the standard time format
> (that is, the number of 100-nanosecond intervals since
> January 1, 1601)


помоему тут все доступно изложено:
это количество 100-наносекундных интервалов прошедших с January 1, 1601.
время естественно в UTC. какие проблемы то?
может математику стоит подучить?

cb.
<operating systems>
ZwQuerySystemTime 27.05.03 08:16  
Автор: ?? Статус: Незарегистрированный пользователь
<"чистая" ссылка>
В книге Нэббета сказано что эта функция возвращает текущее время в стандартном формате

Что это за формат?
С функцией GetSystemTime все просто и понятно
А тут я не понимаю что с этими интервалами по 100 нс делать?

ZwQuerySystemTime(OUT PLARGE_INTEGER CurrentTime);

CurrentTime
Points to a variable that receives the current time of day in the standard time format
(that is, the number of 100-nanosecond intervals since January 1, 1601)
ZwQuerySystemTime 27.05.03 10:17  
Автор: cb <cb> Статус: Member
<"чистая" ссылка>
> А тут я не понимаю что с этими интервалами по 100 нс
> делать?
>
> ZwQuerySystemTime(OUT PLARGE_INTEGER CurrentTime);
>
> CurrentTime
> Points to a variable that receives the current time of day
> in the standard time format
> (that is, the number of 100-nanosecond intervals since
> January 1, 1601)


помоему тут все доступно изложено:
это количество 100-наносекундных интервалов прошедших с January 1, 1601.
время естественно в UTC. какие проблемы то?
может математику стоит подучить?

cb.
Только что почитал. Да все действительно так. ИМХО они перемудрили 27.05.03 12:32  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> помоему тут все доступно изложено:
> это количество 100-наносекундных интервалов прошедших с
> January 1, 1601.
> время естественно в UTC. какие проблемы то?
> может математику стоит подучить?
Не только математику. На самом деле дата 01.01.1601 была еще в григорианском летоисчислении, а потому если уж пересчитывать количество наносекунд до этой даты, то нужно учитывать выпавшие 11 дней и другое исчисление (или полное отсутствие - не помню) високосных годов до 1752 года.

Как по мне так лучше б они взяли в качестве точки отсчета ну хотя бы 1901. Отрицательное время все таки не так путает, как непонятно какая дата.

http://www.didyouknow.cd/russian/calendar_ru.htm
"В сентябре 1752 года, в Британии и ее американских колониях Юлианский календарь сменил Григорианский. Юлианский календарь на 11 дней назад от Григорианского, поэтому, во время его смены, после 14 сентября было 2 сентября. В результате - с 3 по 13 сентября не было абсолютно ничего!"
Только что почитал. Да все действительно так. ИМХО они перемудрили 28.05.03 11:14  
Автор: cb <cb> Статус: Member
<"чистая" ссылка>
может я чего не понял, но историческая справка это конечно интересно, но на работу ф-й особо не сказывается:

  #define MINUTE                   60000     //msec
  #define HOUR                     3600000   //msec
  #define DAY                      86400000  //msec
  #define GREGORIAN_CUTOVER_YEAR   1582

bool KTime::IsLeapYear(int nYear)
{
  return nYear >= GREGORIAN_CUTOVER_YEAR ?
                  ((nYear%4 == 0) && ((nYear%100 != 0)|(nYear%400 == 0))) : // Gregorian
                  (nYear%4 == 0);                                              // Julian
}

void KTime::GetTime(__int64 nSystemTime, int& nHour, int& nMin, int& nMSec)
{
  __int64 nTmp;

  nSystemTime = nSystemTime / 10 / 1000; // nTime into msec
  nSystemTime = nSystemTime % DAY;       // 
  nTmp = (nSystemTime / HOUR);
  nHour = (int) nTmp;
  nTmp = (nSystemTime % HOUR) / MINUTE;
  nMin = (int) nTmp;
  nTmp = (nSystemTime % HOUR) % MINUTE;
  nMSec = (int) nTmp;
}

void KTime::GetDate(__int64 nSystemTime, int& nYear, int& nMonth, int& nDay)
{
  __int64 nDays;
  int     nDaysOfMonth[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

  nSystemTime = nSystemTime / 10 / 1000; // nTime into msec
  nDays = 1 + (nSystemTime / DAY);       // 

  for (int i=1601; ; ++i)
  {
    if (IsLeapYear(i))
    {
      if (nDays>366)
        nDays -= 366;
      else
        break;
    }
    else
    {
      if (nDays>365)
        nDays -= 365;
      else
        break;
    }
  }

  nYear = i;

  if (IsLeapYear(nYear))
    nDaysOfMonth[1]++;    

  for (i=0; i<12; ++i)
  {
    if (nDays <= nDaysOfMonth[i])
      break;
    nDays -= nDaysOfMonth[i];
  }

  nMonth = i+1;
  nDay = (int)nDays;
}


---

cb.
Да такой код я и сам написать могу :-) 28.05.03 11:40  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> может я чего не понял, но историческая справка это конечно
> интересно, но на работу ф-й особо не сказывается:
Здесь предпосылка неверная. Для примера, тебе назначат встречу в 2 часа ночи последнего воскресенья сентября (или октября - у кого как). Ну для какого то конкретного года тебе конечно скажут конкретную дату). Вроде все хорошо. Но на поверку оказывается, что в последнем то воскресеньи 3 часа ночи наступает дважды из-за перевода часов. А если смещение в две недели.

Короче, реальное 1 января 1601 года и то что принято в мелкософте - это совершенно разные вещи (разница - минимум 2 недели, а то и больше). Я ничего не имею против и вроде как понятно что имели в виду. Но уж очень мелкософты любят вводить свои стандарты в пику общепринятым.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach