Что ж, добавление идентификатора процесса и идентификатора потока может привести к одному и тому же номеру
pid = 100, tid = 104
pid = 108, tid = 96
Не совсем вероятно, но возможно.
Так что для почти безопасных идентификаторов вам понадобится как минимум поле с 64-битным идентификатором, например
ULONG64 id = ((ULONG64)(pid&0xffff) << 48) | ((ULONG64)(tid&0xffff) << 32) | (timestamp & 0xffffffff);
(однако, это все еще не гарантирует уникальность, так как предполагает, что идентификаторы потоков не пересекаются с идентификаторами процессов, что они нейтрализуют 16-битные значения, но я не думаю, что когда-либо видел PID более 65536 и если вы создаете тысячи потоков, идентификаторы потоков не будут переходить в это значение до перехода на отметку времени).