sync msxml3 with wine 1.1.5

svn path=/trunk/; revision=36374
This commit is contained in:
Christoph von Wittich 2008-09-21 13:03:20 +00:00
parent 0fa81bc0da
commit 8ff60114b6
6 changed files with 146 additions and 88 deletions

View file

@ -2124,6 +2124,29 @@ QueryServiceObjectSecurity(SC_HANDLE hService,
DWORD cbBufSize, DWORD cbBufSize,
LPDWORD pcbBytesNeeded) LPDWORD pcbBytesNeeded)
{ {
SECURITY_DESCRIPTOR descriptor;
DWORD size;
BOOL succ;
ACL acl;
FIXME("%p %d %p %u %p - semi-stub\n", hService, dwSecurityInformation,
lpSecurityDescriptor, cbBufSize, pcbBytesNeeded);
if (dwSecurityInformation != DACL_SECURITY_INFORMATION)
FIXME("information %d not supported\n", dwSecurityInformation);
InitializeSecurityDescriptor(&descriptor, SECURITY_DESCRIPTOR_REVISION);
InitializeAcl(&acl, sizeof(ACL), ACL_REVISION);
SetSecurityDescriptorDacl(&descriptor, TRUE, &acl, TRUE);
size = cbBufSize;
succ = RtlMakeSelfRelativeSD(&descriptor, lpSecurityDescriptor, &size);
*pcbBytesNeeded = size;
return succ;
#if 0
DWORD dwError; DWORD dwError;
TRACE("QueryServiceObjectSecurity(%p, %lu, %p)\n", TRACE("QueryServiceObjectSecurity(%p, %lu, %p)\n",
@ -2155,6 +2178,7 @@ QueryServiceObjectSecurity(SC_HANDLE hService,
} }
return TRUE; return TRUE;
#endif
} }
/********************************************************************** /**********************************************************************
@ -2167,6 +2191,9 @@ SetServiceObjectSecurity(SC_HANDLE hService,
SECURITY_INFORMATION dwSecurityInformation, SECURITY_INFORMATION dwSecurityInformation,
PSECURITY_DESCRIPTOR lpSecurityDescriptor) PSECURITY_DESCRIPTOR lpSecurityDescriptor)
{ {
FIXME("%p %d %p\n", hService, dwSecurityInformation, lpSecurityDescriptor);
return TRUE;
#if 0
PSECURITY_DESCRIPTOR SelfRelativeSD = NULL; PSECURITY_DESCRIPTOR SelfRelativeSD = NULL;
ULONG Length; ULONG Length;
NTSTATUS Status; NTSTATUS Status;
@ -2226,6 +2253,7 @@ SetServiceObjectSecurity(SC_HANDLE hService,
} }
return TRUE; return TRUE;
#endif
} }

View file

@ -59,6 +59,7 @@ static HRESULT WINAPI domcdata_QueryInterface(
TRACE("%p %s %p\n", This, debugstr_guid(riid), ppvObject); TRACE("%p %s %p\n", This, debugstr_guid(riid), ppvObject);
if ( IsEqualGUID( riid, &IID_IXMLDOMCDATASection ) || if ( IsEqualGUID( riid, &IID_IXMLDOMCDATASection ) ||
IsEqualGUID( riid, &IID_IXMLDOMCharacterData) ||
IsEqualGUID( riid, &IID_IDispatch ) || IsEqualGUID( riid, &IID_IDispatch ) ||
IsEqualGUID( riid, &IID_IUnknown ) ) IsEqualGUID( riid, &IID_IUnknown ) )
{ {

View file

@ -59,6 +59,7 @@ static HRESULT WINAPI domcomment_QueryInterface(
TRACE("%p %s %p\n", This, debugstr_guid(riid), ppvObject); TRACE("%p %s %p\n", This, debugstr_guid(riid), ppvObject);
if ( IsEqualGUID( riid, &IID_IXMLDOMComment ) || if ( IsEqualGUID( riid, &IID_IXMLDOMComment ) ||
IsEqualGUID( riid, &IID_IXMLDOMCharacterData) ||
IsEqualGUID( riid, &IID_IDispatch ) || IsEqualGUID( riid, &IID_IDispatch ) ||
IsEqualGUID( riid, &IID_IUnknown ) ) IsEqualGUID( riid, &IID_IUnknown ) )
{ {

View file

@ -65,6 +65,8 @@ static inline queryresult *impl_from_IXMLDOMNodeList( IXMLDOMNodeList *iface )
return (queryresult *)((char*)iface - FIELD_OFFSET(queryresult, lpVtbl)); return (queryresult *)((char*)iface - FIELD_OFFSET(queryresult, lpVtbl));
} }
#define XMLQUERYRES(x) ((IXMLDOMNodeList*)&(x)->lpVtbl)
static HRESULT WINAPI queryresult_QueryInterface( static HRESULT WINAPI queryresult_QueryInterface(
IXMLDOMNodeList *iface, IXMLDOMNodeList *iface,
REFIID riid, REFIID riid,
@ -326,13 +328,28 @@ static HRESULT queryresult_invoke(IUnknown *iface, DISPID id, LCID lcid, WORD fl
{ {
queryresult *This = impl_from_IXMLDOMNodeList( (IXMLDOMNodeList*)iface ); queryresult *This = impl_from_IXMLDOMNodeList( (IXMLDOMNodeList*)iface );
if(flags != DISPATCH_PROPERTYGET) { TRACE("(%p)->(%x %x %x %p %p %p)\n", This, id, lcid, flags, params, res, ei);
FIXME("flags %x\n", flags);
return E_NOTIMPL;
}
V_VT(res) = VT_DISPATCH; V_VT(res) = VT_DISPATCH;
V_DISPATCH(res) = (IDispatch*)create_node(This->result->nodesetval->nodeTab[This->resultPos]); V_DISPATCH(res) = NULL;
switch(flags)
{
case INVOKE_PROPERTYGET:
{
IXMLDOMNode *disp = NULL;
queryresult_get_item(XMLQUERYRES(This), id - MSXML_DISPID_CUSTOM_MIN, &disp);
V_DISPATCH(res) = (IDispatch*)&disp;
break;
}
default:
{
FIXME("unimplemented flags %x\n", flags);
break;
}
}
return S_OK; return S_OK;
} }

View file

@ -1680,6 +1680,57 @@ static HRESULT internal_parseBuffer(saxreader *This, const char *buffer, int siz
return S_OK; return S_OK;
} }
static HRESULT internal_parseStream(saxreader *This, IStream *stream, BOOL vbInterface)
{
saxlocator *locator;
HRESULT hr;
ULONG dataRead;
char data[1024];
hr = IStream_Read(stream, data, sizeof(data), &dataRead);
if(hr != S_OK)
return hr;
hr = SAXLocator_create(This, &locator, vbInterface);
if(FAILED(hr))
return E_FAIL;
locator->pParserCtxt = xmlCreatePushParserCtxt(
&locator->saxreader->sax, locator,
data, dataRead, NULL);
if(!locator->pParserCtxt)
{
ISAXLocator_Release((ISAXLocator*)&locator->lpSAXLocatorVtbl);
return E_FAIL;
}
while(1)
{
hr = IStream_Read(stream, data, sizeof(data), &dataRead);
if(hr != S_OK)
break;
if(xmlParseChunk(locator->pParserCtxt, data, dataRead, 0)) hr = E_FAIL;
else hr = locator->ret;
if(hr != S_OK) break;
if(dataRead != sizeof(data))
{
if(xmlParseChunk(locator->pParserCtxt, data, 0, 1)) hr = E_FAIL;
else hr = locator->ret;
break;
}
}
locator->pParserCtxt->sax = NULL;
xmlFreeParserCtxt(locator->pParserCtxt);
locator->pParserCtxt = NULL;
ISAXLocator_Release((ISAXLocator*)&locator->lpSAXLocatorVtbl);
return hr;
}
static HRESULT WINAPI internal_getEntityResolver( static HRESULT WINAPI internal_getEntityResolver(
saxreader *This, saxreader *This,
void *pEntityResolver, void *pEntityResolver,
@ -1867,47 +1918,7 @@ static HRESULT WINAPI internal_parse(
if(stream || IUnknown_QueryInterface(V_UNKNOWN(&varInput), if(stream || IUnknown_QueryInterface(V_UNKNOWN(&varInput),
&IID_IStream, (void**)&stream) == S_OK) &IID_IStream, (void**)&stream) == S_OK)
{ {
STATSTG dataInfo; hr = internal_parseStream(This, stream, vbInterface);
ULONG dataRead;
char *data;
while(1)
{
hr = IStream_Stat(stream, &dataInfo, STATFLAG_NONAME);
if(hr == E_PENDING) continue;
break;
}
if(hr != S_OK)
{
IStream_Release(stream);
break;
}
data = HeapAlloc(GetProcessHeap(), 0,
dataInfo.cbSize.QuadPart);
if(!data)
{
IStream_Release(stream);
break;
}
while(1)
{
hr = IStream_Read(stream, data,
dataInfo.cbSize.QuadPart, &dataRead);
if(hr == E_PENDING) continue;
break;
}
if(hr != S_OK)
{
HeapFree(GetProcessHeap(), 0, data);
IStream_Release(stream);
break;
}
hr = internal_parseBuffer(This, data,
dataInfo.cbSize.QuadPart, vbInterface);
HeapFree(GetProcessHeap(), 0, data);
IStream_Release(stream); IStream_Release(stream);
break; break;
} }
@ -2161,7 +2172,7 @@ static HRESULT WINAPI saxxmlreader_putProperty(
return E_NOTIMPL; return E_NOTIMPL;
} }
static HRESULT WINAPI saxxmlreader_getEntityResolver( static HRESULT WINAPI saxxmlreader_get_entityResolver(
IVBSAXXMLReader* iface, IVBSAXXMLReader* iface,
IVBSAXEntityResolver **pEntityResolver) IVBSAXEntityResolver **pEntityResolver)
{ {
@ -2169,7 +2180,7 @@ static HRESULT WINAPI saxxmlreader_getEntityResolver(
return internal_getEntityResolver(This, pEntityResolver, TRUE); return internal_getEntityResolver(This, pEntityResolver, TRUE);
} }
static HRESULT WINAPI saxxmlreader_putEntityResolver( static HRESULT WINAPI saxxmlreader_put_entityResolver(
IVBSAXXMLReader* iface, IVBSAXXMLReader* iface,
IVBSAXEntityResolver *pEntityResolver) IVBSAXEntityResolver *pEntityResolver)
{ {
@ -2177,7 +2188,7 @@ static HRESULT WINAPI saxxmlreader_putEntityResolver(
return internal_putEntityResolver(This, pEntityResolver, TRUE); return internal_putEntityResolver(This, pEntityResolver, TRUE);
} }
static HRESULT WINAPI saxxmlreader_getContentHandler( static HRESULT WINAPI saxxmlreader_get_contentHandler(
IVBSAXXMLReader* iface, IVBSAXXMLReader* iface,
IVBSAXContentHandler **ppContentHandler) IVBSAXContentHandler **ppContentHandler)
{ {
@ -2185,7 +2196,7 @@ static HRESULT WINAPI saxxmlreader_getContentHandler(
return internal_getContentHandler(This, ppContentHandler, TRUE); return internal_getContentHandler(This, ppContentHandler, TRUE);
} }
static HRESULT WINAPI saxxmlreader_putContentHandler( static HRESULT WINAPI saxxmlreader_put_contentHandler(
IVBSAXXMLReader* iface, IVBSAXXMLReader* iface,
IVBSAXContentHandler *contentHandler) IVBSAXContentHandler *contentHandler)
{ {
@ -2193,7 +2204,7 @@ static HRESULT WINAPI saxxmlreader_putContentHandler(
return internal_putContentHandler(This, contentHandler, TRUE); return internal_putContentHandler(This, contentHandler, TRUE);
} }
static HRESULT WINAPI saxxmlreader_getDTDHandler( static HRESULT WINAPI saxxmlreader_get_dtdHandler(
IVBSAXXMLReader* iface, IVBSAXXMLReader* iface,
IVBSAXDTDHandler **pDTDHandler) IVBSAXDTDHandler **pDTDHandler)
{ {
@ -2201,7 +2212,7 @@ static HRESULT WINAPI saxxmlreader_getDTDHandler(
return internal_getDTDHandler(This, pDTDHandler, TRUE); return internal_getDTDHandler(This, pDTDHandler, TRUE);
} }
static HRESULT WINAPI saxxmlreader_putDTDHandler( static HRESULT WINAPI saxxmlreader_put_dtdHandler(
IVBSAXXMLReader* iface, IVBSAXXMLReader* iface,
IVBSAXDTDHandler *pDTDHandler) IVBSAXDTDHandler *pDTDHandler)
{ {
@ -2209,7 +2220,7 @@ static HRESULT WINAPI saxxmlreader_putDTDHandler(
return internal_putDTDHandler(This, pDTDHandler, TRUE); return internal_putDTDHandler(This, pDTDHandler, TRUE);
} }
static HRESULT WINAPI saxxmlreader_getErrorHandler( static HRESULT WINAPI saxxmlreader_get_errorHandler(
IVBSAXXMLReader* iface, IVBSAXXMLReader* iface,
IVBSAXErrorHandler **pErrorHandler) IVBSAXErrorHandler **pErrorHandler)
{ {
@ -2217,7 +2228,7 @@ static HRESULT WINAPI saxxmlreader_getErrorHandler(
return internal_getErrorHandler(This, pErrorHandler, TRUE); return internal_getErrorHandler(This, pErrorHandler, TRUE);
} }
static HRESULT WINAPI saxxmlreader_putErrorHandler( static HRESULT WINAPI saxxmlreader_put_errorHandler(
IVBSAXXMLReader* iface, IVBSAXXMLReader* iface,
IVBSAXErrorHandler *errorHandler) IVBSAXErrorHandler *errorHandler)
{ {
@ -2225,7 +2236,7 @@ static HRESULT WINAPI saxxmlreader_putErrorHandler(
return internal_putErrorHandler(This, errorHandler, TRUE); return internal_putErrorHandler(This, errorHandler, TRUE);
} }
static HRESULT WINAPI saxxmlreader_getBaseURL( static HRESULT WINAPI saxxmlreader_get_baseURL(
IVBSAXXMLReader* iface, IVBSAXXMLReader* iface,
const WCHAR **pBaseUrl) const WCHAR **pBaseUrl)
{ {
@ -2235,7 +2246,7 @@ static HRESULT WINAPI saxxmlreader_getBaseURL(
return E_NOTIMPL; return E_NOTIMPL;
} }
static HRESULT WINAPI saxxmlreader_putBaseURL( static HRESULT WINAPI saxxmlreader_put_baseURL(
IVBSAXXMLReader* iface, IVBSAXXMLReader* iface,
const WCHAR *pBaseUrl) const WCHAR *pBaseUrl)
{ {
@ -2245,7 +2256,7 @@ static HRESULT WINAPI saxxmlreader_putBaseURL(
return E_NOTIMPL; return E_NOTIMPL;
} }
static HRESULT WINAPI saxxmlreader_getSecureBaseURL( static HRESULT WINAPI saxxmlreader_get_secureBaseURL(
IVBSAXXMLReader* iface, IVBSAXXMLReader* iface,
const WCHAR **pSecureBaseUrl) const WCHAR **pSecureBaseUrl)
{ {
@ -2256,7 +2267,7 @@ static HRESULT WINAPI saxxmlreader_getSecureBaseURL(
} }
static HRESULT WINAPI saxxmlreader_putSecureBaseURL( static HRESULT WINAPI saxxmlreader_put_secureBaseURL(
IVBSAXXMLReader* iface, IVBSAXXMLReader* iface,
const WCHAR *secureBaseUrl) const WCHAR *secureBaseUrl)
{ {
@ -2295,18 +2306,18 @@ static const struct IVBSAXXMLReaderVtbl saxreader_vtbl =
saxxmlreader_putFeature, saxxmlreader_putFeature,
saxxmlreader_getProperty, saxxmlreader_getProperty,
saxxmlreader_putProperty, saxxmlreader_putProperty,
saxxmlreader_getEntityResolver, saxxmlreader_get_entityResolver,
saxxmlreader_putEntityResolver, saxxmlreader_put_entityResolver,
saxxmlreader_getContentHandler, saxxmlreader_get_contentHandler,
saxxmlreader_putContentHandler, saxxmlreader_put_contentHandler,
saxxmlreader_getDTDHandler, saxxmlreader_get_dtdHandler,
saxxmlreader_putDTDHandler, saxxmlreader_put_dtdHandler,
saxxmlreader_getErrorHandler, saxxmlreader_get_errorHandler,
saxxmlreader_putErrorHandler, saxxmlreader_put_errorHandler,
saxxmlreader_getBaseURL, saxxmlreader_get_baseURL,
saxxmlreader_putBaseURL, saxxmlreader_put_baseURL,
saxxmlreader_getSecureBaseURL, saxxmlreader_get_secureBaseURL,
saxxmlreader_putSecureBaseURL, saxxmlreader_put_secureBaseURL,
saxxmlreader_parse, saxxmlreader_parse,
saxxmlreader_parseURL saxxmlreader_parseURL
}; };
@ -2445,7 +2456,7 @@ static HRESULT WINAPI isaxxmlreader_getBaseURL(
const WCHAR **pBaseUrl) const WCHAR **pBaseUrl)
{ {
saxreader *This = impl_from_ISAXXMLReader( iface ); saxreader *This = impl_from_ISAXXMLReader( iface );
return IVBSAXXMLReader_get_getBaseURL( return IVBSAXXMLReader_get_baseURL(
(IVBSAXXMLReader*)&This->lpVBSAXXMLReaderVtbl, (IVBSAXXMLReader*)&This->lpVBSAXXMLReaderVtbl,
pBaseUrl); pBaseUrl);
} }
@ -2455,7 +2466,7 @@ static HRESULT WINAPI isaxxmlreader_putBaseURL(
const WCHAR *pBaseUrl) const WCHAR *pBaseUrl)
{ {
saxreader *This = impl_from_ISAXXMLReader( iface ); saxreader *This = impl_from_ISAXXMLReader( iface );
return IVBSAXXMLReader_put_putBaseURL( return IVBSAXXMLReader_put_baseURL(
(IVBSAXXMLReader*)&This->lpVBSAXXMLReaderVtbl, (IVBSAXXMLReader*)&This->lpVBSAXXMLReaderVtbl,
pBaseUrl); pBaseUrl);
} }
@ -2465,7 +2476,7 @@ static HRESULT WINAPI isaxxmlreader_getSecureBaseURL(
const WCHAR **pSecureBaseUrl) const WCHAR **pSecureBaseUrl)
{ {
saxreader *This = impl_from_ISAXXMLReader( iface ); saxreader *This = impl_from_ISAXXMLReader( iface );
return IVBSAXXMLReader_get_getSecureBaseURL( return IVBSAXXMLReader_get_secureBaseURL(
(IVBSAXXMLReader*)&This->lpVBSAXXMLReaderVtbl, (IVBSAXXMLReader*)&This->lpVBSAXXMLReaderVtbl,
pSecureBaseUrl); pSecureBaseUrl);
} }
@ -2475,7 +2486,7 @@ static HRESULT WINAPI isaxxmlreader_putSecureBaseURL(
const WCHAR *secureBaseUrl) const WCHAR *secureBaseUrl)
{ {
saxreader *This = impl_from_ISAXXMLReader( iface ); saxreader *This = impl_from_ISAXXMLReader( iface );
return IVBSAXXMLReader_put_putSecureBaseURL( return IVBSAXXMLReader_put_secureBaseURL(
(IVBSAXXMLReader*)&This->lpVBSAXXMLReaderVtbl, (IVBSAXXMLReader*)&This->lpVBSAXXMLReaderVtbl,
secureBaseUrl); secureBaseUrl);
} }

View file

@ -1736,40 +1736,40 @@ interface IVBSAXXMLReader : IDispatch
HRESULT putProperty( [in] const WCHAR * pProp, [in] VARIANT value); HRESULT putProperty( [in] const WCHAR * pProp, [in] VARIANT value);
[propget, id(DISPID_SAX_XMLREADER_ENTITYRESOLVER)] [propget, id(DISPID_SAX_XMLREADER_ENTITYRESOLVER)]
HRESULT getEntityResolver( HRESULT entityResolver(
[out, retval] IVBSAXEntityResolver ** ppEntityResolver); [out, retval] IVBSAXEntityResolver ** ppEntityResolver);
[propputref, id(DISPID_SAX_XMLREADER_ENTITYRESOLVER)] [propputref, id(DISPID_SAX_XMLREADER_ENTITYRESOLVER)]
HRESULT putEntityResolver( [in] IVBSAXEntityResolver * pEntityResolver); HRESULT entityResolver( [in] IVBSAXEntityResolver * pEntityResolver);
[propget, id(DISPID_SAX_XMLREADER_CONTENTHANDLER)] [propget, id(DISPID_SAX_XMLREADER_CONTENTHANDLER)]
HRESULT getContentHandler( HRESULT contentHandler(
[out, retval] IVBSAXContentHandler ** pContentHandler); [out, retval] IVBSAXContentHandler ** pContentHandler);
[propputref, id(DISPID_SAX_XMLREADER_CONTENTHANDLER)] [propputref, id(DISPID_SAX_XMLREADER_CONTENTHANDLER)]
HRESULT putContentHandler([in] IVBSAXContentHandler * contentHandler); HRESULT contentHandler([in] IVBSAXContentHandler * contentHandler);
[propget, id(DISPID_SAX_XMLREADER_DTDHANDLER)] [propget, id(DISPID_SAX_XMLREADER_DTDHANDLER)]
HRESULT getDTDHandler([out, retval] IVBSAXDTDHandler ** pDTDHandler); HRESULT dtdHandler([out, retval] IVBSAXDTDHandler ** pDTDHandler);
[propputref, id(DISPID_SAX_XMLREADER_DTDHANDLER)] [propputref, id(DISPID_SAX_XMLREADER_DTDHANDLER)]
HRESULT putDTDHandler([in] IVBSAXDTDHandler * pDTDHandler); HRESULT dtdHandler([in] IVBSAXDTDHandler * pDTDHandler);
[propget, id(DISPID_SAX_XMLREADER_ERRORHANDLER)] [propget, id(DISPID_SAX_XMLREADER_ERRORHANDLER)]
HRESULT getErrorHandler([out, retval] IVBSAXErrorHandler ** pErrorHandler); HRESULT errorHandler([out, retval] IVBSAXErrorHandler ** pErrorHandler);
[propputref, id(DISPID_SAX_XMLREADER_ERRORHANDLER)] [propputref, id(DISPID_SAX_XMLREADER_ERRORHANDLER)]
HRESULT putErrorHandler([in] IVBSAXErrorHandler * errorHandler); HRESULT errorHandler([in] IVBSAXErrorHandler * errorHandler);
[propget, id(DISPID_SAX_XMLREADER_BASEURL)] [propget, id(DISPID_SAX_XMLREADER_BASEURL)]
HRESULT getBaseURL([out, retval] const WCHAR ** pBaseUrl); HRESULT baseURL([out, retval] const WCHAR ** pBaseUrl);
[propput, id(DISPID_SAX_XMLREADER_BASEURL)] [propput, id(DISPID_SAX_XMLREADER_BASEURL)]
HRESULT putBaseURL([in] const WCHAR * pBaseUrl); HRESULT baseURL([in] const WCHAR * pBaseUrl);
[propget, id(DISPID_SAX_XMLREADER_SECUREBASEURL)] [propget, id(DISPID_SAX_XMLREADER_SECUREBASEURL)]
HRESULT getSecureBaseURL([out, retval] const WCHAR ** pSecureBaseUrl); HRESULT secureBaseURL([out, retval] const WCHAR ** pSecureBaseUrl);
[propput, id(DISPID_SAX_XMLREADER_SECUREBASEURL)] [propput, id(DISPID_SAX_XMLREADER_SECUREBASEURL)]
HRESULT putSecureBaseURL([in] const WCHAR * secureBaseUrl); HRESULT secureBaseURL([in] const WCHAR * secureBaseUrl);
[propget, id(DISPID_SAX_XMLREADER_PARSE)] [id(DISPID_SAX_XMLREADER_PARSE)]
HRESULT parse( [in] VARIANT varInput); HRESULT parse( [in] VARIANT varInput);
[propput, id(DISPID_SAX_XMLREADER_PARSE)] [id(DISPID_SAX_XMLREADER_PARSEURL)]
HRESULT parseURL([in] const WCHAR * url); HRESULT parseURL([in] const WCHAR * url);
} }