CoCreateInstance在静态函数中返回EFAIL

CoCreateInstance returns EFAIL inside the static function

本文关键字:返回 EFAIL 静态函数 CoCreateInstance      更新时间:2023-10-16

我正在开发一个用于创建预览处理程序的可视化c++应用程序。当我出于某种原因需要为IXMLDOMDocument*pDomDoc执行CoCreateInstance()时,就会出现问题;在静态函数内部(请注意此处)。语法如下-

//this CreateHtmlPreview is declared static somewhere in my code
HRESULT AMEPreviewHandler:: CreateHtmlPreview(AMEPreviewHandler* instance)
{
    IStream *m_FinalHTMLStream;
    ULONG pcbWritten;
    HRESULT hrs = CreateStreamOnHGlobal(NULL, TRUE, &m_FinalHTMLStream);
    HRESULT hrp = m_FinalHTMLStream->Write(&(instance->m_HtmlFileContents),(instance->m_SizeOfFile)-1, &pcbWritten);
IXMLDOMDocument *pDomDoc;
HRESULT hr = CoCreateInstance(__uuidof(DOMDocument60), NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pDomDoc));
//the problem is here that this hr on debugging gives EFAIL
         if (SUCCEEDED(hr))
            {
     ................Something..something.......
}
}

这是由于函数的静态声明。如果否??那么这次EFAIL的原因是什么呢???

CoCreateInstance的调用不知道它是否是从static函数发出的。您从static函数调用这一事实并不是问题所在。从任何类型的函数调用CoCreateInstance都是完全可以的。