As a previous commenter wrote, the resolution of GetSystemTimeAsFileTime() is limited. The actual resolution depends on the system.
On Windows XP and earlier, the resolution is unaffected by timeBeginPeriod(); the value returned by GetSystemTimeAsFileTime() is updated only every tick interval (i.e. 15.625 msecs or 10 msecs depending on hardware and system).
The time at which waitable timers signal though is affected by timeBeginPeriod().
This has the slightly unfortunate result that if you call SetWaitableTimer() with an absolute due time and if any application on the system has reduced the current timer interval by calling timeBeginPeriod(), the timer can appear to signal up to approximately 15 milliseconds early when compared to the current time returned by GetSystemTimeAsFileTime().
In fact the timer has signalled at the correct time; it appears to be early only because the time returned by GetSystemTimeAsFileTime() can be out of date by up to about 15 milliseconds.
Unfortunately there is no straightforward way to get absolute time to the same accuracy as used by waitable timers on systems affected by this problem.