CoCreateInstance在静态函数内返回EFAIL

时间:2013-07-31 09:36:51

标签: c++ winapi static-methods

我正在开发一个用于创建预览处理程序的visual 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的原因可能是什么?

1 个答案:

答案 0 :(得分:2)

CoCreateInstance的调用不知道它是否来自static函数。您从static函数调用的事实不是问题。从任何类型的函数调用CoCreateInstance都是完美的。