Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
HANDLE ThreadHandles[32];
DWORD WorkerThread( PVOID ThreadIndex ) {
DWORD Processor; BOOL DoSleep;
Processor = (DWORD)ThreadIndex; if ( Processor > 100 ) { DoSleep = TRUE; Processor -= 100; } else { DoSleep = FALSE; } SetThreadAffinityMask(GetCurrentThread(),1 << Processor); for(;;){ if ( Processor & 1 ) { SetThreadPriority(ThreadHandles[Processor-1],THREAD_PRIORITY_ABOVE_NORMAL); SetThreadPriority(ThreadHandles[Processor-1],THREAD_PRIORITY_NORMAL); } else { if ( DoSleep ) { Sleep(0); } } } return 0; }
int __cdecl main( int argc, char *argv[], char *envp[] ) { DWORD i; SYSTEM_INFO SystemInfo; DWORD ThreadId; HANDLE hThread;
GetSystemInfo(&SystemInfo); if ( SystemInfo.dwNumberOfProcessors >= 3 ) {
for ( i=0;i<SystemInfo.dwNumberOfProcessors;i++) {
ThreadHandles[i] = CreateThread( NULL, 0, WorkerThread, (PVOID)(i), 0, &ThreadId );
if ( !ThreadHandles[i] ) { fprintf(stdout,"CreateThread failed %d\n",GetLastError()); ExitProcess(1); } }
for ( i=0;i<SystemInfo.dwNumberOfProcessors;i++) { if ( (i & 1) == 0 ) {
hThread = CreateThread( NULL, 0, WorkerThread, (PVOID)(100+i), 0, &ThreadId );
if ( !ThreadHandles[i] ) { fprintf(stdout,"CreateThread failed %d\n",GetLastError()); ExitProcess(1); } CloseHandle(hThread); } } Sleep(60000); } ExitProcess(1); }
|