Some smart pointer questions about bcb com wrapper from using msxml3

I've written some code for bcb using msxml3. I know a little about com
and bcb com wrapper so more confused. :P

It comes from TCOMIXMLHTTPRequest's responseXML.

IXMLDOMDocument2Ptr rps = HttpRequest->responseXML; //ok
TVariant rps = HttpRequest->responseXML; //ok
TCOMIXMLDOMDocument2 rps = HttpRequest->responseXML;
//error! [C++ Error] EngineerAction.cpp(30): E2034 Cannot convert
'IDispatch *' to 'TCOMIXMLDOMDocument2'

I think TCOMIXMLDOMDocument2 should smart point to a DOMDocument
object but failed. So what's wrong with my mind? (maybe a silly