Ваш основной поток может выполняться на разных процессорах в разное время, поэтому «информация, относящаяся к процессору, на котором выполняется мой основной поток», может быть бессмысленной - это могут быть все процессоры. Windows не отслеживает, сколько раз поток выполнялся на каком процессоре, поэтому вы не можете попросить «дать мне список времени выполнения для этого потока на процессор». Единственное исключение - когда вы устанавливаете маску привязки потока к одному ЦП - тогда вы можете быть уверены, что, если поток вообще выполняется, он работает на этом единственном ЦП.
Для вычислений времени выполнения, GetThreadTimes - это правильный API, да. Если вы хотите узнать, какой процент (теоретического) ЦП использовал процесс, вычислите
(kerneltime+usertime) / (now - starttime) / numberofcpus
Эта формула предполагает, конечно, что все процессоры имеют одинаковую скорость. Если вы хотите отобразить, какая часть ЦП была недавно потрачена потоком, отбирайте GetThreadTimes каждую секунду, а затем вычисляйте
(usedtimenow - usedtimeprevious) / (now - previous) / numberofcpus
Если вы производите выборку каждую секунду, теперь предыдущий будет примерно равен 1, но вы все равно должны записать время выборки - система может не заставить вас спать ровно 1 с между выборками.