0

如何让 DIA 释放对 pdb 文件的锁定?

我加载了一个 pdb 并创建了一个会话,如下所示,一切正常,我可以使用会话从 pdb 获取数据。

当我完成 pdb 后,我释放会话和 DiaSource,但 DIA 仍然锁定 pdb 文件,我无法在资源管理器中删除 pdb 文件,直到我的应用程序退出。如何告诉 DIA 释放对 pdb 文件的锁定?

CoCreateInstance(__uuidof(DiaSource),
    NULL,
    CLSCTX_INPROC_SERVER,
    __uuidof(IDiaDataSource),
    (void**)&mp_DiaSource);

mp_DiaSource->loadAndValidateDataFromPdb(
    (LPCOLESTR)p_wide_filename, &m_Sig, 0, m_Age);

mp_DiaSource->openSession(&mp_Session);

// do stuff with mp_Session here

mp_Session->Release();

mp_DiaSource->Release();

非常感谢。

斯图尔特。

4

1 回答 1

1

至少对于msdia90.dll,确实在 Release() 之后文件句柄没有关闭,一个可能的解决方法是调用loadDataFromIStream(),并传递IStream而不是加载 pdb 文件的路径,但是,我从未测试这是否真的有效。

于 2013-05-16T16:31:39.760 回答