Оооо, всё проще пареной репы.

Есть функция GetThreadTimes, которая даёт временную статистику по конкретному потоку. У Рихтера - стр. 160.

BOOL GetThreadTimes (HANDLE hThread, PFILETIME pftCreationTime, PFILETIME pftExitTime, PFILETIME pftKernelTime, PFILETIME pftUserTime)

Чтобы получить по текущему потоку, даём первым параметром GetCurrentThread().

Общее время потока - сложить kernel-time и user-time. Kernel-time показывает, сколько поток сидел в вызовах ОС (ввод-вывод и проч.). User-time - всё остальное (не только сам поток, любые библиотеки; даже гуй виндовый значительной частью, думаю, тут).