65 return This->node.node;
82 *ppvObject = &
This->IXMLDOMElement_iface;
99 IUnknown_AddRef( (
IUnknown*)*ppvObject );
108 TRACE(
"%p, refcount %ld.\n", iface,
ref);
118 TRACE(
"%p, refcount %lu.\n", iface,
ref);
134 return IDispatchEx_GetTypeInfoCount(&
This->node.dispex.IDispatchEx_iface, pctinfo);
143 return IDispatchEx_GetTypeInfo(&
This->node.dispex.IDispatchEx_iface,
144 iTInfo,
lcid, ppTInfo);
153 return IDispatchEx_GetIDsOfNames(&
This->node.dispex.IDispatchEx_iface,
154 riid, rgszNames, cNames,
lcid, rgDispId);
161 EXCEPINFO* pExcepInfo,
UINT* puArgErr )
164 return IDispatchEx_Invoke(&
This->node.dispex.IDispatchEx_iface,
165 dispIdMember,
riid,
lcid,
wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
210 TRACE(
"(%p)->(%p)\n",
This, domNodeType);
307 hr = IXMLDOMNode_get_nodeType(newNode, &
type);
317 if (old_node) *old_node =
NULL;
332 TRACE(
"(%p)->(%p %p %p)\n",
This, newNode, oldNode, outOldNode);
378 TRACE(
"(%p)->(%d %p)\n",
This, deep, outNode);
387 static const WCHAR elementW[] = {
'e',
'l',
'e',
'm',
'e',
'n',
't',0};
417 FIXME(
"(%p)->(%p) stub!\n",
This, isSpecified);
418 *isSpecified = VARIANT_TRUE;
427 FIXME(
"(%p)->(%p)\n",
This, definitionNode);
433 if(
c <=
'9')
return c-
'0';
434 if(
c <=
'F')
return c-
'A'+10;
440 if(
c ==
'+')
return 62;
441 if(
c ==
'/')
return 63;
442 if(
c <=
'9')
return c-
'0'+52;
443 if(
c <=
'Z')
return c-
'A';
497 if(
p+4<
e && *(
p+4)==
'-')
507 if(
p+2<
e && *(
p+2)==
':')
517 while (*
p >=
'0' && *
p <=
'9')
p++;
566 if ( *c2 ==
' ' || *c2 ==
'\t' ||
567 *c2 ==
'\n' || *c2 ==
'\r' )
578 else if(
str[
len-1] ==
'=')
i = 1;
658 WARN(
"unknown type %d\n", dt);
681 if(
node->type != XML_ELEMENT_NODE)
683 FIXME(
"invalid element node\n");
707 if (IXMLDOMDocument3_get_schemas(doc, &
v) ==
S_OK &&
713 IXMLDOMDocument3_Release(doc);
754 static const char b64[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
761 pad_bytes = (
bytes % 4) ? 4 - (
bytes % 4) : 0;
763 TRACE(
"%d, bytes is %d, pad bytes is %d\n",
len,
bytes, pad_bytes);
764 needed =
bytes + pad_bytes + 1;
776 *
ptr++ =
b64[ (
d[0] >> 2) & 0x3f ];
779 *
ptr++ =
b64[ ((
d[0] << 4) & 0x30) | (
d[1] >> 4 & 0x0f)];
782 *
ptr++ =
b64[ ((
d[1] << 2) & 0x3c) | (
d[2] >> 6 & 0x03)];
793 *
ptr++ =
b64[ (
d[0] >> 2) & 0x3f ];
796 *
ptr++ =
b64[ ((
d[0] << 4) & 0x30) | (
d[1] >> 4 & 0x0f)];
799 *
ptr++ =
b64[ ((
d[1] << 2) & 0x3c) ];
805 *
ptr++ =
b64[ (
d[0] >> 2) & 0x3f ];
808 *
ptr++ =
b64[ ((
d[0] << 4) & 0x30)];
821 static const char byte_to_hex[16] =
"0123456789abcdef";
829 (*ret)[2*
i] = byte_to_hex[
buf[
i] >> 4];
830 (*ret)[2*
i+1] = byte_to_hex[0x0f &
buf[
i]];
878 FIXME(
"unexpected array dimension count %u\n", dim);
911 FIXME(
"unexpected array dimension count %u\n", dim);
1075 ERR(
"Failed to create Attribute\n");
1078 ERR(
"Failed to create Namespace\n");
1134 FIXME(
"(%p)->(%p) stub!\n",
This, isParsed);
1135 *isParsed = VARIANT_TRUE;
1226 if(!xmlValidateNameValue(xml_name))
1249 xml_value = xmlGetNsProp(
element, xml_name,
NULL);
1287 FIXME(
"VariantChangeType failed\n");
1320 if (!xmlSetNsProp(
element,
NULL, xml_name, xml_value))
1339 hr = IXMLDOMElement_get_attributes(iface, &
attr);
1342 hr = IXMLDOMNamedNodeMap_removeNamedItem(
attr,
p,
NULL);
1343 IXMLDOMNamedNodeMap_Release(
attr);
1363 if (attributeNode) *attributeNode =
NULL;
1366 if (!xmlValidateNameValue(nameA))
1378 *attributeNode =
NULL;
1404 hr = IUnknown_QueryInterface(unk, &IID_IXMLDOMAttribute, (
void**)attributeNode);
1405 IUnknown_Release(unk);
1417 static const WCHAR xmlnsW[] = {
'x',
'm',
'l',
'n',
's',0};
1430 if (!attr_node)
return E_FAIL;
1434 WARN(
"attempt to add already used attribute\n");
1455 if (old) *old =
NULL;
1496 FIXME(
"(%p)->(%p %p)\n",
This, domAttribute, attributeNode);
1613 attr = xmlHasNsProp(
node, nameA, href);
1676 TRACE(
"(%p)->(%p %p)\n",
node, newItem, namedItem );
1681 if(namedItem) *namedItem =
NULL;
1685 if(!ThisNew)
return E_FAIL;
1687 if(ThisNew->
node->type != XML_ATTRIBUTE_NODE)
1690 if(!ThisNew->
node->parent)
1692 WARN(
"%p is not an orphan of %p\n", ThisNew->
node, ThisNew->
node->doc);
1694 nodeNew = xmlAddChild(
node, ThisNew->
node);
1725 attr = xmlHasNsProp(
node, nameA, href);
1738 xmlUnlinkNode( (xmlNodePtr)
attr );
1744 if (xmlRemoveProp(
attr) == -1)
1745 ERR(
"xmlRemoveProp failed\n");
1808 curr =
node->properties;
1810 for (; attrIndex <
index && curr->next !=
NULL; attrIndex++)
1823 while (attrIndex <
index)
1833 if (attrIndex <
index)
1850 curr->doc =
node->doc;
1859 hr = IUnknown_QueryInterface(unk, &IID_IXMLDOMNode, (
void**)
item);
1860 IUnknown_Release(unk);
1877 curr =
node->properties;
1898 TRACE(
"%p, %ld, %p.\n",
node, *iter, nextNode);
1902 curr =
node->properties;
1906 for (
i = 0;
i < *iter;
i++) {
1907 if (curr->next ==
NULL)
static unsigned char bytes[4]
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static const WCHAR nameW[]
static const WCHAR valueW[]
_ACRTIMP __msvcrt_long __cdecl wcstol(const wchar_t *, wchar_t **, int)
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
_ACRTIMP div_t __cdecl div(int, int)
static const xmlChar xmlns[]
IUnknown * create_attribute(xmlNodePtr attribute, BOOL floating)
void set_xpathmode(xmlDocPtr doc, BOOL xpath)
xmlChar * tagName_to_XPath(const BSTR tagName)
HRESULT xmldoc_remove_orphan(xmlDocPtr doc, xmlNodePtr node)
IUnknown * create_domdoc(xmlNodePtr document)
BOOL is_xpathmode(const xmlDocPtr doc)
HRESULT xmldoc_add_orphan(xmlDocPtr doc, xmlNodePtr node)
HRESULT WINAPI SafeArrayGetUBound(SAFEARRAY *psa, UINT nDim, LONG *plUbound)
HRESULT WINAPI SafeArrayAccessData(SAFEARRAY *psa, void **ppvData)
HRESULT WINAPI SafeArrayUnaccessData(SAFEARRAY *psa)
UINT WINAPI SafeArrayGetDim(SAFEARRAY *psa)
HRESULT WINAPI SafeArrayGetLBound(SAFEARRAY *psa, UINT nDim, LONG *plLbound)
UINT WINAPI SafeArrayGetElemsize(SAFEARRAY *psa)
SAFEARRAY *WINAPI SafeArrayCreate(VARTYPE vt, UINT cDims, SAFEARRAYBOUND *rgsabound)
static HRESULT WINAPI domelem_getAttributeNode(IXMLDOMElement *iface, BSTR p, IXMLDOMAttribute **attributeNode)
static HRESULT WINAPI domelem_get_dataType(IXMLDOMElement *iface, VARIANT *typename)
static HRESULT WINAPI domelem_get_nextSibling(IXMLDOMElement *iface, IXMLDOMNode **domNode)
static HRESULT WINAPI domelem_get_nodeTypedValue(IXMLDOMElement *iface, VARIANT *v)
static HRESULT WINAPI domelem_get_prefix(IXMLDOMElement *iface, BSTR *prefix)
static const xmlChar DT_prefix[]
static HRESULT WINAPI domelem_get_nodeName(IXMLDOMElement *iface, BSTR *p)
static HRESULT domelem_remove_named_item(xmlNodePtr node, BSTR name, IXMLDOMNode **item)
static const struct IXMLDOMElementVtbl domelem_vtbl
static HRESULT WINAPI domelem_GetIDsOfNames(IXMLDOMElement *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
static HRESULT WINAPI domelem_getElementsByTagName(IXMLDOMElement *iface, BSTR tagName, IXMLDOMNodeList **resultList)
static HRESULT domelem_set_named_item(xmlNodePtr node, IXMLDOMNode *newItem, IXMLDOMNode **namedItem)
static HRESULT WINAPI domelem_get_ownerDocument(IXMLDOMElement *iface, IXMLDOMDocument **doc)
static HRESULT WINAPI domelem_get_parentNode(IXMLDOMElement *iface, IXMLDOMNode **parent)
static HRESULT WINAPI domelem_setAttribute(IXMLDOMElement *iface, BSTR name, VARIANT value)
static domelem * impl_from_IXMLDOMElement(IXMLDOMElement *iface)
static const struct nodemap_funcs domelem_attr_map
static HRESULT WINAPI domelem_put_nodeTypedValue(IXMLDOMElement *iface, VARIANT value)
static HRESULT domelem_get_length(const xmlNodePtr node, LONG *length)
static dispex_static_data_t domelem_dispex
static HRESULT WINAPI domelem_get_nodeType(IXMLDOMElement *iface, DOMNodeType *domNodeType)
static HRESULT domelem_next_node(const xmlNodePtr node, LONG *iter, IXMLDOMNode **nextNode)
static HRESULT WINAPI domelem_get_definition(IXMLDOMElement *iface, IXMLDOMNode **definitionNode)
static const tid_t domelem_iface_tids[]
static HRESULT WINAPI domelem_put_text(IXMLDOMElement *iface, BSTR p)
static HRESULT WINAPI domelem_transformNode(IXMLDOMElement *iface, IXMLDOMNode *node, BSTR *p)
static HRESULT WINAPI domelem_replaceChild(IXMLDOMElement *iface, IXMLDOMNode *newNode, IXMLDOMNode *oldNode, IXMLDOMNode **outOldNode)
static HRESULT WINAPI domelem_transformNodeToObject(IXMLDOMElement *iface, IXMLDOMNode *domNode, VARIANT var1)
static HRESULT WINAPI domelem_get_xml(IXMLDOMElement *iface, BSTR *p)
static HRESULT domelem_get_item(const xmlNodePtr node, LONG index, IXMLDOMNode **item)
static HRESULT WINAPI domelem_get_text(IXMLDOMElement *iface, BSTR *p)
static HRESULT WINAPI domelem_removeAttribute(IXMLDOMElement *iface, BSTR p)
static HRESULT WINAPI domelem_appendChild(IXMLDOMElement *iface, IXMLDOMNode *child, IXMLDOMNode **outChild)
static ULONG WINAPI domelem_AddRef(IXMLDOMElement *iface)
static HRESULT WINAPI domelem_get_specified(IXMLDOMElement *iface, VARIANT_BOOL *isSpecified)
static HRESULT domelem_get_named_item(const xmlNodePtr node, BSTR name, IXMLDOMNode **item)
IUnknown * create_element(xmlNodePtr element)
static HRESULT WINAPI domelem_get_parsed(IXMLDOMElement *iface, VARIANT_BOOL *isParsed)
static HRESULT encode_base64(const BYTE *buf, int len, BSTR *ret)
static HRESULT WINAPI domelem_get_firstChild(IXMLDOMElement *iface, IXMLDOMNode **domNode)
static HRESULT WINAPI domelem_removeAttributeNode(IXMLDOMElement *iface, IXMLDOMAttribute *domAttribute, IXMLDOMAttribute **attributeNode)
static xmlNodePtr get_element(const domelem *This)
static HRESULT WINAPI domelem_setAttributeNode(IXMLDOMElement *iface, IXMLDOMAttribute *attribute, IXMLDOMAttribute **old)
static HRESULT WINAPI domelem_getAttribute(IXMLDOMElement *iface, BSTR name, VARIANT *value)
static const xmlChar DT_nsURI[]
static HRESULT WINAPI domelem_insertBefore(IXMLDOMElement *iface, IXMLDOMNode *newNode, VARIANT refChild, IXMLDOMNode **old_node)
static HRESULT WINAPI domelem_normalize(IXMLDOMElement *iface)
static XDR_DT element_get_dt(xmlNodePtr node)
static HRESULT WINAPI domelem_hasChildNodes(IXMLDOMElement *iface, VARIANT_BOOL *ret)
static HRESULT variant_from_dt(XDR_DT dt, xmlChar *str, VARIANT *v)
static HRESULT WINAPI domelem_put_dataType(IXMLDOMElement *iface, BSTR dtName)
static HRESULT WINAPI domelem_put_nodeValue(IXMLDOMElement *iface, VARIANT value)
static HRESULT WINAPI domelem_get_childNodes(IXMLDOMElement *iface, IXMLDOMNodeList **outList)
static HRESULT WINAPI domelem_get_attributes(IXMLDOMElement *iface, IXMLDOMNamedNodeMap **map)
static HRESULT WINAPI domelem_selectSingleNode(IXMLDOMElement *iface, BSTR p, IXMLDOMNode **outNode)
static HRESULT WINAPI domelem_get_nodeValue(IXMLDOMElement *iface, VARIANT *value)
static HRESULT WINAPI domelem_cloneNode(IXMLDOMElement *iface, VARIANT_BOOL deep, IXMLDOMNode **outNode)
static HRESULT WINAPI domelem_selectNodes(IXMLDOMElement *iface, BSTR p, IXMLDOMNodeList **outList)
static const tid_t domelem_se_tids[]
static BYTE base64_to_byte(xmlChar c)
static HRESULT encode_binhex(const BYTE *buf, int len, BSTR *ret)
static ULONG WINAPI domelem_Release(IXMLDOMElement *iface)
static HRESULT WINAPI domelem_get_previousSibling(IXMLDOMElement *iface, IXMLDOMNode **domNode)
static HRESULT WINAPI domelem_GetTypeInfoCount(IXMLDOMElement *iface, UINT *pctinfo)
static HRESULT domelem_get_qualified_item(const xmlNodePtr node, BSTR name, BSTR uri, IXMLDOMNode **item)
static HRESULT WINAPI domelem_get_baseName(IXMLDOMElement *iface, BSTR *name)
static HRESULT domelem_remove_qualified_item(xmlNodePtr node, BSTR name, BSTR uri, IXMLDOMNode **item)
static HRESULT WINAPI domelem_QueryInterface(IXMLDOMElement *iface, REFIID riid, void **ppvObject)
static HRESULT WINAPI domelem_removeChild(IXMLDOMElement *iface, IXMLDOMNode *child, IXMLDOMNode **oldChild)
static HRESULT WINAPI domelem_get_tagName(IXMLDOMElement *iface, BSTR *p)
static HRESULT WINAPI domelem_get_lastChild(IXMLDOMElement *iface, IXMLDOMNode **domNode)
static HRESULT WINAPI domelem_get_nodeTypeString(IXMLDOMElement *iface, BSTR *p)
static HRESULT WINAPI domelem_Invoke(IXMLDOMElement *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
static HRESULT WINAPI domelem_GetTypeInfo(IXMLDOMElement *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
static HRESULT WINAPI domelem_get_namespaceURI(IXMLDOMElement *iface, BSTR *p)
static BYTE hex_to_byte(xmlChar c)
GLuint GLuint GLsizei GLenum type
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLsizei GLsizei * length
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static HRESULT create_node(HTMLDocumentNode *, nsIDOMNode *, HTMLDOMNode **)
static HTMLDOMNode * get_node_obj(IHTMLDOMNode *)
static const char * debugstr_variant(const VARIANT *var)
#define cmp(status, error)
static VARIANTARG static DISPID
enum tagDOMNodeType DOMNodeType
static HRESULT return_bstr(const WCHAR *value, BSTR *p)
HRESULT node_get_next_sibling(xmlnode *, IXMLDOMNode **)
HRESULT node_get_prefix(xmlnode *, BSTR *)
XDR_DT bstr_to_dt(OLECHAR const *bstr, int len)
HRESULT node_has_childnodes(const xmlnode *, VARIANT_BOOL *)
HRESULT node_get_text(const xmlnode *, BSTR *)
HRESULT node_get_base_name(xmlnode *, BSTR *)
HRESULT node_put_text(xmlnode *, BSTR)
HRESULT node_get_last_child(xmlnode *, IXMLDOMNode **)
static BSTR bstr_from_xmlChar(const xmlChar *str)
HRESULT node_remove_child(xmlnode *, IXMLDOMNode *, IXMLDOMNode **)
xmlChar const * dt_to_str(XDR_DT dt)
HRESULT node_get_parent(xmlnode *, IXMLDOMNode **)
HRESULT node_replace_child(xmlnode *, IXMLDOMNode *, IXMLDOMNode *, IXMLDOMNode **)
static xmlChar * xmlchar_from_wchar(const WCHAR *str)
HRESULT node_clone(xmlnode *, VARIANT_BOOL, IXMLDOMNode **)
IXMLDOMNamedNodeMap * create_nodemap(xmlNodePtr, const struct nodemap_funcs *)
HRESULT node_append_child(xmlnode *, IXMLDOMNode *, IXMLDOMNode **)
HRESULT node_get_previous_sibling(xmlnode *, IXMLDOMNode **)
HRESULT create_selection(xmlNodePtr, xmlChar *, IXMLDOMNodeList **)
HRESULT node_transform_node(const xmlnode *, IXMLDOMNode *, BSTR *)
HRESULT node_select_nodes(const xmlnode *, BSTR, IXMLDOMNodeList **)
XDR_DT SchemaCache_get_node_dt(IXMLDOMSchemaCollection2 *, xmlNodePtr)
HRESULT node_get_first_child(xmlnode *, IXMLDOMNode **)
HRESULT node_set_content(xmlnode *, LPCWSTR)
void destroy_xmlnode(xmlnode *)
XDR_DT str_to_dt(xmlChar const *str, int len)
HRESULT node_insert_before(xmlnode *, IXMLDOMNode *, const VARIANT *, IXMLDOMNode **)
HRESULT node_get_nodeName(xmlnode *, BSTR *)
HRESULT node_select_singlenode(const xmlnode *, BSTR, IXMLDOMNode **)
void init_xmlnode(xmlnode *, xmlNodePtr, IXMLDOMNode *, dispex_static_data_t *)
HRESULT node_get_owner_doc(const xmlnode *, IXMLDOMDocument **)
HRESULT node_get_xml(xmlnode *, BOOL, BSTR *)
HRESULT dt_validate(XDR_DT dt, xmlChar const *content)
const char * debugstr_dt(XDR_DT dt)
HRESULT node_get_namespaceURI(xmlnode *, BSTR *)
HRESULT node_get_child_nodes(xmlnode *, IXMLDOMNodeList **)
BOOL node_query_interface(xmlnode *, REFIID, void **)
OLECHAR const * dt_to_bstr(XDR_DT dt)
HRESULT node_create_supporterrorinfo(const tid_t *, void **)
_In_ LPWSTR _In_ DWORD _In_ LPCVOID pvData
#define MAKELCID(lgid, srtid)
BSTR WINAPI SysAllocString(LPCOLESTR str)
UINT WINAPI SysStringLen(BSTR str)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
#define IsEqualGUID(rguid1, rguid2)
#define SUBLANG_ENGLISH_US
IXMLDOMElement IXMLDOMElement_iface
Character const *const prefix
#define CONTAINING_RECORD(address, type, field)
HRESULT WINAPI VariantChangeTypeEx(VARIANTARG *pvargDest, VARIANTARG *pvargSrc, LCID lcid, USHORT wFlags, VARTYPE vt)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantChangeType(VARIANTARG *pvargDest, VARIANTARG *pvargSrc, USHORT wFlags, VARTYPE vt)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
void WINAPI VariantInit(VARIANTARG *pVarg)
INT WINAPI SystemTimeToVariantTime(LPSYSTEMTIME lpSt, double *pDateOut)
WINBASEAPI _In_ DWORD _Out_ _In_ WORD wFlags
#define DISP_E_UNKNOWNNAME
XMLPUBFUN int xmlStrlen(const xmlChar *str)
XMLPUBFUN int xmlStrEqual(const xmlChar *str1, const xmlChar *str2)
XMLPUBFUN xmlChar * xmlStrdup(const xmlChar *cur)