This won't be helpful, another process can change it while you are calibrating.
This falls in the "if you can't beat them, join them" category. Call timeBeginPeriod(1) before you start calibrating. This ensures that you have a known rate that nobody can change. Getting the improved timer accuracy surely doesn't hurt either.
Do note that it is pretty unlikely that you can do better than QueryPerformanceFrequency(). Unless you calibrate for a very long time, the clock rate just isn't high enough to give you extra accuracy since you can never measure better than +/- 0.5 msec. And the timer event isn't delivered with millisecond accuracy, it can be arbitrarily delayed. If you calibrate over long periods then GetTickCount64() is plenty good enough.