SetEventWinHook使用Stack Overflow崩溃WPF应用程序

时间:2013-02-04 20:44:16

标签: c# winapi crash stack-overflow event-hooking

我遇到的问题是我的应用程序由于EventHooking而导致WPF应用程序崩溃。下面是我尝试过的简单代码,但仍然可以重新创建崩溃。这仅适用于某种自定义树视图,该视图具有多个扩展的节点。

{
...
_focusChangedHandler =  OnFocusChanged;
_focusChangedGCHandle = GCHandle.Alloc(_focusChangedHandler);
_focusChangedHookId = User32.SetWinEventHook(User32.EVENT_OBJECT_FOCUS,
    User32.EVENT_OBJECT_FOCUS, IntPtr.Zero, _focusChangedHandler,
    0,0,User32.WINEVENT_OUTOFCONTEXT);
...
}

private void OnFocusChanged(IntPtr hWinEventHook, uint eventType,
                            IntPtr hwnd,
                            int idObject, int idChild, uint dwEventThread,
                            uint dwmsEventTime)
{
}

我还让客户使用明确的new User32.WinEventDelegate(OnFocusChanged)并且没有GCHandle.Alloc对此进行测试。以及所有这些场景的组合。这并没有解决问题

有人知道为什么会这样吗?

*我们确实遇到了这个WPF应用程序的问题,并且IAccessible调用取消了虚拟化导致的内存/性能问题,但我们已经删除了这些调用。

每次请求编辑

我在第三方的唯一信息来自事件日志:

Faulting application name: THIRDPARTY.exe, version: x.y.z, time stamp: 0x4fb0d031
Faulting module name: clr.dll, version: 4.0.30319.296, time stamp: 0x50484aa9
Exception code: 0xc00000fd
Fault offset: 0x00001ac6
Faulting process id: 0x6f50
Faulting application start time: 0x01cdf9a521428158
Faulting application path: C:\Program Files (x86)\THIRDPARTYEXEPATH
Faulting module path: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Report Id: d8e42ff6-6598-11e2-9614-441ea14b96e0

就我的研究告诉我而言,Exception代码是一个堆栈溢出

0 个答案:

没有答案