diff --git a/reactos/dll/win32/advapi32/service/scm.c b/reactos/dll/win32/advapi32/service/scm.c index a47c620a89d..2d3e4f84eb1 100644 --- a/reactos/dll/win32/advapi32/service/scm.c +++ b/reactos/dll/win32/advapi32/service/scm.c @@ -2124,6 +2124,29 @@ QueryServiceObjectSecurity(SC_HANDLE hService, DWORD cbBufSize, 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; TRACE("QueryServiceObjectSecurity(%p, %lu, %p)\n", @@ -2155,6 +2178,7 @@ QueryServiceObjectSecurity(SC_HANDLE hService, } return TRUE; +#endif } /********************************************************************** @@ -2167,6 +2191,9 @@ SetServiceObjectSecurity(SC_HANDLE hService, SECURITY_INFORMATION dwSecurityInformation, PSECURITY_DESCRIPTOR lpSecurityDescriptor) { + FIXME("%p %d %p\n", hService, dwSecurityInformation, lpSecurityDescriptor); + return TRUE; +#if 0 PSECURITY_DESCRIPTOR SelfRelativeSD = NULL; ULONG Length; NTSTATUS Status; @@ -2226,6 +2253,7 @@ SetServiceObjectSecurity(SC_HANDLE hService, } return TRUE; +#endif } diff --git a/reactos/dll/win32/msxml3/cdata.c b/reactos/dll/win32/msxml3/cdata.c index 06d8bb1cb35..8cf39407b36 100644 --- a/reactos/dll/win32/msxml3/cdata.c +++ b/reactos/dll/win32/msxml3/cdata.c @@ -59,6 +59,7 @@ static HRESULT WINAPI domcdata_QueryInterface( TRACE("%p %s %p\n", This, debugstr_guid(riid), ppvObject); if ( IsEqualGUID( riid, &IID_IXMLDOMCDATASection ) || + IsEqualGUID( riid, &IID_IXMLDOMCharacterData) || IsEqualGUID( riid, &IID_IDispatch ) || IsEqualGUID( riid, &IID_IUnknown ) ) { diff --git a/reactos/dll/win32/msxml3/comment.c b/reactos/dll/win32/msxml3/comment.c index 9a45be601e9..1870b3bcd93 100644 --- a/reactos/dll/win32/msxml3/comment.c +++ b/reactos/dll/win32/msxml3/comment.c @@ -59,6 +59,7 @@ static HRESULT WINAPI domcomment_QueryInterface( TRACE("%p %s %p\n", This, debugstr_guid(riid), ppvObject); if ( IsEqualGUID( riid, &IID_IXMLDOMComment ) || + IsEqualGUID( riid, &IID_IXMLDOMCharacterData) || IsEqualGUID( riid, &IID_IDispatch ) || IsEqualGUID( riid, &IID_IUnknown ) ) { diff --git a/reactos/dll/win32/msxml3/queryresult.c b/reactos/dll/win32/msxml3/queryresult.c index f30172da3d2..56c1a537674 100644 --- a/reactos/dll/win32/msxml3/queryresult.c +++ b/reactos/dll/win32/msxml3/queryresult.c @@ -65,6 +65,8 @@ static inline queryresult *impl_from_IXMLDOMNodeList( IXMLDOMNodeList *iface ) return (queryresult *)((char*)iface - FIELD_OFFSET(queryresult, lpVtbl)); } +#define XMLQUERYRES(x) ((IXMLDOMNodeList*)&(x)->lpVtbl) + static HRESULT WINAPI queryresult_QueryInterface( IXMLDOMNodeList *iface, 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 ); - if(flags != DISPATCH_PROPERTYGET) { - FIXME("flags %x\n", flags); - return E_NOTIMPL; - } + TRACE("(%p)->(%x %x %x %p %p %p)\n", This, id, lcid, flags, params, res, ei); 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; } diff --git a/reactos/dll/win32/msxml3/saxreader.c b/reactos/dll/win32/msxml3/saxreader.c index ef62c9f7840..6af9201f8d1 100644 --- a/reactos/dll/win32/msxml3/saxreader.c +++ b/reactos/dll/win32/msxml3/saxreader.c @@ -1680,6 +1680,57 @@ static HRESULT internal_parseBuffer(saxreader *This, const char *buffer, int siz 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( saxreader *This, void *pEntityResolver, @@ -1867,47 +1918,7 @@ static HRESULT WINAPI internal_parse( if(stream || IUnknown_QueryInterface(V_UNKNOWN(&varInput), &IID_IStream, (void**)&stream) == S_OK) { - STATSTG dataInfo; - 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); + hr = internal_parseStream(This, stream, vbInterface); IStream_Release(stream); break; } @@ -2161,7 +2172,7 @@ static HRESULT WINAPI saxxmlreader_putProperty( return E_NOTIMPL; } -static HRESULT WINAPI saxxmlreader_getEntityResolver( +static HRESULT WINAPI saxxmlreader_get_entityResolver( IVBSAXXMLReader* iface, IVBSAXEntityResolver **pEntityResolver) { @@ -2169,7 +2180,7 @@ static HRESULT WINAPI saxxmlreader_getEntityResolver( return internal_getEntityResolver(This, pEntityResolver, TRUE); } -static HRESULT WINAPI saxxmlreader_putEntityResolver( +static HRESULT WINAPI saxxmlreader_put_entityResolver( IVBSAXXMLReader* iface, IVBSAXEntityResolver *pEntityResolver) { @@ -2177,7 +2188,7 @@ static HRESULT WINAPI saxxmlreader_putEntityResolver( return internal_putEntityResolver(This, pEntityResolver, TRUE); } -static HRESULT WINAPI saxxmlreader_getContentHandler( +static HRESULT WINAPI saxxmlreader_get_contentHandler( IVBSAXXMLReader* iface, IVBSAXContentHandler **ppContentHandler) { @@ -2185,7 +2196,7 @@ static HRESULT WINAPI saxxmlreader_getContentHandler( return internal_getContentHandler(This, ppContentHandler, TRUE); } -static HRESULT WINAPI saxxmlreader_putContentHandler( +static HRESULT WINAPI saxxmlreader_put_contentHandler( IVBSAXXMLReader* iface, IVBSAXContentHandler *contentHandler) { @@ -2193,7 +2204,7 @@ static HRESULT WINAPI saxxmlreader_putContentHandler( return internal_putContentHandler(This, contentHandler, TRUE); } -static HRESULT WINAPI saxxmlreader_getDTDHandler( +static HRESULT WINAPI saxxmlreader_get_dtdHandler( IVBSAXXMLReader* iface, IVBSAXDTDHandler **pDTDHandler) { @@ -2201,7 +2212,7 @@ static HRESULT WINAPI saxxmlreader_getDTDHandler( return internal_getDTDHandler(This, pDTDHandler, TRUE); } -static HRESULT WINAPI saxxmlreader_putDTDHandler( +static HRESULT WINAPI saxxmlreader_put_dtdHandler( IVBSAXXMLReader* iface, IVBSAXDTDHandler *pDTDHandler) { @@ -2209,7 +2220,7 @@ static HRESULT WINAPI saxxmlreader_putDTDHandler( return internal_putDTDHandler(This, pDTDHandler, TRUE); } -static HRESULT WINAPI saxxmlreader_getErrorHandler( +static HRESULT WINAPI saxxmlreader_get_errorHandler( IVBSAXXMLReader* iface, IVBSAXErrorHandler **pErrorHandler) { @@ -2217,7 +2228,7 @@ static HRESULT WINAPI saxxmlreader_getErrorHandler( return internal_getErrorHandler(This, pErrorHandler, TRUE); } -static HRESULT WINAPI saxxmlreader_putErrorHandler( +static HRESULT WINAPI saxxmlreader_put_errorHandler( IVBSAXXMLReader* iface, IVBSAXErrorHandler *errorHandler) { @@ -2225,7 +2236,7 @@ static HRESULT WINAPI saxxmlreader_putErrorHandler( return internal_putErrorHandler(This, errorHandler, TRUE); } -static HRESULT WINAPI saxxmlreader_getBaseURL( +static HRESULT WINAPI saxxmlreader_get_baseURL( IVBSAXXMLReader* iface, const WCHAR **pBaseUrl) { @@ -2235,7 +2246,7 @@ static HRESULT WINAPI saxxmlreader_getBaseURL( return E_NOTIMPL; } -static HRESULT WINAPI saxxmlreader_putBaseURL( +static HRESULT WINAPI saxxmlreader_put_baseURL( IVBSAXXMLReader* iface, const WCHAR *pBaseUrl) { @@ -2245,7 +2256,7 @@ static HRESULT WINAPI saxxmlreader_putBaseURL( return E_NOTIMPL; } -static HRESULT WINAPI saxxmlreader_getSecureBaseURL( +static HRESULT WINAPI saxxmlreader_get_secureBaseURL( IVBSAXXMLReader* iface, 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, const WCHAR *secureBaseUrl) { @@ -2295,18 +2306,18 @@ static const struct IVBSAXXMLReaderVtbl saxreader_vtbl = saxxmlreader_putFeature, saxxmlreader_getProperty, saxxmlreader_putProperty, - saxxmlreader_getEntityResolver, - saxxmlreader_putEntityResolver, - saxxmlreader_getContentHandler, - saxxmlreader_putContentHandler, - saxxmlreader_getDTDHandler, - saxxmlreader_putDTDHandler, - saxxmlreader_getErrorHandler, - saxxmlreader_putErrorHandler, - saxxmlreader_getBaseURL, - saxxmlreader_putBaseURL, - saxxmlreader_getSecureBaseURL, - saxxmlreader_putSecureBaseURL, + saxxmlreader_get_entityResolver, + saxxmlreader_put_entityResolver, + saxxmlreader_get_contentHandler, + saxxmlreader_put_contentHandler, + saxxmlreader_get_dtdHandler, + saxxmlreader_put_dtdHandler, + saxxmlreader_get_errorHandler, + saxxmlreader_put_errorHandler, + saxxmlreader_get_baseURL, + saxxmlreader_put_baseURL, + saxxmlreader_get_secureBaseURL, + saxxmlreader_put_secureBaseURL, saxxmlreader_parse, saxxmlreader_parseURL }; @@ -2445,7 +2456,7 @@ static HRESULT WINAPI isaxxmlreader_getBaseURL( const WCHAR **pBaseUrl) { saxreader *This = impl_from_ISAXXMLReader( iface ); - return IVBSAXXMLReader_get_getBaseURL( + return IVBSAXXMLReader_get_baseURL( (IVBSAXXMLReader*)&This->lpVBSAXXMLReaderVtbl, pBaseUrl); } @@ -2455,7 +2466,7 @@ static HRESULT WINAPI isaxxmlreader_putBaseURL( const WCHAR *pBaseUrl) { saxreader *This = impl_from_ISAXXMLReader( iface ); - return IVBSAXXMLReader_put_putBaseURL( + return IVBSAXXMLReader_put_baseURL( (IVBSAXXMLReader*)&This->lpVBSAXXMLReaderVtbl, pBaseUrl); } @@ -2465,7 +2476,7 @@ static HRESULT WINAPI isaxxmlreader_getSecureBaseURL( const WCHAR **pSecureBaseUrl) { saxreader *This = impl_from_ISAXXMLReader( iface ); - return IVBSAXXMLReader_get_getSecureBaseURL( + return IVBSAXXMLReader_get_secureBaseURL( (IVBSAXXMLReader*)&This->lpVBSAXXMLReaderVtbl, pSecureBaseUrl); } @@ -2475,7 +2486,7 @@ static HRESULT WINAPI isaxxmlreader_putSecureBaseURL( const WCHAR *secureBaseUrl) { saxreader *This = impl_from_ISAXXMLReader( iface ); - return IVBSAXXMLReader_put_putSecureBaseURL( + return IVBSAXXMLReader_put_secureBaseURL( (IVBSAXXMLReader*)&This->lpVBSAXXMLReaderVtbl, secureBaseUrl); } diff --git a/reactos/include/psdk/msxml2.idl b/reactos/include/psdk/msxml2.idl index 112a5c4b3b6..bcde64665ff 100644 --- a/reactos/include/psdk/msxml2.idl +++ b/reactos/include/psdk/msxml2.idl @@ -1736,40 +1736,40 @@ interface IVBSAXXMLReader : IDispatch HRESULT putProperty( [in] const WCHAR * pProp, [in] VARIANT value); [propget, id(DISPID_SAX_XMLREADER_ENTITYRESOLVER)] - HRESULT getEntityResolver( + HRESULT entityResolver( [out, retval] IVBSAXEntityResolver ** ppEntityResolver); [propputref, id(DISPID_SAX_XMLREADER_ENTITYRESOLVER)] - HRESULT putEntityResolver( [in] IVBSAXEntityResolver * pEntityResolver); + HRESULT entityResolver( [in] IVBSAXEntityResolver * pEntityResolver); [propget, id(DISPID_SAX_XMLREADER_CONTENTHANDLER)] - HRESULT getContentHandler( + HRESULT contentHandler( [out, retval] IVBSAXContentHandler ** pContentHandler); [propputref, id(DISPID_SAX_XMLREADER_CONTENTHANDLER)] - HRESULT putContentHandler([in] IVBSAXContentHandler * contentHandler); + HRESULT contentHandler([in] IVBSAXContentHandler * contentHandler); [propget, id(DISPID_SAX_XMLREADER_DTDHANDLER)] - HRESULT getDTDHandler([out, retval] IVBSAXDTDHandler ** pDTDHandler); + HRESULT dtdHandler([out, retval] IVBSAXDTDHandler ** pDTDHandler); [propputref, id(DISPID_SAX_XMLREADER_DTDHANDLER)] - HRESULT putDTDHandler([in] IVBSAXDTDHandler * pDTDHandler); + HRESULT dtdHandler([in] IVBSAXDTDHandler * pDTDHandler); [propget, id(DISPID_SAX_XMLREADER_ERRORHANDLER)] - HRESULT getErrorHandler([out, retval] IVBSAXErrorHandler ** pErrorHandler); + HRESULT errorHandler([out, retval] IVBSAXErrorHandler ** pErrorHandler); [propputref, id(DISPID_SAX_XMLREADER_ERRORHANDLER)] - HRESULT putErrorHandler([in] IVBSAXErrorHandler * errorHandler); + HRESULT errorHandler([in] IVBSAXErrorHandler * errorHandler); [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)] - HRESULT putBaseURL([in] const WCHAR * pBaseUrl); + HRESULT baseURL([in] const WCHAR * pBaseUrl); [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)] - 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); - [propput, id(DISPID_SAX_XMLREADER_PARSE)] + [id(DISPID_SAX_XMLREADER_PARSEURL)] HRESULT parseURL([in] const WCHAR * url); }