|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Янв 13, 2003 17:34:58 люди подскажите плз как в win32 есть ли такой способ чтобы узнать тек. время не используя стандартных функций например : по такому то адресу х:х секунды а по такому то адресу у:у минуты |
|
|
Дата: Янв 14, 2003 04:12:04 Например, прочитать из CMOS'а. |
|
|
Дата: Янв 14, 2003 05:31:26 GetTickCount() на Windows 2000 Pro: mov edx, 7FFE0000h mov eax, [edx] mul [edx+04h] shrd eax, edx, 18 ; eax = number of milliseconds that have elapsed since Windows was started |
|
|
Дата: Янв 14, 2003 05:40:08 Порыскался по kernel32!GetSystemTime (Windows 2000 Pro), нашёл что всё время в памяте 7FFE0000-7FFE0020. Меняются эти ячейки очень часто: 7FFE0000 - ticks (low dword?) 7FFE0008 - ??? 7FFE000C - ??? 7FFE0014 - systemtime low dword??? Из кода видно что 7FFE0014 и 7FFE0018 как раз и являются qword'ом с временем. Советую самому пройтись через эти API (GetTickCount, GetSystemTime, GetLocalTime) в отладчике. |
|
|
Дата: Янв 14, 2003 05:41:40 Эта память в ds:7FFE00xx конечно. Регион kernel32'а. |
|
|
Дата: Янв 14, 2003 09:29:57 P2M [/i] [i] а подробней? плз. |
|
|
Дата: Янв 14, 2003 09:31:30 [i][/i] P2M а подробней плз.. |
|
|
Дата: Янв 14, 2003 10:25:06 Если вопрос о времени, как на часах, то из CMOS'а: [code] mov al,0h ; 0h - current second out 70h,al jmp $+2 in al,71h ; AL := second in BCD mov al,2h ; 2h - current minute out 70h,al jmp $+2 in al,71h ; AL := minute in BCD mov al,4h ; 4h - current hour out 70h,al jmp $+2 in al,71h ; AL := hour in BCD [/code] BCD означает 31h = 0011'0001b = 31 минута одним словом RTFM |
|
|
Дата: Янв 14, 2003 11:33:15 В системах NT по адресу 7FFE0000h находится разделяемая между ядром и юзером область - структура KUSER_SHARED_DATA. В ядро проецируется по 0FFDF0000h. Документирована в ддк: #define KI_USER_SHARED_DATA 0xffdf0000 #define SharedUserData ((KUSER_SHARED_DATA * const) KI_USER_SHARED_DATA) typedef struct _KUSER_SHARED_DATA { // Current low 32-bit of tick count and tick count multiplier. // N.B. The tick count is updated each time the clock ticks. volatile ULONG TickCountLow; ULONG TickCountMultiplier; // Current 64-bit interrupt time in 100ns units. volatile KSYSTEM_TIME InterruptTime; // Current 64-bit system time in 100ns units. volatile KSYSTEM_TIME SystemTime; // . . . поскипано мной . . . } KUSER_SHARED_DATA, *PKUSER_SHARED_DATA; // Define system time structure. typedef struct _KSYSTEM_TIME { ULONG LowPart; LONG High1Time; LONG High2Time; } KSYSTEM_TIME, *PKSYSTEM_TIME; |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.072 |