Implmenet IDxDiagContainerImpl_GetNumberOfProps, IDxDiagContainerImpl_EnumPropNames, IDxDiagContainerImpl_GetProp working fine in windows but in reactos we are missing some regvalues (alot). This change should be commit to wine. Modified: trunk/reactos/lib/ddraw/ddraw.xml Modified: trunk/reactos/lib/devenum/devenum.xml Modified: trunk/reactos/lib/dplay/dplay.xml Modified: trunk/reactos/lib/dxdiagn/container.c Modified: trunk/reactos/lib/dxdiagn/dxdiag_private.h _____
Modified: trunk/reactos/lib/ddraw/ddraw.xml --- trunk/reactos/lib/ddraw/ddraw.xml 2005-12-03 19:40:52 UTC (rev 19843) +++ trunk/reactos/lib/ddraw/ddraw.xml 2005-12-03 20:53:23 UTC (rev 19844) @@ -1,5 +1,6 @@
<module name="ddraw" type="win32dll" installbase="system32" installname="ddraw.dll"> - <importlibrary definition="ddraw.def" /> + <autoregister infsection="OleControlDlls" type="DllRegisterServer" /> + <importlibrary definition="ddraw.def" /> <include base="ddraw">.</include> <define name="UNICODE" /> <define name="__USE_W32API" /> _____
Modified: trunk/reactos/lib/devenum/devenum.xml --- trunk/reactos/lib/devenum/devenum.xml 2005-12-03 19:40:52 UTC (rev 19843) +++ trunk/reactos/lib/devenum/devenum.xml 2005-12-03 20:53:23 UTC (rev 19844) @@ -1,4 +1,5 @@
<module name="devenum" type="win32dll" baseaddress="${BASEADDRESS_DEVENUM}" installbase="system32" installname="devenum.dll" allowwarnings="true"> + <autoregister infsection="OleControlDlls" type="DllRegisterServer" /> <importlibrary definition="devenum.spec.def" /> <include base="devenum">.</include> <include base="ReactOS">include/wine</include> _____
Modified: trunk/reactos/lib/dplay/dplay.xml --- trunk/reactos/lib/dplay/dplay.xml 2005-12-03 19:40:52 UTC (rev 19843) +++ trunk/reactos/lib/dplay/dplay.xml 2005-12-03 20:53:23 UTC (rev 19844) @@ -1,4 +1,4 @@
-<module name="dplay" type="win32dll" baseaddress="${BASEADDRESS_DPLAY}" installbase="system32" installname="dplay.dll"> +<module name="dplay" type="win32dll" baseaddress="${BASEADDRESS_DPLAY}" installbase="system32" installname="dplay.dll"> <importlibrary definition="dplay.spec.def" /> <include base="dinput8">.</include> <include base="ReactOS">include/wine</include> _____
Modified: trunk/reactos/lib/dxdiagn/container.c --- trunk/reactos/lib/dxdiagn/container.c 2005-12-03 19:40:52 UTC (rev 19843) +++ trunk/reactos/lib/dxdiagn/container.c 2005-12-03 20:53:23 UTC (rev 19844) @@ -20,9 +20,9 @@
*/
#include "config.h" -#include "dxdiag_private.h" #include "wine/debug.h" #include "wine/unicode.h" +#include "dxdiag_private.h"
WINE_DEFAULT_DEBUG_CHANNEL(dxdiag);
@@ -120,21 +120,73 @@ return E_INVALIDARG; }
-HRESULT WINAPI IDxDiagContainerImpl_GetNumberOfProps(PDXDIAGCONTAINER iface, DWORD* pdwCount) { - /* IDxDiagContainerImpl *This = (IDxDiagContainerImpl *)iface; */ - FIXME("(%p, %p): stub\n", iface, pdwCount); +HRESULT WINAPI IDxDiagContainerImpl_GetNumberOfProps(PDXDIAGCONTAINER iface, DWORD* pdwCount) +{ + IDxDiagContainerImpl *This = (IDxDiagContainerImpl *)iface; + + + *pdwCount = This->nSubpProperty; + + TRACE("(%p)->(%ld)\n", iface, *pdwCount); + return S_OK; }
HRESULT WINAPI IDxDiagContainerImpl_EnumPropNames(PDXDIAGCONTAINER iface, DWORD dwIndex, LPWSTR pwszPropName, DWORD cchPropName) { - /* IDxDiagContainerImpl *This = (IDxDiagContainerImpl *)iface; */ - FIXME("(%p, %lu, %s, %lu): stub\n", iface, dwIndex, debugstr_w(pwszPropName), cchPropName); - return S_OK; + + IDxDiagContainerImpl *This = (IDxDiagContainerImpl *)iface; + + if (This->pProperty == NULL) + { + + This->pProperty = (Contain_Property *)HeapAlloc(GetProcessHeap(), + HEAP_ZERO_MEMORY, + sizeof(Contain_Property) *(dwIndex+1)); + + This->nSubpProperty = dwIndex+1; + } + else + { + if (dwIndex>=This->nSubpProperty) + { + This->pProperty = (Contain_Property *) HeapReAlloc(GetProcessHeap(), + HEAP_ZERO_MEMORY, This->pProperty, + sizeof(Contain_Property) *(dwIndex+1)); + This->nSubpProperty = dwIndex+1; + } + + } + + lstrcpynW(pwszPropName, This->pProperty[dwIndex].pwszPropName, cchPropName); + + TRACE("(%p)->(%s)\n", iface, debugstr_w(This->pProperty[dwIndex].pwszPropName)); + return S_OK; }
-HRESULT WINAPI IDxDiagContainerImpl_GetProp(PDXDIAGCONTAINER iface, LPCWSTR pwszPropName, VARIANT* pvarProp) { - /* IDxDiagContainerImpl *This = (IDxDiagContainerImpl *)iface; */ - FIXME("(%p, %s, %p): stub\n", iface, debugstr_w(pwszPropName), pvarProp); +HRESULT WINAPI IDxDiagContainerImpl_GetProp(PDXDIAGCONTAINER iface, LPCWSTR pwszPropName, VARIANT* pvarProp) +{ + IDxDiagContainerImpl *This = (IDxDiagContainerImpl *)iface; + Contain_Property *propert = This->pProperty; + TRACE("(%p)->(%s, %p)\n", iface, debugstr_w(pwszPropName), pvarProp); + + while (propert->pwszPropName && lstrcmpW(propert->pwszPropName, pwszPropName)) + { + propert += sizeof(Contain_Property); + } + + if (!propert->pwszPropName) + return E_INVALIDARG; + + /* FIXME + if (property->pvarProp == VT_EMPTY) + return E_INVALIDARG; + + if (property->pvarProp.vt == VT_ERROR) + return E_INVALIDARG; + */ + + memcpy(pvarProp,&propert->pvarProp, sizeof(VARIANT)); + return S_OK; }
_____
Modified: trunk/reactos/lib/dxdiagn/dxdiag_private.h --- trunk/reactos/lib/dxdiagn/dxdiag_private.h 2005-12-03 19:40:52 UTC (rev 19843) +++ trunk/reactos/lib/dxdiagn/dxdiag_private.h 2005-12-03 20:53:23 UTC (rev 19844) @@ -48,6 +48,12 @@
/*********************************************************************** ****** * IDxDiagProvider implementation structure */ +typedef struct Contain_Property +{ + WCHAR *pwszPropName; + VARIANT pvarProp; +} Contain_Property; + struct IDxDiagProviderImpl { /* IUnknown fields */ IDxDiagProviderVtbl *lpVtbl; @@ -92,6 +98,8 @@ /* IDxDiagContainer fields */ IDxDiagContainerImpl_SubContainer* subContainers; DWORD nSubContainers; + Contain_Property* pProperty; + DWORD nSubpProperty; };
/* IUnknown: */