/* * Copyright (C) 2005 Mike McCormack * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include <xmldomdid.h> #include <idispids.h> import "ocidl.idl"; interface IXMLDOMImplementation; interface IXMLDOMNode; interface IXMLDOMDocumentFragment; interface IXMLDOMDocument; interface IXMLDOMNodeList; interface IXMLDOMNamedNodeMap; interface IXMLDOMCharacterData; interface IXMLDOMAttribute; interface IXMLDOMElement; interface IXMLDOMText; interface IXMLDOMComment; interface IXMLDOMProcessingInstruction; interface IXMLDOMCDATASection; interface IXMLDOMDocumentType; interface IXMLDOMNotation; interface IXMLDOMEntity; interface IXMLDOMEntityReference; interface IXMLDOMParseError; interface IXTLRuntime; typedef enum tagDOMNodeType { NODE_INVALID, NODE_ELEMENT, NODE_ATTRIBUTE, NODE_TEXT, NODE_CDATA_SECTION, NODE_ENTITY_REFERENCE, NODE_ENTITY, NODE_PROCESSING_INSTRUCTION, NODE_COMMENT, NODE_DOCUMENT, NODE_DOCUMENT_TYPE, NODE_DOCUMENT_FRAGMENT, NODE_NOTATION } DOMNodeType; [ local, object, odl, dual, oleautomation, /*nonextensible,*/ uuid(2933bf80-7b36-11d2-b20e-00c04f983e60), pointer_default(unique) ] interface IXMLDOMNode : IDispatch { [propget, id(DISPID_DOM_NODE_NODENAME)] HRESULT nodeName( [out,retval] BSTR *name ); [propget, id(DISPID_DOM_NODE_NODEVALUE)] HRESULT nodeValue( [out,retval] VARIANT *value ); [propput, id(DISPID_DOM_NODE_NODEVALUE)] HRESULT nodeValue( [in] VARIANT value ); [propget, id(DISPID_DOM_NODE_NODETYPE)] HRESULT nodeType( [out,retval] DOMNodeType *type ); [propget, id(DISPID_DOM_NODE_PARENTNODE)] HRESULT parentNode( [out,retval] IXMLDOMNode **parent ); [propget, id(DISPID_DOM_NODE_CHILDNODES)] HRESULT childNodes( [out,retval] IXMLDOMNodeList **childList ); [propget, id(DISPID_DOM_NODE_FIRSTCHILD)] HRESULT firstChild( [out,retval] IXMLDOMNode **firstChild ); [propget, id(DISPID_DOM_NODE_LASTCHILD)] HRESULT lastChild( [out,retval] IXMLDOMNode **lastChild ); [propget, id(DISPID_DOM_NODE_PREVIOUSSIBLING)] HRESULT previousSibling( [out,retval] IXMLDOMNode **previousSibling ); [propget, id(DISPID_DOM_NODE_NEXTSIBLING)] HRESULT nextSibling( [out,retval] IXMLDOMNode **nextSibling ); [propget, id(DISPID_DOM_NODE_ATTRIBUTES)] HRESULT attributes( [out,retval] IXMLDOMNamedNodeMap **attributeMap ); [id(DISPID_DOM_NODE_INSERTBEFORE)] HRESULT insertBefore( [in] IXMLDOMNode * newChild, [in] VARIANT refChild, [out,retval] IXMLDOMNode **outNewChild ); [id(DISPID_DOM_NODE_REPLACECHILD)] HRESULT replaceChild( [in] IXMLDOMNode *newChild, [in] IXMLDOMNode *oldChild, [out,retval] IXMLDOMNode **outOldChild ); [id(DISPID_DOM_NODE_REMOVECHILD)] HRESULT removeChild( [in] IXMLDOMNode *childNode, [out,retval] IXMLDOMNode **oldChild ); [id(DISPID_DOM_NODE_APPENDCHILD)] HRESULT appendChild( [in] IXMLDOMNode *newChild, [out,retval] IXMLDOMNode **outNewChild ); [id(DISPID_DOM_NODE_HASCHILDNODES)] HRESULT hasChildNodes( [out,retval] VARIANT_BOOL *hasChild ); [propget, id(DISPID_DOM_NODE_OWNERDOC)] HRESULT ownerDocument( [out,retval] IXMLDOMDocument **DOMDocument ); [id(DISPID_DOM_NODE_CLONENODE)] HRESULT cloneNode( [in] VARIANT_BOOL deep, [out,retval] IXMLDOMNode **cloneRoot ); [propget, id(DISPID_XMLDOM_NODE_STRINGTYPE)] HRESULT nodeTypeString( [out,retval] BSTR *nodeType ); [propget, id(DISPID_XMLDOM_NODE_TEXT)] HRESULT text( [out,retval] BSTR *text ); [propput, id(DISPID_XMLDOM_NODE_TEXT)] HRESULT text( [in] BSTR text ); [propget, id(DISPID_XMLDOM_NODE_SPECIFIED)] HRESULT specified( [out,retval] VARIANT_BOOL *isSpecified ); [propget, id(DISPID_XMLDOM_NODE_DEFINITION)] HRESULT definition( [out,retval] IXMLDOMNode **definitionNode ); [propget, id(DISPID_XMLDOM_NODE_NODETYPEDVALUE)] HRESULT nodeTypedValue( [out,retval] VARIANT *typedValue ); [propput, id(DISPID_XMLDOM_NODE_NODETYPEDVALUE)] HRESULT nodeTypedValue( [in] VARIANT typedValue ); [propget, id(DISPID_XMLDOM_NODE_DATATYPE)] HRESULT dataType( [out,retval] VARIANT *dataTypeName ); [propput, id(DISPID_XMLDOM_NODE_DATATYPE)] HRESULT dataType( [in] BSTR dataTypeName ); [propget, id(DISPID_XMLDOM_NODE_XML)] HRESULT xml( [out,retval] BSTR *xmlString ); [id(DISPID_XMLDOM_NODE_TRANSFORMNODE)] HRESULT transformNode( [in] IXMLDOMNode *styleSheet, [out,retval] BSTR *xmlString ); [id(DISPID_XMLDOM_NODE_SELECTNODES)] HRESULT selectNodes( [in] BSTR queryString, [out,retval] IXMLDOMNodeList **resultList ); [id(DISPID_XMLDOM_NODE_SELECTSINGLENODE)] HRESULT selectSingleNode( [in] BSTR queryString, [out,retval] IXMLDOMNode **resultNode ); [propget, id(DISPID_XMLDOM_NODE_PARSED)] HRESULT parsed( [out,retval] VARIANT_BOOL *isParsed ); [propget, id(DISPID_XMLDOM_NODE_NAMESPACE)] HRESULT namespaceURI( [out,retval] BSTR *namespaceURI ); [propget, id(DISPID_XMLDOM_NODE_PREFIX)] HRESULT prefix( [out,retval] BSTR *prefixString ); [propget, id(DISPID_XMLDOM_NODE_BASENAME)] HRESULT baseName( [out,retval] BSTR *nameString ); [id(DISPID_XMLDOM_NODE_TRANSFORMNODETOOBJECT)] HRESULT transformNodeToObject( [in] IXMLDOMNode *stylesheet, [in] VARIANT outputObject ); } [ local, object, odl, dual, /*nonextensible,*/ oleautomation, uuid(2933bf81-7b36-11d2-b20e-00c04f983e60), pointer_default(unique) ] interface IXMLDOMDocument : IXMLDOMNode { [propget, id(DISPID_DOM_DOCUMENT_DOCTYPE)] HRESULT doctype( [out,retval] IXMLDOMDocumentType **documentType ); [propget, id(DISPID_DOM_DOCUMENT_IMPLEMENTATION)] HRESULT implementation( [out,retval] IXMLDOMImplementation **impl ); [propget, id(DISPID_DOM_DOCUMENT_DOCUMENTELEMENT)] HRESULT documentElement( [out,retval] IXMLDOMElement **DOMElement ); [propputref, id(DISPID_DOM_DOCUMENT_DOCUMENTELEMENT)] HRESULT documentElement( [in] IXMLDOMElement *DOMElement ); [id(DISPID_DOM_DOCUMENT_CREATEELEMENT)] HRESULT createElement( [in] BSTR tagname, [out,retval] IXMLDOMElement **element ); [id(DISPID_DOM_DOCUMENT_CREATEDOCUMENTFRAGMENT)] HRESULT createDocumentFragment( [out,retval] IXMLDOMDocumentFragment **docFrag ); [id(DISPID_DOM_DOCUMENT_CREATETEXTNODE)] HRESULT createTextNode( [in] BSTR data, [out,retval] IXMLDOMText **text ); [id(DISPID_DOM_DOCUMENT_CREATECOMMENT)] HRESULT createComment( [in] BSTR data, [out,retval] IXMLDOMComment **comment ); [id(DISPID_DOM_DOCUMENT_CREATECDATASECTION)] HRESULT createCDATASection( [in] BSTR data, [out,retval] IXMLDOMCDATASection **cdata ); [id(DISPID_DOM_DOCUMENT_CREATEPROCESSINGINSTRUCTION)] HRESULT createProcessingInstruction( [in] BSTR target, [in] BSTR data, [out,retval] IXMLDOMProcessingInstruction **pi ); [id(DISPID_DOM_DOCUMENT_CREATEATTRIBUTE)] HRESULT createAttribute( [in] BSTR name, [out,retval] IXMLDOMAttribute **attribute ); [id(DISPID_DOM_DOCUMENT_CREATEENTITYREFERENCE)] HRESULT createEntityReference( [in] BSTR name, [out,retval] IXMLDOMEntityReference **entityRef ); [id(DISPID_DOM_DOCUMENT_GETELEMENTSBYTAGNAME)] HRESULT getElementsByTagName( [in] BSTR tagName, [out,retval] IXMLDOMNodeList **resultList ); [id(DISPID_XMLDOM_DOCUMENT_CREATENODE)] HRESULT createNode( [in] VARIANT Type, [in] BSTR name, [in] BSTR namespaceURI, [out,retval] IXMLDOMNode **node ); [id(DISPID_XMLDOM_DOCUMENT_NODEFROMID)] HRESULT nodeFromID( [in] BSTR idString, [out,retval] IXMLDOMNode **node ); [id(DISPID_XMLDOM_DOCUMENT_LOAD)] HRESULT load( [in] VARIANT xmlSource, [out,retval] VARIANT_BOOL *isSuccessful ); [propget, id(DISPID_READYSTATE)] HRESULT readyState( [out,retval] long *value ); [propget, id(DISPID_XMLDOM_DOCUMENT_PARSEERROR)] HRESULT parseError( [out,retval] IXMLDOMParseError **errorObj ); [propget, id(DISPID_XMLDOM_DOCUMENT_URL)] HRESULT url( [out,retval] BSTR *urlString ); /* FIXME: these is meant to be async, but widl parses that as a keyword */ [propget, id(DISPID_XMLDOM_DOCUMENT_ASYNC)] HRESULT async( [out,retval] VARIANT_BOOL *isAsync ); [propput, id(DISPID_XMLDOM_DOCUMENT_ASYNC)] HRESULT async( [in] VARIANT_BOOL isAsync ); [id(DISPID_XMLDOM_DOCUMENT_ABORT)] HRESULT abort(); [id(DISPID_XMLDOM_DOCUMENT_LOADXML)] HRESULT loadXML( [in] BSTR bstrXML, [out,retval] VARIANT_BOOL *isSuccessful ); [id(DISPID_XMLDOM_DOCUMENT_SAVE)] HRESULT save( [in] VARIANT destination ); [propget, id(DISPID_XMLDOM_DOCUMENT_VALIDATE)] HRESULT validateOnParse( [out,retval] VARIANT_BOOL *isValidating ); [propput, id(DISPID_XMLDOM_DOCUMENT_VALIDATE)] HRESULT validateOnParse( [in] VARIANT_BOOL isValidating ); [propget, id(DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE)] HRESULT resolveExternals( [out,retval] VARIANT_BOOL *isResolving ); [propput, id(DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE)] HRESULT resolveExternals( [in] VARIANT_BOOL isValidating ); [propget, id(DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE)] HRESULT preserveWhiteSpace( [out,retval] VARIANT_BOOL *isPreserving ); [propput, id(DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE)] HRESULT preserveWhiteSpace( [in] VARIANT_BOOL isPreserving ); [propput, id(DISPID_XMLDOM_DOCUMENT_ONREADYSTATECHANGE)] HRESULT onreadystatechange( [in] VARIANT readystatechangeSink ); [propput, id(DISPID_XMLDOM_DOCUMENT_ONDATAAVAILABLE)] HRESULT ondataavailable( [in] VARIANT ondataavailableSink ); [propput, id(DISPID_XMLDOM_DOCUMENT_ONTRANSFORMNODE)] HRESULT ontransformnode( [in] VARIANT ontransformnodeSink ); } [ local, object, odl, dual, /*nonextensible,*/ oleautomation, uuid(2933bf82-7b36-11d2-b20e-00c04f983e60), pointer_default(unique) ] interface IXMLDOMNodeList : IDispatch { [propget, id(DISPID_VALUE)] HRESULT item( [in] long index, [out,retval] IXMLDOMNode **listItem ); [propget, id(DISPID_DOM_NODELIST_LENGTH)] HRESULT length( [out,retval] long *listLength ); [id(DISPID_XMLDOM_NODELIST_NEXTNODE)] HRESULT nextNode( [out,retval] IXMLDOMNode **nextItem ); [id(DISPID_XMLDOM_NODELIST_RESET)] HRESULT reset(); [id(DISPID_NEWENUM)] HRESULT _newEnum( [out,retval] IUnknown **ppUnk ); } [ local, object, odl, dual, /*nonextensible,*/ oleautomation, uuid(2933bf83-7b36-11d2-b20e-00c04f983e60), pointer_default(unique) ] interface IXMLDOMNamedNodeMap : IDispatch { [id(DISPID_DOM_NAMEDNODEMAP_GETNAMEDITEM)] HRESULT getNamedItem( [in] BSTR name, [out,retval] IXMLDOMNode **namedItem ); [id(DISPID_DOM_NAMEDNODEMAP_SETNAMEDITEM)] HRESULT setNamedItem( [in] IXMLDOMNode *newItem, [out,retval] IXMLDOMNode **namedItem ); [id(DISPID_DOM_NAMEDNODEMAP_REMOVENAMEDITEM)] HRESULT removeNamedItem( [in] BSTR name, [out,retval] IXMLDOMNode **namedItem ); [propget, id(DISPID_VALUE)] HRESULT item( [in] long index, [out,retval] IXMLDOMNode **listItem ); [propget, id(DISPID_DOM_NODELIST_LENGTH)] HRESULT length( [out,retval] long *listLength ); [id(DISPID_XMLDOM_NAMEDNODEMAP_GETQUALIFIEDITEM)] HRESULT getQualifiedItem( [in] BSTR baseName, [in] BSTR namespaceURI, [out,retval] IXMLDOMNode **qualifiedItem ); [id(DISPID_XMLDOM_NAMEDNODEMAP_REMOVEQUALIFIEDITEM)] HRESULT removeQualifiedItem( [in] BSTR baseName, [in] BSTR namespaceURI, [out,retval] IXMLDOMNode **qualifiedItem ); [id(DISPID_XMLDOM_NAMEDNODEMAP_NEXTNODE)] HRESULT nextNode( [out,retval] IXMLDOMNode **nextItem ); [id(DISPID_XMLDOM_NAMEDNODEMAP_RESET)] HRESULT reset(); [id(DISPID_NEWENUM)] HRESULT _newEnum( [out,retval] IUnknown **ppUnk ); } [ local, object, odl, dual, /*nonextensible,*/ oleautomation, uuid(3efaa413-272f-11d2-836f-0000f87a7782), pointer_default(unique) ] interface IXMLDOMDocumentFragment : IXMLDOMNode { /* empty */ } [ local, object, odl, dual, /*nonextensible,*/ oleautomation, uuid(2933bf84-7b36-11d2-b20e-00c04f983e60), pointer_default(unique) ] interface IXMLDOMCharacterData : IXMLDOMNode { [propget, id(DISPID_DOM_DATA_DATA)] HRESULT data( [out,retval] BSTR *data ); [propput, id(DISPID_DOM_DATA_DATA)] HRESULT data( [in] BSTR data ); [propget, id(DISPID_DOM_DATA_LENGTH)] HRESULT length( [out,retval] long *dataLength ); [id(DISPID_DOM_DATA_SUBSTRING)] HRESULT substringData( [in] long offset, [in] long count, [out,retval] BSTR *data ); [id(DISPID_DOM_DATA_APPEND)] HRESULT appendData( [in] BSTR data ); [id(DISPID_DOM_DATA_INSERT)] HRESULT insertData( [in] long offset, [in] BSTR data ); [id(DISPID_DOM_DATA_DELETE)] HRESULT deleteData( [in] long offset, [in] long count ); [id(DISPID_DOM_DATA_REPLACE)] HRESULT replaceData( [in] long offset, [in] long count, [in] BSTR data ); } [ local, object, odl, dual, /*nonextensible,*/ oleautomation, uuid(2933bf85-7b36-11d2-b20e-00c04f983e60), pointer_default(unique) ] interface IXMLDOMAttribute : IXMLDOMNode { [propget,id(DISPID_DOM_ATTRIBUTE_GETNAME)] HRESULT name( [out,retval] BSTR *attributeName ); [propget,id(DISPID_DOM_ATTRIBUTE_VALUE)] HRESULT value( [out,retval] VARIANT *attributeValue ); [propput,id(DISPID_DOM_ATTRIBUTE_VALUE)] HRESULT value( [in] VARIANT attributeValue ); } [ local, object, odl, dual, /*nonextensible,*/ oleautomation, uuid(2933bf86-7b36-11d2-b20e-00c04f983e60), pointer_default(unique) ] interface IXMLDOMElement : IXMLDOMNode { [propget, id(DISPID_DOM_ELEMENT_GETTAGNAME)] HRESULT tagName( [out,retval] BSTR *tagName ); [id(DISPID_DOM_ELEMENT_GETATTRIBUTE)] HRESULT getAttribute( [in] BSTR name, [out,retval] VARIANT * value ); [id(DISPID_DOM_ELEMENT_SETATTRIBUTE)] HRESULT setAttribute( [in] BSTR name, [in] VARIANT value ); [id(DISPID_DOM_ELEMENT_REMOVEATTRIBUTE)] HRESULT removeAttribute( [in] BSTR name ); [id(DISPID_DOM_ELEMENT_GETATTRIBUTENODE)] HRESULT getAttributeNode( [in] BSTR name, [out, retval] IXMLDOMAttribute ** attributeNode ); [id(DISPID_DOM_ELEMENT_SETATTRIBUTENODE)] HRESULT setAttributeNode( [in] IXMLDOMAttribute *DOMAttribute, [out, retval] IXMLDOMAttribute ** attributeNode ); [id(DISPID_DOM_ELEMENT_REMOVEATTRIBUTENODE)] HRESULT removeAttributeNode( [in] IXMLDOMAttribute *DOMAttribute, [out, retval] IXMLDOMAttribute ** attributeNode ); [id(DISPID_DOM_ELEMENT_GETELEMENTSBYTAGNAME)] HRESULT getElementsByTagName( [in] BSTR tagName, [out, retval] IXMLDOMNodeList ** resultList ); [id(DISPID_DOM_ELEMENT_NORMALIZE)] HRESULT normalize(); } [ local, object, odl, dual, /*nonextensible,*/ oleautomation, uuid(2933bf87-7b36-11d2-b20e-00c04f983e60), pointer_default(unique) ] interface IXMLDOMText : IXMLDOMCharacterData { [id(DISPID_DOM_TEXT_SPLITTEXT)] HRESULT splitText( [in] long offset, [out,retval] IXMLDOMText **rightHandTextNode ); } [ local, object, odl, dual, /*nonextensible,*/ oleautomation, uuid(2933bf88-7b36-11d2-b20e-00c04f983e60), pointer_default(unique) ] interface IXMLDOMComment : IXMLDOMNode { /* empty */ } [ local, object, odl, dual, /*nonextensible,*/ oleautomation, uuid(2933bf89-7b36-11d2-b20e-00c04f983e60), pointer_default(unique) ] interface IXMLDOMProcessingInstruction : IXMLDOMNode { [propget, id(DISPID_DOM_PI_TARGET)] HRESULT target( [out, retval] BSTR *name ); [propget, id(DISPID_DOM_PI_DATA)] HRESULT data( [out, retval] BSTR *value ); [propput, id(DISPID_DOM_PI_DATA)] HRESULT data( [in] BSTR value ); } [ local, object, odl, dual, /*nonextensible,*/ oleautomation, uuid(2933bf8a-7b36-11d2-b20e-00c04f983e60), pointer_default(unique) ] interface IXMLDOMCDATASection : IXMLDOMText { /* empty */ } [ local, object, odl, dual, /*nonextensible,*/ oleautomation, uuid(2933bf8b-7b36-11d2-b20e-00c04f983e60), pointer_default(unique) ] interface IXMLDOMDocumentType : IXMLDOMNode { [propget, id(DISPID_DOM_DOCUMENTTYPE_NAME)] HRESULT name( [out,retval] BSTR *rootName ); [propget, id(DISPID_DOM_DOCUMENTTYPE_ENTITIES)] HRESULT entities( [out,retval] IXMLDOMNamedNodeMap **entityMap ); [propget, id(DISPID_DOM_DOCUMENTTYPE_NOTATIONS)] HRESULT notations( [out,retval] IXMLDOMNamedNodeMap **notationMap ); } [ local, object, odl, dual, oleautomation, /*nonextensible,*/ helpstring("structure for reporting parse errors"), pointer_default(unique), uuid (3efaa426-272f-11d2-836f-0000f87a7782) ] interface IXMLDOMParseError : IDispatch { [propget, id(DISPID_VALUE)] HRESULT errorCode([retval, out] long *errCode); [propget, id(DISPID_DOM_ERROR_URL)] HRESULT url([retval, out] BSTR *p); [propget, id(DISPID_DOM_ERROR_REASON)] HRESULT reason([retval, out] BSTR *p); [propget, id(DISPID_DOM_ERROR_SRCTEXT)] HRESULT srcText([retval, out] BSTR *p); [propget, id(DISPID_DOM_ERROR_LINE)] HRESULT line([retval, out] long *lineNo); [propget, id(DISPID_DOM_ERROR_LINEPOS)] HRESULT linepos([retval, out] long * linePos); [propget, id(DISPID_DOM_ERROR_FILEPOS)] HRESULT filepos([retval, out] long * filePos); } [ uuid(2933bf90-7b36-11d2-b20e-00c04f983e60) ] coclass DOMDocument { [default] interface IXMLDOMDocument; [default, source] dispinterface XMLDOMDocumentEvents; } [ uuid(2933bf91-7b36-11d2-b20e-00c04f983e60) ] coclass DOMFreeThreadedDocument { [default] interface IXMLDOMDocument; [default, source] dispinterface XMLDOMDocumentEvents; } [ object, uuid(ed8c108d-4349-11d2-91a4-00c04f7969e8), odl, dual, oleautomation, pointer_default(unique) ] interface IXMLHttpRequest : IDispatch { [id(1)] HRESULT open([in] BSTR bstrMethod, [in] BSTR bstrUrl, [in, optional] VARIANT varAsync, [in, optional] VARIANT varUser, [in, optional] VARIANT varPassword); [id(2)] HRESULT setRequestHeader([in] BSTR bstrHeader, [in] BSTR bstrValue); [id(3)] HRESULT getResponseHeader([in] BSTR bstrHeader, [out, retval] BSTR *pbstrValue); [id(4)] HRESULT getAllResponseHeaders([out, retval] BSTR *pbstrHeaders); [id(5)] HRESULT send([in, optional] VARIANT varBody); [id(6)] HRESULT abort(); [propget, id(7)] HRESULT status([out, retval] long *plStatus); [propget, id(8)] HRESULT statusText([out, retval] BSTR *bstrStatus); [propget, id(9)] HRESULT responseXML([out, retval] IDispatch **ppBody); [propget, id(10)] HRESULT responseText([out, retval] BSTR *pbstrBody); [propget, id(11)] HRESULT responseBody([out, retval] VARIANT *pvarBody); [propget, id(12)] HRESULT responseStream([out, retval] VARIANT *pvarBody); [propget, id(13)] HRESULT readyState([out, retval] long *plState); [propput, id(14)] HRESULT onreadystatechange([in] IDispatch *pReadyStateSink); } [ uuid(ed8c108e-4349-11d2-91a4-00c04f7969e8) ] coclass XMLHTTPRequest { [default] interface IXMLHttpRequest; }