मैं अपने कोड में एक XML पार्सिंग समस्या प्रतीत होता हूं जो डीबग करने का प्रयास कर रहा हूं। मैं निम्नलिखित कोड का टुकड़ा के लिए नीचे अलग-थलग कर दिया है:मैं कैसे निर्धारित कर सकता हूं कि IXMLDOMDocument :: load() में कॉल क्यों विफल हो जाती है?
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 page बहुत अंतर्दृष्टि नहीं दे रहा है।
मैं कुछ hunches है:
- एक्सएमएल नहीं अच्छी तरह से बनाई है
- एक्सएमएल फ़ाइल बहुत बड़ी है (लगभग 120MB)
- यह एक स्मृति से संबंधित मुद्दा है (प्रक्रिया आकार हो जाता है करने के लिए> 2GB विफलता का समय)
- एनबी: एक रजिस्ट्री कुंजी प्रक्रिया आकार इस बड़े होने के लिए अनुमति देने के लिए WinXP के लिए, AFAIK स्थापित किया गया है, सबसे बड़ा वैध प्रक्रिया आकार के रूप में, 2 जीबी है)।
कोई भी विचार क्यों इस कॉल में नाकाम रहने के किया जा सकता है के रूप में?
क्या आपने 'parseError' की कोशिश की है? http://msdn.microsoft.com/en-us/library/ms756041%28VS.85%29.aspx –