1

我有一个基于 MFC 的应用程序。它会在几秒钟后继续寻找文件(使用基于 CreateTimerQueueTimer 的计时器)并执行一些操作。这总是在 XP 上崩溃(原因不明)。此应用程序在 Windows 7 和 Windows 8 上运行良好。但 XP 上的问题仍然存在。

下面是没有显示任何帮助的调用堆栈 崩溃后调用堆栈

拆解截图如下:

在此处输入图像描述

编辑1:

我改变了一些设置,我得到了这个新的调用堆栈。但仍然没有得到线索。: 在此处输入图像描述

我不明白如何找出崩溃的原因。是否有任何提示或任何方法可以跟踪从拆卸中播下的内容?还是系统的 NTDLL.DLL 文件有问题?欢迎任何帮助。

4

1 回答 1

2

分析堆栈后,我意识到定时器回调可能有问题。我将我的计时器(createtimerqueuetimer 函数)更改为等待线程,问题就解决了。但是对于为什么计时器回调在几次通话后崩溃的问题仍有待回答?我只是在 30 秒后设置和重置回调函数中的变量。所以我不怀疑任何与指针相关的问题。

编辑1:

最后我得到了答案。我需要改变

void MyTimerCallbackRoutine(PVOID lpParameter, BOOLEAN TimerOrWaitFired)

到:

VOID CALLBACK MyTimerCallbackRoutine(PVOID lpParameter, BOOLEAN TimerOrWaitFired)

该问题与计时器回调函数有关。通常,CALLBACK 和 WINAPI 被定义为 stdcall,其中正常函数默认使用 cdecl。

于 2015-06-19T03:58:58.433 回答