我有一个使用 winapi 函数的程序。当它在 WinXP(32 位)或 Win7(64 位)上运行时,一切正常。但是在 Win8 (64bit) 上有一个 bug:有时程序会挂在这行代码上
HDC hDisplay = CreateDC("DISPLAY", NULL, NULL, NULL);
可能是什么原因?
ps 它是在 WinXP 32 位平台 Win32 上的 MSVC 2005 中构建的。
我有一个使用 winapi 函数的程序。当它在 WinXP(32 位)或 Win7(64 位)上运行时,一切正常。但是在 Win8 (64bit) 上有一个 bug:有时程序会挂在这行代码上
HDC hDisplay = CreateDC("DISPLAY", NULL, NULL, NULL);
可能是什么原因?
ps 它是在 WinXP 32 位平台 Win32 上的 MSVC 2005 中构建的。
尝试:
CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL)
我已经设法为 64 位平台重建程序,它现在可以工作了。
虽然这个问题很老,但我们今天遇到了类似的问题。
我们有代码试图以这种方式查询打印机:
hdc = CreateDC(pi->pDriverName, pi->pPrinterName, pi->pPortName, NULL);
pi
结构在哪里PRINTER_INFO_2
(https://docs.microsoft.com/en-us/windows/win32/printdocs/printer-info-2)。
在我们的 Server 2012R2 盒子上安装 Microsoft KB4517298 ( https://support.microsoft.com/en-us/help/4517298/windows-8-1-update-kb4517298 ) 后,这条线似乎没有明显的原因挂起。以 64 位重新构建应用程序似乎可以修复它,就像它对原始海报所做的那样。但是,我们仍然不知道为什么会发生这种情况。删除此修补程序可解决该问题,然后重新应用它会再次导致该问题。
我们正在与我们的供应商合作,看看我们是否可以了解为什么最近的 Windows 更新让我们崩溃(以及如何更好地修复它!)。