IXMLDOMDocumentPtr instance destruction
I have created an instance of IXMLDOMDocumentPtr
//Create DOM Instance
HRESULT hResult =
m_plDomDocument.CreateInstance(MSXML2::CLSID_DOMDocument);
if (FAILED(hResult)||(NULL == m_plDomDocument))
{
bRet = FALSE;
LEAVE_BLOCK
}
After this line gets executed the Handle count ( In Task Manager) gets
incremented by 18 ( from 237 to 255). The handle count never gets
decremented even after I come out of the dll.
How can I release or destroy the DOM instances in the destructor. Is
there any alternate way to bring the handle count back to where its
started.
I would greatly appreciate if some one help me out.
Here is the function
bool CJobXMLParser::InitXMLFile(const string& strFilename)
{
bool bRet = TRUE;
BEGIN_BLOCK
if (NULL != m_plDomDocument)
{
CloseXMLFile();
}
m_szFolderName = "";
m_szSubFolderName = "";
m_szFileName = strFilename.c_str();
// convert xml file name string to something COM can handle (BSTR)
_bstr_t bstrFileName(m_szFileName);
//Create DOM Instance
HRESULT hResult =
m_plDomDocument.CreateInstance(MSXML2::CLSID_DOMDocument);
if (FAILED(hResult)||(NULL == m_plDomDocument))
{
bRet = FALSE;
LEAVE_BLOCK
}
// call the IXMLDOMDocumentPtr's load() to load the XML document
//variant_t vResult;
_variant_t vtFileName(_bstr_t(strFilename.c_str()));
bRet = m_plDomDocument->load(vtFileName);
// success!
if (bRet)
{
// Initialize the root pointer
m_pDocRoot = m_plDomDocument->documentElement;
if(NULL == m_pDocRoot)
{
bRet = FALSE;
LEAVE_BLOCK
}
}
END_BLOCK
return bRet;
}