格式错误的调用ChangeDisplaySettings()导致Windows 7上出现BSOD

时间:2013-07-29 11:09:57

标签: windows winapi crash bsod

以下程序在我完全修补的Windows 7计算机和同事的Windows 7计算机上导致BSOD - 系统配置非常不同,因此我认为这不是驱动程序问题。似乎某些东西无法处理仅包含零显示频率的显示模式的请求。以下是在Visual Studio 2012 Update 3下触发BSOD的代码:

#include <windows.h>

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    DEVMODE mode = { 0 };

    mode.dmSize = sizeof(DEVMODE);
    mode.dmFields = DM_DISPLAYFREQUENCY;

    ChangeDisplaySettings(&mode, CDS_FULLSCREEN);

    return 0;
}

ChangeDisplaySettings()之前添加以下行会停止发生BSOD:

    mode.dmDisplayFrequency = 60;

BSOD详情如下:

*** STOP 0x0000007E (0xFFFFFFFFC0000094, 0xFFFFF96000685577, 0xFFFFF88015313638, 0xFFFFF88015312E90)
***      cdd.dll - Address FFFFF96000685577 base at FFFFF96000680000, DateStamp 4d4a90a5

我发布这是一个问题,因为我很感兴趣,如果有其他人已经注意到它或有任何意见,并且还有这个特定BSOD的原因在那里,以防它将来帮助任何人。< / p>

也对其他人是否能够可靠地再现它感兴趣。

如果您发表深思熟虑/有趣/相关的回复/回答/讨论,那么代表就是您的!

0 个答案:

没有答案