繁体   English   中英

Windows 打开对话框在启用地址清理程序的情况下永远挂起

[英]Windows Open Dialog Box hangs forever with Address Sanitizer enabled

启用 Address Sanitizer 时,无法显示打开对话框。 它永远挂着。 谢谢你。

运行时挂起hr = pFileOpen->Show(NULL);

#include <windows.h>
#include <shobjidl.h> 

int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow)
{
    HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED |
        COINIT_DISABLE_OLE1DDE);
    if (SUCCEEDED(hr))
    {
        IFileOpenDialog* pFileOpen;

        // Create the FileOpenDialog object.
        hr = CoCreateInstance(CLSID_FileOpenDialog, NULL, CLSCTX_ALL,
            IID_IFileOpenDialog, reinterpret_cast<void**>(&pFileOpen));

        if (SUCCEEDED(hr))
        {
            // Show the Open dialog box.
            hr = pFileOpen->Show(NULL);
            pFileOpen->Release();
        }
        CoUninitialize();
    }
    return 0;
}

该修复适用于当前的VS 2022VS 2019


旧 VS 的部分解决方法:

要减少这种情况发生,请添加SetProcessAffinityMask(GetCurrentProcess(), 1); 在您的程序开始时。 这似乎完全修复了打开对话框的情况,但没有修复更复杂的事件。 (确保不要为正常程序运行保留此解决方法,因为它有效地禁用了在多个 CPU 内核上运行)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM