Я пытаюсь отладить, как представляется, проблему синтаксического анализа XML в моем коде. Я выделил его следующим фрагментом кода:
HRESULT
CXmlDocument::Load(IStream* Stream)
{
CComVariant xmlSource(static_cast<IUnknown*>(Stream));
VARIANT_BOOL isSuccessful;
* HRESULT hr = m_pXmlDoc->load(xmlSource, &isSuccessful);
return (hr == S_FALSE) ? E_FAIL : hr;
}
Примечание: m_pXmlDoc
относится к типу CComPtr<IXMLDOMDocument>
.
Похоже, что вызов IXMLDOMDocument::load()
(помеченный *) не выполняется - IOW, он возвращает S_FALSE
.
Я не могу войти в load()
, чтобы определить причину сбоя, так как это вызов COM.
Страница MSDN для этого метода, по-видимому, не дает большого понимания.
У меня есть несколько догадок:
- XML неправильно сформирован
- Файл XML слишком велик (приблизительно 120 МБ)
- Это проблема, связанная с памятью (размер процесса достигает> 2 ГБ во время сбоя)
- NB: Установлен раздел реестра, чтобы размер процесса был таким большим, поскольку наибольший допустимый размер процесса для WinXP, AFAIK, составляет 2 ГБ).
Есть идеи, почему этот звонок может быть неудачным?