X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/a4e14164742bbf69bfc294167fd46e203f7eacdd..0d694692c59504838ec2043ddfe670b3a9247faf:/noise.c diff --git a/noise.c b/noise.c index 3be3c063..c5966a71 100644 --- a/noise.c +++ b/noise.c @@ -14,7 +14,7 @@ * GetSystemPowerStatus function. */ typedef BOOL (WINAPI *gsps_t)(LPSYSTEM_POWER_STATUS); -gsps_t gsps; +static gsps_t gsps; /* * This function is called once, at PuTTY startup, and will do some @@ -44,7 +44,6 @@ void noise_get_heavy(void (*func) (void *, int)) { mod = GetModuleHandle("KERNEL32"); if (mod) { gsps = (gsps_t)GetProcAddress(mod, "GetSystemPowerStatus"); - debug(("got gsps=%p\n", gsps)); } } @@ -83,6 +82,34 @@ void noise_get_light(void (*func) (void *, int)) { } /* + * This function is called on a timer, and it will monitor + * frequently changing quantities such as the state of physical and + * virtual memory, the state of the process's message queue, which + * window is in the foreground, which owns the clipboard, etc. + */ +void noise_regular(void) { + HWND w; + DWORD z; + POINT pt; + MEMORYSTATUS memstat; + FILETIME times[4]; + + w = GetForegroundWindow(); random_add_noise(&w, sizeof(w)); + w = GetCapture(); random_add_noise(&w, sizeof(w)); + w = GetClipboardOwner(); random_add_noise(&w, sizeof(w)); + z = GetQueueStatus(QS_ALLEVENTS); random_add_noise(&z, sizeof(z)); + + GetCursorPos(&pt); random_add_noise(&pt, sizeof(pt)); + + GlobalMemoryStatus(&memstat); random_add_noise(&memstat, sizeof(memstat)); + + GetThreadTimes(GetCurrentThread(), times, times+1, times+2, times+3); + random_add_noise(×, sizeof(times)); + GetProcessTimes(GetCurrentProcess(), times, times+1, times+2, times+3); + random_add_noise(×, sizeof(times)); +} + +/* * This function is called on every keypress or mouse move, and * will add the current Windows time and performance monitor * counter to the noise pool. It gets the scan code or mouse