【问题标题】:Is there any way to get more detailed error reports from a windows API call?有什么方法可以从 Windows API 调用中获取更详细的错误报告?
【发布时间】:2015-06-15 17:45:14
【问题描述】:

我正在开发一个非常大的程序,该程序调用 ChangeDisplaySettingsEx 以更改显示器的布局/分辨率。

我遇到了一些问题,这些调用有时有效,有时无效,我无法确定导致失败的原因。

每当它失败时,我都会得到一个返回码 -1,它对应于 DISP_CHANGE_FAILED,这显然不是很具有描述性。

我想知道是否有更好的方法来调试调用结果,以便我知道是什么导致它失败?

【问题讨论】:

    标签: c++ windows api status


    【解决方案1】:

    “我想知道是否有更好的方法来调试调用结果,以便我知道是什么导致它失败?”

    您可以尝试按照reference documentation 中的建议事先查询实际显示功能:

    备注

    “要确保传递给 ChangeDisplaySettingsExDEVMODE 结构有效且仅包含显示驱动程序支持的值,请使用 EnumDisplaySettings 函数返回的 DEVMODE。”

    这样做后,您可以将返回的DEVMODE 与您尝试作为设置传递的内容进行比较。

    【讨论】:

    • 嗯,我遇到的最大问题是我知道我正在使用有效的显示设置。当我将代码拉出到一个独立的 .exe 中并运行它时,它可以正常执行并更改显示,但较大程序中的相同代码返回 -1。这让我相信更大的代码库中的某些东西导致 Windows API 调用失败,但我不知道如何追踪这是什么。
    • @TrolliOlli 你怎么知道的?您是否安装了特定设备或通用驱动程序?
    • @TrolliOlli:在调用ChangeDisplaySettingsEx() 之前,您是否尝试过记录DEVMODE 的内容?也许你真的传递了一个无效/不受支持的DEVMODE,只是没有意识到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 2018-01-06
    • 2018-05-27
    • 2011-12-22
    • 1970-01-01
    相关资源
    最近更新 更多