Thanks for your attention, I found the reason of this problem yesterday. It's not a technical issue, it just because I made a stupid mistake :~ As the code below, I invoke InitReader() function to create and initiate my XML reader. I pass a pointer of ISAXXMLReader into this function, this variable is xReader_Ori. http://home.pchome.com.tw/funny/alger_lin/Codes/code1.JPG[^] And in the InitReader(), I pass the inputed ISAXXMLReader pointer into CoCreateInstance() to receive the instance of ISAXXMLReader. However, the xReader parameter is a copy of xReader_Ori, the xReader was represented the ISAXXMLReader's instance after invoke CoCreateInstance(), but the xReader_Ori was not be modified at the same time. So, it cause some error when I called xReader_Ori's parseURL() function, because it's nothing :doh: http://home.pchome.com.tw/funny/alger_lin/Codes/code2.JPG[^] Now, I modified my InitReader()'s definition, I define it as HRESULE InitReader(ISAXXMLReader*& xReader). And it work smoothly now :laugh: