我正在阅读有关 CreateTimerQueueTimer的手册页。
BOOL CreateTimerQueueTimer(
PHANDLE phNewTimer,
HANDLE TimerQueue,
WAITORTIMERCALLBACK Callback,
PVOID DueTime,
DWORD Period,
DWORD Flags,
ULONG Parameter
);
该文档指出:
时期
计时器的周期,以毫秒为单位。如果该参数为零,则定时器被发送一次信号。
所以我需要将它设置为 0 以避免定期执行回调。问题是修改period
值对周期性没有影响。一旦加载到 OllyDBG 中,Olly 重建参数和调用给我这个函数签名:
BOOL CreateTimerQueueTimer(
PHANDLE phNewTimer,
HANDLE TimerQueue,
WAITORTIMERCALLBACK Callback,
ULONG Parameter,
PVOID DueTime,
DWORD Period,
DWORD Flags
);
请注意,parameter
参数改变了位置,因此我所有的补丁都没有用。我猜这个错误可能是由于旧版本的 API 导致Parameter
参数在第 4 位,但我可能是错的。另外,我找不到旧的 WinAPI 来证实我的说法。我猜对了还是我错过了什么?