WinUI3拖放触发MONZA::DdiThreadingContext异常,Drop回调失效
拖放功能异常:Drop回调未执行且触发GPU相关异常
问题现象
拖放任意项目时触发异常,Drop回调函数完全无法执行;将回调移至其他组件中测试,问题依旧。该异常不会导致应用崩溃,但Drop逻辑始终不触发。
使用版本
C++/WinRT version: 2.0.230706.1 WindowsAppSDK Version: 1.4.230913002
错误信息
Microsoft C++ exception: MONZA::DdiThreadingContext<MONZA::AdapterTraits_Gen12LP>::msg_end at memory location 0x0000001AFB4FFDF0.
回调声明(XAML)
<Border x:Name="BorderName" BorderBrush="{StaticResource BorderColor}" BorderThickness="1" Padding="16,8" AllowDrop="True" Drop="Image_OnDrop">
堆栈跟踪
> KernelBase.dll!00007ffdc7454ffc() Unknown igd10um64xe.dll!00007ffdb93e2830() Unknown igd10um64xe.dll!00007ffdb98c1d9c() Unknown igd10um64xe.dll!00007ffdb92c3aff() Unknown igd10um64xe.dll!00007ffdb93b8b26() Unknown igd10um64xe.dll!00007ffdb93f3d6a() Unknown kernel32.dll!00007ffdc8c4257d() Unknown ntdll.dll!00007ffdc9caaa78() Unknown
问题分析与解决建议
- GPU驱动问题:从堆栈和异常信息来看,异常来自Intel核显驱动(
igd10um64xe.dll是Intel UHD/Iris系列核显的用户态驱动),MONZA是Intel显卡驱动内部模块。拖放过程中触发的GPU渲染操作引发驱动内部异常,直接中断了拖放流程,导致Drop回调无法被调用。建议直接从Intel官网下载对应显卡型号的最新驱动安装,替代Windows更新提供的通用版本。 - 补全拖放前置事件处理:异常可能发生在DragEnter/DragOver阶段,导致流程无法推进到Drop。可以添加
DragOver回调并标记事件已处理:
同时在XAML的Border标签上补充void Image_OnDragOver(IInspectable const& sender, DragEventArgs const& args) { args.AcceptedOperation(DataPackageOperation::Copy); args.Handled(true); }DragOver="Image_OnDragOver",确保拖放流程能正常走到Drop阶段。 - 框架版本兼容性检查:当前使用的Windows App SDK 1.4版本可能存在与特定GPU驱动的兼容性问题,尝试升级到最新稳定版(如1.5及以上),同时同步更新C++/WinRT到配套版本。
- 异常捕获调试:在拖放相关的所有事件回调中添加全局异常捕获,确认是否在DragEnter/DragOver阶段就已触发异常,中断了后续流程。
内容的提问来源于stack exchange,提问作者yonutix
相关产品推荐
相关产品推荐

