Using the QueryPerformanceCounter and QueryPerformanceFrequency APIs will give you accurate timing but do you really need it to be highly accurate if you're measuring download speeds? I'd have thought that plus or minus 10mS would have been accurate enough.