Use the Parameter argument in the call. If you want to send more than one pointer, you will have to wrap it up in a std::pair, std::tuple, or a custom struct/class, who's pointer you supply to the function.
Btw, your TimerFire function should look like:
VOID CALLBACK WaitOrTimerCallback(
__in PVOID lpParameter,
__in BOOLEAN TimerOrWaitFired
);
Your type-cast fools the compiler.