Речь о том, чтобы, допустим, каждые пять минут вызывалась функция с помощью этой структуры. Как сделать правильно?
https://stackoverflow.com/questions...-doesnt-tick-during-suspend/24942907#24942907 либо https://github.com/cscomic/wapi/blob/master/wapi.h
galenkane, Какой то наркоманский бред. Что есть QPC" я как и ядро нт хз. Какой бы ты бред не придумал - страница NX.
galenkane, Куда именно смотреть, там определения нескольких нт прототипов. QPC - соответствий не найдено. Не найдено и в сурках WRK.
страница NX - что это значит? --- Сообщение объединено, 9 апр 2019 --- вполне возможно структура неполная, вы же просили в начале показать пример и косвенно структуру
Посмотрел ядро 10-ки. Есть некая переменная PopQpcFrequency, в которую сохраняется ничего(рандом): Код (Text): INIT:000000014070528E call cs:__imp_KeQueryPerformanceCounter INIT:0000000140705294 bsr ecx, dword ptr [rsp+0A8h+PerformanceFrequency+4] INIT:0000000140705299 mov rax, qword ptr [rsp+0A8h+PerformanceFrequency] INIT:000000014070529E mov [rsp+0A8h+var_68], ecx INIT:00000001407052A2 mov cs:PopQpcFrequency, rax Больше про QPC в ядре упоминаний нет.
https://lise.pnfsoftware.com/winpdb...017603B6414379F74342BCAF074592A-ntoskrnl.html PopQpcFrequency присутствует, поищите в листинге Qpc, найдете HvlGetQpcBias,HvlSetQpcBias
В вечном цикле читаешь значения любых счётчиков времени из этой структуры - TickCount или тот же SystemTime, засекаешь время начала твоего цикла, сравниваешь со значениями счётчиков. Если разница больше 5 минут - вызываешь функцию и сбрасываешь начальное время. GetTickCount читает время из _KUSER_SHARED_DATA. Поэтому, самый простой код: Код (C++): while (true) { DWORD Initial = GetTickCount(); while ((GetTickCount() - Initial) < 5 * 60 * 1000) __mm_pause(); YourFunc(); } Т.к. GetTickCount напрямую читает из _KUSER_SHARED_DATA, твоё условие об использовании этой структуры выполняется. А если хочется самому - просто посмотри в иде, что внутри GetTickCount(), и скопируй этот код к себе - там одна или две строчки, читающие дворд по захардкоженному адресу.